1.自定义Scroller
public class FixedSpeedScroller extends Scroller {
private int mDuration = 1500;
public FixedSpeedScroller(Context context) {
super(context);
}
public FixedSpeedScroller(Context context, Interpolator interpolator) {
super(context, interpolator);
}
@Override
public void startScroll(int startX, int startY, int dx, int dy, int duration) {
// Ignore received duration, use fixed one instead
super.startScroll(startX, startY, dx, dy, mDuration);
}
@Override
public void startScroll(int startX, int startY, int dx, int dy) {
// Ignore received duration, use fixed one instead
super.startScroll(startX, startY, dx, dy, mDuration);
}
public void setmDuration(int time) {
mDuration = time;
}
public int getmDuration() {
return mDuration;
}
}
2.使用,这里我自定义title,将文字改为图片
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@BindView(R.id.tab_layout)
TabLayout mTabLayout;
@BindView(R.id.view_pager)
ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
MyPageAdapter adapter = new MyPageAdapter(getSupportFragmentManager());
mViewPager.setAdapter(adapter);
mTabLayout.setupWithViewPager(mViewPager);
//ViewPager的setCurrentItem 滑动速度是写死地
try {
Field field = ViewPager.class.getDeclaredField("mScroller");
field.setAccessible(true);
FixedSpeedScroller scroller = new FixedSpeedScroller(mViewPager.getContext(),
new AccelerateInterpolator());
field.set(mViewPager, scroller);
scroller.setmDuration(1000);
} catch (Exception e) {
Log.d(TAG, "onCreate " + e);
}
//设置title的自定义view
mTabLayout.getTabAt(0).setCustomView(getTabView(0));
mTabLayout.getTabAt(1).setCustomView(getTabView(1));
mTabLayout.getTabAt(2).setCustomView(getTabView(2));
mTabLayout.setOnTabSelectedListener(mOnPageChangeListener);
}
private View getTabView(int i) {
int resId = 0;
switch (i) {
case 0:
resId = R.mipmap.widget_bar_news_nor;
break;
case 1:
resId = R.mipmap.widget_bar_explore_nor;
break;
case 2:
resId = R.mipmap.widget_bar_me_nor;
break;
}
ImageView imageView = new ImageView(this);
imageView.setImageResource(resId);
return imageView;
}