`
cwh643
  • 浏览: 126718 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

android上小圆点page控件

阅读更多
public class PointPageView extends View {
	
	private int mPageSize;
	private int mPageIndex;
	private int mPointSize;
	private int mPointSpan;
	private int mSelectPointSize;
	private int mStep;
	private int mDisplaySize;
	private int mDisplayIndex;
	private Paint paint;
	
	private void init() {
		mPointSize = 3;
		mSelectPointSize = mPointSize;
		mPointSpan = 3 * mPointSize;
		mStep = 1;
		paint = new Paint();
		paint.setAntiAlias(true);
		paint.setColor(Color.WHITE);
	}
	
	public PointPageView(Context context) {
		super(context, null);
		init();
	}
	/**
	 * Used to inflate the Workspace from XML.
	 */
	public PointPageView(Context context, AttributeSet attrs) {
		super(context, attrs);
		init();
	}
	
	public void setPageSize(int pageSize) {
		mPageSize = Math.max(pageSize, 0);
		mDisplaySize = (int)Math.ceil((double)mPageSize / mStep);
		invalidate();
	}
	
	public int getPageSize() {
		return mPageSize;
	}
	
	public void setPageIndex(int pageIndex) {
		mPageIndex = Math.min(Math.max(pageIndex, 0), mPageSize - 1);
		mDisplayIndex = (int)Math.floor((double)mPageIndex / mStep);
		invalidate();
	}
	
	public int getPageIndex() {
		return mPageIndex;
	}
	
	public void setColor(int color) {
		paint.setColor(color);
	}
	
	public void setPointSize(int size) {
		mPointSize = size;
	}
	
	public void setSelectPointSize(int size) {
		mSelectPointSize = size;
	}
	
	public void setPointSpan(int span) {
		mPointSpan = span;
	}
	
	public void setStep(int step) {
		mStep = step;
	}
	
	public int getStep() {
		return mStep;
	}
	
	@Override
	public void draw(Canvas canvas) {
		super.draw(canvas);
		drawAllPoint(canvas);
	}
	
	private void drawAllPoint(Canvas canvas) {
		canvas.save();
		
		final int paddingLeft = mPointSpan;
		final int width = getMeasuredWidth();
		final int height = getMeasuredHeight();
		
		int radius = mPointSize;
		int contentWidth = (radius + paddingLeft) * mPageSize;
		int beginX = (width - contentWidth) / 2;
		int beginY = height / 2;

		for (int i = 0; i < mDisplaySize; i++) {
			if (i == mDisplayIndex) {
				paint.setAlpha(255);
				radius = mSelectPointSize;
			} else {
				paint.setAlpha(128);
				radius = mPointSize;
			}
			canvas.drawCircle(beginX, beginY, radius, paint);
			beginX = beginX + radius + radius + paddingLeft;
		}
		
		canvas.restore();
	}
}
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics