【android】环形进度条实现
先上效果图(压缩尺寸后出现锯齿,原图边缘很细腻的喂~)
特性:
1:支持环形带字 、环形不带字(中间盖上圆形图片,实现天天动听播放器在通知栏播放进度的效果)、实心
2:线程安全,不需要写handler来改变UI
3:自定义大小、颜色、边框粗细
代码来源于网上,并在此基础上加以修改
思路如下,创建一个View的子类,在OnDraw方法里面
1:第一次绘画,画出圆形背景
2:第二次绘画,按照百分比画出弧形进度()
如果显示文字,则居中画出文字。
幸运的是canvas对象已经给我们提供了绘制各种形状的方法了
画圆:drawCircle
画字:drawText
画弧度:drawArc
因此绘制核心代码如下:完整项目下载
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas); //刻度背景
int center = (int) (getWidth() * 0.5f);
int radius = (int) (center - mHalfBorder); //圆环的半径
mPaint.setColor(mBackColor); //设置圆环的颜色
mPaint.setStyle(style); //设置空心
mPaint.setStrokeWidth(mBorderWidth); //设置圆环的宽度
mPaint.setAntiAlias(true); //消除锯齿
canvas.drawCircle(center, center, radius, mPaint); //画出圆环 int percent = (int) (value * 100f / max);
//文本
if (mMode == STROKE_TEXT) {
mPaint.setStrokeWidth(0);
mPaint.setColor(mTextColor);
mPaint.setTextSize(mTextSize);
mPaint.setTypeface(Typeface.DEFAULT_BOLD); //设置字体 float textHalfWidth = mPaint.measureText(percent + "%")*0.5f;
canvas.drawText(percent + "%", center - textHalfWidth, center +textHalfSize,
mPaint);
} //进度
if (value>0) { mPaint.setStrokeWidth(mBorderWidth);
mPaint.setColor(mFontColor);
RectF oval = new RectF(center - radius, center - radius, center + radius, center + radius);
int angle = (int) (360 * percent / 100f);
mPaint.setStyle(style);
canvas.drawArc(oval, startPos, angle, isFill, mPaint);
}
}
【android】环形进度条实现的更多相关文章
- Android简易实战教程--第十七话《自定义彩色环形进度条》
转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/52203533 点击打开链接 在Android初级教程里面,介绍了shape用法 ...
- 仿MIUI音量变化环形进度条实现
Android中使用环形进度条的业务场景事实上蛮多的,比方下载文件的时候使用环形进度条.会给用户眼前一亮的感觉:再比方我大爱的MIUI系统,它的音量进度条就是使用环形进度条,尽显小米"为发烧 ...
- 【css】如何实现环形进度条
最近团队的童鞋接到了一个有关环形进度条的需求,想要还原一个native的沿环轨迹渐变进度条的效果,看到这个效果的时候,笔者陷入了沉思.. 环形进度条的效果,最先想到的就是使用CSS利用两个半圆的hac ...
- 自定义环形进度条RoundProgressBar
一.效果图: Canvas画圆环说明: 圆环宽度不必在意,只是画笔宽度设置后达到的效果. 二.实现步骤 1.自定义View-RoundProgressBar 2.设置属性resources(decle ...
- 图解CSS3制作圆环形进度条的实例教程
圆环形进度条制作的基本思想还是画出基本的弧线图形,然后CSS3中我们可以控制其旋转来串联基本图形,制造出部分消失的效果,下面就来带大家学习图解CSS3制作圆环形进度条的实例教程 首先,当有人说你能不能 ...
- iOS带动画的环形进度条(进度条和数字同步)
本篇写的是实现环形进度条,并带动画效果,要实现这些,仅能通过自己画一个 方法直接看代码 为了方便多次调用,用继承UIView的方式 .m文件 #import <UIKit/UIKit.h> ...
- iOS 开发技巧-制作环形进度条
有几篇博客写到了怎么实现环形进度条,大多是使用Core Graph来实现,实现比较麻烦且效率略低,只是一个小小的进度条而已,我们当然是用最简单而且效率高的方式来实现. 先看一下这篇博客,博客地址:ht ...
- Android 设置进度条背景
Android 设置进度条背景 直接上代码 <ProgressBar android:id="@+id/progressBar" android:layout_width=& ...
- android 自定义进度条颜色
android 自定义进度条颜色 先看图 基于产品经理各种自定义需求,经过查阅了解,下面是自己对Android自定义进度条的学习过程! 这个没法了只能看源码了,还好下载了源码, sources\b ...
- iOS一分钟学会环形进度条
有几篇博客写到了怎么实现环形进度条,大多是使用Core Graph来实现,实现比较麻烦且效率略低,只是一个小小的进度条而已,我们当然是用最简单而且效率高的方式来实现.先看一下这篇博客,博客地址:htt ...
随机推荐
- Unity预计算全局光照的学习(速度优化,LightProbe,LPPV)
1.基本参数与使用 1.1 常规介绍 使用预计算光照需要在Window/Lighting面板下找到预计算光照选项,保持勾选预计算光照并保证场景中有一个光照静态的物体 此时在编辑器内构建后,预计算光照开 ...
- Atitit mybatis 3 3.2 3.3 3.4 新特性attilax总结
Atitit mybatis 3 3.2 3.3 3.4 新特性attilax总结 1.1. iBATIS 3 内的新特性.html1 1.2. MyBatis团队于2013年2月21日正式发布 M ...
- Atitti dbutil获取多个返回结果集的解决
Atitti dbutil获取多个返回结果集的解决 1.1. 多个select默认只返回第一个resultset1 1.2. 调用存储过程,也是返回第一个select的1 1.3. 如果insert前 ...
- [svc]ssh批量分发key/批量用户管理
centos6 sshpass批量分发key yum install sshpass -y ssh-keygen -t dsa -f ~/.ssh/id_dsa -P "" 命令说 ...
- HTML5学习笔记(八):CSS定位
CSS 定位 (Positioning) 属性允许你对元素进行定位. 定位和浮动 CSS 为定位和浮动提供了一些属性,利用这些属性,可以建立列式布局,将布局的一部分与另一部分重叠.定位的基本思想很简单 ...
- 【驱动】linux设备驱动·扫盲
linux设备驱动 Linux系统把设备驱动分成字符设备.块设备和网络设备三种类型. 内核为设备驱动提供了注册和管理的接口,设备驱动还可以使用内核提供的其他功能以及访问内核资源. PCI局部总线 早期 ...
- 歌曲播放页面的数据vuex管理
1.state.js import {playMode} from '@/common/js/config' const state = { singer:{}, playing:false, ful ...
- C# 去除json字符串key引号
采用正则表达式去除: 方法 /// <summary> /// 去除json key双引号 /// </summary> /// <param name="js ...
- R语言统计分析应用与SAS、SPSS的比较
能够用来做统计分析的软件和程序很多,目前应用比较广泛的包括:SPSS, SAS.R语言,Matlab,S-PLUS,S-Miner等.下面我们来看一下各应用的特点: SPSS: 最简单的,都是菜单操作 ...
- Gridview排序与分页-不使用“DataSourceControl DataSource”的情况下如何分页和排序 ...
如果你在GridView控件上设置 AllowPaging="true" or AllowSorting="true" 而没有使用使用数据源控件 DataSou ...