Support Library 25.0.0
伴隨著Android 7.1(API 25)的的發(fā)布,一系列相關的開發(fā)工具與套件也一起更新了妖胀,包括Android Studio 2.2.2與Support Library 25.0.0媳危。其中AS的更新包括日常的bug修復與性能提升变勇,還有對7.1的支持。而Support包的更新如下:
Important changes
-
ContextCompat
的構造方法變?yōu)閜rotected -
ActivityCompat
的構造方法變?yōu)閜rotected -
ActivityCompat
的getReferer(Activity)
方法變?yōu)閟tatic - 刪除方法
android.support.design.widget.CoordinatorLayout.Behavior.isDirty(CoordinatorLayout, V)
- 刪除方法
android.support.v4.media.session.MediaSessionCompat.obtain(Context, Object)
- 刪除方法
android.support.v4.media.session.MediaSessionCompat.QueueItem.obtain(Object)
- 刪除方法
android.support.v7.widget.Space
,應當使用android.support.v4.widget.Space.
(作者注:在布局需要空白View時很高效)
New APIs
- 新增
android.support.design.widget.BottomNavigationView
類(更新的主角)蔓肯,實現(xiàn)了Material Design中的bottom navigation設計樣式,就是我們常見的底部tab欄
新增
android.support.v13.view.inputmethod
包振乏,其中的相關類實現(xiàn)了在API 13時引入的android.view.inputmethod.InputConnection
特性新增
android.v7.widget.RecyclerView.DividerItemDecoration
類蔗包,提供RecyclerView分割線的一種基礎實現(xiàn),目前只支持LinearLayoutManager
的橫向和縱向布局將API 24中引入的自定義Notification布局的相關類加入到兼容包中慧邮,即
DecoratedCustomViewStyle
和DecoratedMediaCustomViewStyle
功能預覽
作者第一時間嘗試了其中的部分新API调限,交互效果真的很棒舟陆,建議運行demo查看細節(jié)!下面大概說下使用方式:
首先在布局中引入BottomNavigationView
,
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/colorPrimary"
design:itemIconTint="@color/item_text_color"
design:itemTextColor="@color/item_text_color"
design:menu="@menu/menu_navigation"/>
可以看到使用了design的三個自定義attr耻矮,menu
是用來指定tab欄中的各個tab的秦躯,官方說tab數(shù)量應該介于3個到5個之間,所以這里以3個item為例淘钟,測試menu如下
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/item1"
android:checked="true"
android:icon="@drawable/ic_mail_outline_black_24dp"
android:title="Message"/>
<item
android:id="@+id/item2"
android:icon="@drawable/ic_call_black_24dp"
android:title="Call"/>
<item
android:id="@+id/item3"
android:icon="@drawable/ic_person_black_24dp"
android:title="Contact"/>
</menu>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#fff" android:state_checked="true"/>
<item android:color="#fff" android:state_pressed="true"/>
<item android:color="#ccc"/>
</selector>
itemIconTint
是為tab里的icon著色宦赠,這里使用了跟文字相同的顏色效果。代碼中就比較簡單了:
navigationView = (BottomNavigationView) findViewById(R.id.navigation);
navigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
return false;
}
});
而上方的應用列表則使用RecyclerView米母,并搭配了新的divider類:
mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview);
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
mAdapter = new AppInfoAdapter(this, getAppInfo(), R.layout.item_app_info);
mRecyclerView.setAdapter(mAdapter);
// New in recyclerview-25.0.0
mRecyclerView.addItemDecoration(new DividerItemDecoration(this, mLayoutManager.getOrientation()));
調用DividerItemDecoration
中的setDrawable(@NonNull Drawable drawable)
方法是可以替換divider樣式的勾扭。
結語
介紹就到這里了,示例demo的代碼在這里(github)铁瞒,歡迎大家下載體驗妙色。