主要实现是依靠ViewPager设置OnPageChangeListener监听。
mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
Log.d("onPageSelected", ""+arg0);
if(!mIsBeChoose)
mChooseBar.setCurrentPosition(arg0);
}
@Override
public void onPageScrolled(int position, float arg1, int positionOffsetPixels) {
// TODO Auto-generated method stub
Log.i("onPageScrolled", ""+position+" "+arg1+" "+positionOffsetPixels);
mSlideLayout.scrollTo((int) (-(position+arg1)*mWidthOfSlideBlock), 0);
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
if(arg0 == 0){
mIsBeChoose = false;
}
Log.e("onPageScrollStateChanged", ""+arg0);
}
});
关键是要理解onPageScrolled()函数的各个参数的含义:第一个参数position是当前屏幕显示的页中页号的最小值,然后第二个参数是页号最小的页占当前占屏幕的百分比。然后注意scrolleTo的原理,就可以写出调用的式子:mSlideLayout.scrollTo((int) (-(position+arg1)*mWidthOfSlideBlock), 0);