GradientTabStrip
ICON
繼承自BaseTabStrip,實(shí)現(xiàn)微信式漸變底部Tab效果,為ViewPager添加如PagerTitleStrip一樣的Tab,但支持更多自定義功能,并支持為T(mén)ab增加標(biāo)記點(diǎn)功能,并可以自定義標(biāo)記點(diǎn)各自的位置及顯示狀態(tài)以及背景等。
主要實(shí)現(xiàn)原理為:BaseTabStrip將底層的交互處理好了,具體實(shí)現(xiàn)只要將兩層Drawable不同alpha的疊加,通過(guò)偏移值計(jì)算文字的顏色rgb,繪制以及實(shí)現(xiàn)點(diǎn)擊action的xy判斷position。
預(yù)覽
Screenshots
要求
- minSdkVersion 9
- 保持跟其他官方支持庫(kù)版本一致(如:com.android.support:appcompat-v7)
鏈接
使用
- 基本布局
<am.widget.gradienttabstrip.GradientTabStrip
android:id="@+id/gts_gts_tabs"
android:layout_width="match_parent"
android:layout_height="64dp"
android:textColor="@color/color_gradienttabstrip_tab"
android:textSize="12sp"
app:gtsBackground="@drawable/bg_common_press"/>
- 基本代碼
GradientTabStrip tabStrip = (GradientTabStrip) findViewById(id);
GradientTabStrip.GradientTabAdapter adapter = new GradientTabStrip.GradientTabAdapter () {
@Override
public Drawable getNormalDrawable(int position, Context context) {
return null;
}
@Override
public Drawable getSelectedDrawable(int position, Context context) {
return null;
}
@Override
public boolean isTagEnable(int position) {
return false;
}
@Override
public String getTag(int position) {
return null;
}
};
tabStrip.bindViewPager(viewPager);
注意
- 不要使用ViewPage的setCurrentItem(int)方法,其不會(huì)通知到GradientTabStrip進(jìn)行刷新,使用GradientTabStrip的performClick(int)方法
- 布局時(shí),android:textColor指定的顏色可以使用選擇器,其中android:state_selected="true"狀態(tài)下的顏色會(huì)與普通狀態(tài)下的顏色進(jìn)行漸變
- GradientTabAdapter中進(jìn)行了改變GradientTabAdapter,需要手動(dòng)通知GradientTabStrip進(jìn)行刷新
- 不需要Tag小紅點(diǎn),可以使用SimpleGradientTabAdapter替代GradientTabAdapter
- 保持跟其他官方支持庫(kù)版本一致(如:com.android.support:appcompat-v7),否則可能出現(xiàn)錯(cuò)誤