实现上面的radiobutton和viewpager同步滚动太过复杂,请直接使用开源项目PagerSlidingTabStrip
共有6个的页面,导航栏用horizontalscrollview封装radiogroup。点击radiobutton跳转到对应的页面。滑动pager也可以让radiogroup一起滑动。
自定义进度条view,关联viewpager的onPageScolled()方法。onPageScolled中在调用setOffSet()。即可实现滑动条和页面同步滚动。

1public class StripView extends View { 2 3 4 private int mTabNum=6;//标题数目, 5 private int mCurrentNum;//当前所在标题 6 private float mWidth,mTabWidth,mOffSet; 7 private final Paint mPaint= new Paint(Paint.ANTI_ALIAS_FLAG); 8 public StripView(Context context, AttributeSet attrs) { 9 super(context, attrs); 10 } 11 public void setCurrentNum(int n) { 12 mCurrentNum = n; 13 mOffSet = 0; 14 } 15 public void setOffSet(int position,float offset){ 16 if(offset == 0) { 17 return; 18 } 19 mCurrentNum = position; 20 mOffSet=offset; 21 invalidate(); 22 } 23 @Override 24 protected void onDraw(Canvas canvas) { 25 super.onDraw(canvas); 26 mWidth = getWidth(); 27 mTabWidth = mWidth/6; 28 float left = (mCurrentNum + mOffSet) * mTabWidth; 29 30 31 final float top = getPaddingTop(); 32 final float right = left + mTabWidth; 33 final float bottom = getHeight() +getPaddingTop(); 34 mPaint.setColor(getResources().getColor(R.color.cyan)); 35 canvas.drawRect(left, top, right, bottom, mPaint); 36 37 38 } 39}