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;}@Overridepublic 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();}}