来自鸿洋某小项目
指示器代码
public class SimpleViewPagerIndicator extends LinearLayout {
private static final int COLOR_TEXT_NORMAL = 0xFF000000;
private static final int COLOR_INDICATOR_COLOR = Color.GREEN;
private String[] mTitles;
private int mTabCount; //标签数量
private int mIndicatorColor = COLOR_INDICATOR_COLOR; //指示器颜色
private float mTranslationX; //偏移量
private Paint mPaint = new Paint();
private int mTabWidth; //标签宽度
public SimpleViewPagerIndicator(Context context) {
this(context, null);
}
public SimpleViewPagerIndicator(Context context, AttributeSet attrs) {
super(context, attrs);
mPaint.setColor(mIndicatorColor);
mPaint.setStrokeWidth(9.0F);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
mTabWidth = w / mTabCount;
}
public void setTitles(String[] titles) {
mTitles = titles;
mTabCount = titles.length;
generateTitleView();
}
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
canvas.save();
canvas.translate(mTranslationX, getHeight() - 2);
canvas.drawLine(0, 0, mTabWidth, 0, mPaint);
canvas.restore();
}
//from-to
public void scroll(int position, float offset) {
mTranslationX = getWidth() / mTabCount * (position + offset);
invalidate();
}
private void generateTitleView() {
if (getChildCount() > 0)
this.removeAllViews();
int count = mTitles.length;
setWeightSum(count);
for (int i = 0; i < count; i++) {
TextView tv = new TextView(getContext());
LayoutParams lp = new LayoutParams(0,
LayoutParams.MATCH_PARENT);
lp.weight = 1;
tv.setGravity(Gravity.CENTER);
tv.setTextColor(COLOR_TEXT_NORMAL);
tv.setText(mTitles[i]);
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
tv.setLayoutParams(lp);
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
addView(tv);
}
}
}
滑动
mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
mIndicator.scroll(position, positionOffset);
}
//。。。略。。。
});
网友评论