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(); }}
详细解决方案
android下小圆点page控件
热度:96 发布时间:2016-05-01 19:21:03.0
相关解决方案
- 请问<jsp:include page="" flush="true"/> 不能解释执行的原因
- android 读取byte[]中的元素解决方案
- android 标题栏兑现方式
- android 中Activity向BroadcastReceiver发送数据,该怎么解决
- Android 4.0 为什么模拟器老是提示小弟我谷歌拼音输入法已停止
- android:getSharedPreferences() 这是哪个类的方法解决思路
- android 怎么判断一个程序是否联网
- android RadioButton如何设置默认选中
- android 怎么重新设置锚点
- android 图片对象获取的有关问题
- android 关于服务连接的疑义
- android 怎么实现对view的放大和缩小
- android ID,该如何处理
- 准备复习2-3个月,看java+android,请问有经验者,怎么看效果最好》
- android UI线程与AsyncTask的有关问题
- android(java) 中文乱码的有关问题
- Page.RegisterStartupScript的弹出有关问题
- 不能在 Page 回调中调用 Response.Redirect,该如何解决
- this.Page.ClientScript.RegisterClientScriptBlock有关问题
- If Not Page.IsPostBack 如若没有Page.IsPostBack
- Page.Title 发作换行和空格
- Page.ClientScript.RegisterStartupScript怎么向后台传递参数
- 编译器异常消息: ASPNET: 请确保此代码文件中定义的类与“inherits”特性匹配,并且该类扩展的基类(例如 Page 或 UserControl)是正
- ASPNET: 请确保此代码文件中定义的类与“inherits”属性匹配,并且该类扩展的基类(例如 Page 或 UserControl)是正确的。解决办法
- 问一个基础知识:<%@ Page %> 是什么意思解决方案
- 提示小弟我这个方法已过时(Page.RegisterStartupScript )
- Page.IsPostBack 是什么作用?解决方法
- EnableViewState,Page=false,TextBox=true,可以么?解决思路
- 讨论和寻求支持:在网页的任何位置插入分页样式<div style="page-break-after: always"></div>以便分页,就跟在word中插入分页符一样效果,详情见内,该怎么处理
- 这句怎么解释:Page.Controls.Add(new HtmlGenericControl("hr"))