您的位置:首页 > 其它

改变viewpager滑动速度

2017-03-26 19:26 549 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: