使用画笔(Paint)实现圆形动态进度条
2016-10-16 19:13
387 查看
实现效果:
![](https://img-blog.csdn.net/20161016185253356?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
最后在view中重写onDraw方法,进行圆形,以及数字文字的绘画
源代码下载
</pre><p></p><p>实现代码:</p><p><span style="white-space:pre"></span>创建两个画笔,一支使黑色的笔,一个是白色的笔</p><p></p><pre code_snippet_id="1931933" snippet_file_name="blog_20161016_2_6233623" name="code" class="html"></pre><pre name="code" class="html">// 首先实例化黑色画笔 paint_Balck = new Paint(); paint_Balck.setAntiAlias(true);// 消除锯齿 paint_Balck.setColor(blackColor);// 设置画笔颜色 paint_Balck.setStrokeWidth(tb * 0.2f);// 设置空心的边框 paint_Balck.setStyle(Style.STROKE);// 设置画笔风格,实心或空心 // 实例化白色画笔 paint_White = new Paint(); paint_White.setAntiAlias(true); paint_White.setColor(whiteColor); paint_White.setStrokeWidth(tb * 0.2f); paint_White.setStyle(Style.STROKE); paint_White.setTextAlign(Align.CENTER);// 画字体,的对齐方式:居中 paint_White.setTextSize(tb * 6.0f);// 白色画笔会画字体然后设置一个矩形区域,用来画圆
// 实例化RectF,画一个矩形区域,在矩形区域上画圆弧 rectf = new RectF(); rectf.set(tb * 0.5f, tb * 0.5f, tb * 20f, tb * 20f);然后/建立一个observer观察者,用来刷线页面
getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() { @Override public boolean onPreDraw() { new thread(); getViewTreeObserver().removeOnPreDrawListener(this); return false; } });线程里面进行进度的变化的控制及更新,以及数字文字变化的控制及更新
Thread.sleep(15); arc_y += 3.6f;// 满分为一百分,3.6*100为306度 score_text++;// 每次增加一 count++; postInvalidate();// postInvalidate()刷新界面
最后在view中重写onDraw方法,进行圆形,以及数字文字的绘画
// 在view中重写onDraw方法 public void onDraw(Canvas c) {// canvas画板,开始画圆 super.onDraw(c); // 画一个背景全圆 c.drawArc(rectf, -90, 360, false, paint_Balck); // 根据分数,画一个渐变的圆弧 c.drawArc(rectf, -90, arc_y, false, paint_White); // 根据分数,画一个渐变的分数字体 c.drawText("" + score_text, tb * 9.7f, tb * 11.0f, paint_White); }
源代码下载
相关文章推荐
- js写圆形动态进度条圆形指示器,动画怎么实现,进度条变色,radialIndicator.js的使用说明用法
- 自定义圆形进度条实现动态显示指定进度
- android自定义圆形进度条,实现动态画圆效果
- 使用css3实现圆形进度条
- Paint画笔的基本使用及自定义进度条
- 使用原生JavaScript的Canvas实现拖拽式图形绘制,支持画笔、线条、箭头、三角形、矩形、平行四边形、梯形以及多边形和圆形,不依赖任何库和插件,有演示demo
- Android中使用AsyncTask实现下载文件动态更新进度条功能
- Java初学者如何迈出AOP第一步--使用Java 动态代理实现AOP(转)
- 使用动态JavaScript实现多级菜单联动时不刷新页面的方法
- 使用动态滤镜来实现淡入效果
- 如何使用PB实现动态报表?
- 如何使用iframe实现calendar动态显示,
- 使用"函数递归"实现基于php和MySQL的动态树型菜单
- 使用反射实现根据名称动态创建窗体的几种方法。
- 使用JAVA中的动态代理实现数据库连接池
- 使用JAVA中的动态代理实现数据库连接池
- 使用Iptable实现动态防火墙
- 关于统计的一个sql问题,使用动态sql语句实现。
- 使用Java动态代理实现AOP
- 使用JavaScript实现动态改变控件大小