Android自定义圆形渐变进度条
来源:互联网 发布:2017淘宝发货时间规定 编辑:程序博客网 时间:2024/05/18 03:23
作为一个自学入门android的人来说,刚接触自定义view时完全处于懵逼状态,不过还好,大神们已经铺好了路,尔等只需稍加钻研即可小有成就的,废话不多说了,先上效果图!
理清下此view的思路:
1.此view由圆和文字组成
a)背景圆的颜色是白色
b)进度条值所在的圆的颜色是渐变的
c)进度值
d)等级
2.因为等级是服务器直接返回的V等级,所以此处直接显示即可
首先,我们来画个背景的白色圆
圆画好之后,就该显示进度条了,进度条传入了两个值,分别是当前进度mProgress和最大进度mMaxProgress,我们就可以根据这两个值给drawArc方法设置要旋转的角度(sweepAngle)
public void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)
这样就完成了进度条的显示工作,但项目的实际需求是颜色渐变,就在这里犯了难,刚开始的想法是根据进度旋转的角度,让rgb的颜色值在一个范围内变动,效果确实可以实现,但是却发现了另外一个简单方法,那就是颜色渲染.
在Android中,提供了Shader类专门用来渲染图像以及一些几何图形。
Shader类包括了5个直接子类,分别为:
BitmapShader
ComposeShader
LinearGradient
RadialGradient
SweepGradient
其中,BitmapShader用于图像渲染;ComposeShader用于混合渲染;LinearGradient用于线性渲染;RadialGradient用于环形渲染;而SweepGradient则用于梯度渲染。这里使用的是LinearGradient,线性渲染.
LinearGradient的作用是实现某一区域内颜色的线性渐变效果。
LinearGradient的函数原型为:
public LinearGradient (float x0, float y0, float x1, float y1, int[] colors, float[] positions, Shader.TileMode tile);
其中,参数x0表示渐变的起始点x坐标;参数y0表示渐变的起始点y坐标;参数x1表示渐变的终点x坐标;参数y1表示渐变的终点y坐标;参数colors表示渐变的颜色数组;参数positions用来指定颜色数组的相对位置;参数tile表示平铺方式。
通常,参数positions设为null,表示颜色数组以斜坡线的形式均匀分布。
OK,所以现在需要给圆的画笔设置Shader
LinearGradient gradient = new LinearGradient(mWidth /2,0, mWidth /2, mHeight,RATE_COLORS,null, Shader.TileMode.MIRROR);mPaint.setShader(gradient);mPaint.setMaskFilter(new BlurMaskFilter(15, BlurMaskFilter.Blur.SOLID));//设置发光
这基本就完成了,至于省下的进度值和V等级就简单许多了
最后的效果图
在使用控件的地方直接传入三个值即可,当前进度,最大进度,当前等级,最后附上源码
点击下载
- Android自定义圆形渐变进度条
- Android之自定义圆形渐变、条形进度条
- Android 自定义圆形带刻度渐变色的进度条
- Android自定义圆形渐变进度条(续)--加动画
- android 自定义渐变进度条
- android自定义渐变进度条
- android 自定义圆形进度条
- Android:自定义圆形进度条
- android自定义圆形进度条
- Android自定义圆形进度条
- Android自定义圆形进度条
- Android 自定义圆形进度条
- Android自定义圆形进度条
- Android自定义圆形进度条
- Android 自定义圆形进度条
- Android 自定义圆形进度条
- Android 自定义圆形进度条
- Android 自定义圆形进度条
- H - Sudoku (dfs暴力)
- JS字符串中提取数字
- 09 - docker run 之 Wordpress+mysql快速搭建网站(Docker系列)
- Codeforces#383D. Arpa's weak amphitheater and Mehrdad's valuable Hoses(并查集+分组背包)
- spring MVC利用注解直接返回Json
- Android自定义圆形渐变进度条
- mongodb之索引
- 生成固定位数验证码的工具类
- iOS从零基础到精通就业-C语言入门 2 算数运算符
- Quartz源码——scheduler.start()启动源码分析(二)
- 10 - Dockerfile 之 tomcat中运行MyEclipse搭建Web项目(Docker系列)
- 【android开发】实现语音数据实时采集/播放
- WebView的简单使用和常用方法、属性!
- 11 - Dockerfile之容器中运行MyEclipse搭建的JavaWeb项目(Docker系列)