首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

【转】Android自定义控件兑现环形播放进度条

2012-07-29 
【转】Android自定义控件实现环形播放进度条原文地址:http://www.eoeandroid.com/code/2011/1206/254.html代

【转】Android自定义控件实现环形播放进度条

原文地址:http://www.eoeandroid.com/code/2011/1206/254.html

代码下载地址: http://www.eoe.cn/uploadfile/2011/1206/20111206024630395.zip

view source print?01<?xml version="1.0" encoding="utf-8"?>? 02<resources> 03?04????<declare-styleable name="RoundProgressBar">? 05????????<attr name="max" format="integer"/>??????? 06????????<attr name="fill" format="boolean"/>??????????????????????? <!-- 是否填充圆形区域 --> 07????????<attr name="Paint_Width" format="integer"/>??????????????? <!-- 画笔宽度,填充模式下无效,会被重置为0 --> 08????????<attr name="Paint_Color" format="integer"/>??????????????? <!-- 画笔颜色 --> 09????????<attr name="Show_Bottom" format="boolean"/>??????????????? <!-- 是否显示底色 --> 10????????<attr name="Inside_Interval" format="integer"/> <!-- 圆形区域向里缩进的距离 --> 11????</declare-styleable>? 12?????13</resources>

?

这样在布局文件中,就可以配置这些属性值了,相关定义注释已写的很清楚,具体的大家下代码跑一跑比对一下就知道了

由于绘图使用的是纯画笔绘制,那么在视觉上看起来会比较单调,其实可以通过对画笔设置渲染效果来达到一个炫丽的效果,有兴趣的童鞋可以试一下,Paint.setShader这个接口,本例无此实现,就不详细介绍了

控件中有两个接口是作动画相关的
? ? ? ? public synchronized void??startCartoom(int time)
? ? ? ? public synchronized void??stopCartoom()

比如你想播放一个10秒的录音,同时用进度条来表示播放进度,那么就可以调用 startCartoom(i10)来开启动画
其他的似乎没啥好说的了,代码就不贴上来了,源码工程里的注释也写很清楚了,大家下下来看看就明白了

至于为什么该类继承于TextView而不是View其实是为了在配置文件里指定背景图能够自适应大小,继承与View则需要自己去实现,其实也不难,重写OnMeasure方法,在该方法里调用setMeasuredDimension重新设置视图大小为背景图大小就可以了,怎么获取背景图就不用哥说了吧。
好吧,就这样吧,附上源码工程:

热点排行