Android自定义控件--圆形进度条(中间有图diao)
智能家居越来越流行,在智能家居中我们常要表现一些数据的百分比 圆形度条中间加个图是一种非常流行的自定义View
1.第一步 你首先需要对类进行继承View
public class CircleProgressImageView extends View
2.第二步 要实现三个构造方法 并且前面少参数的调用当前多参数的构造方法
public CircleProgressImageView(Context context) {this(context,null); }public CircleProgressImageView(Context context, AttributeSet attrs) {this(context, attrs,0); }public CircleProgressImageView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr); init(context,attrs,defStyleAttr); }
3.第三步:取自定义属性 并且对画笔 等进行初始化
private void init(Context context, AttributeSet attrs, int defStyleAttr) {this.context=context; /** * 获取自定义属性 */ TypedArray a=context.obtainStyledAttributes(attrs,R.styleable.CIRCLEPROGRESSIMAGEVIEWATTRS); bitmap=a.getResourceId(R.styleable.CIRCLEPROGRESSIMAGEVIEWATTRS_imagers,R.mipmap.ic_launcher); /** * 把图片资源转为Bitmap对象 */ drawBitmap=BitmapFactory.decodeResource(context.getResources(),bitmap); /** * 初始化RectF对象 */ mRectF=new RectF(); mPaint=new Paint(); mPaint.setAntiAlias(true); }
4.第四步:是在 onMeasure 方法中对height 和width进行处理
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec); /** * 获取当前View的宽高 */ width=this.getWidth(); height=this.getHeight(); /** * 对其左右上下进行处理 */ mRectF.left=mCircleStoreWidth/2; mRectF.top=mCircleStoreWidth/2; mRectF.right=width-mCircleStoreWidth/2; mRectF.bottom=width-mCircleStoreWidth/2; }
5.这时候我们需要对ondraw()方法进行绘制了
protected void onDraw(Canvas canvas) {super.onDraw(canvas); canvas.drawColor(Color.TRANSPARENT); //画圆北京 mPaint.setColor(getResources().getColor(R.color.orange)); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(mCircleStoreWidth); canvas.drawArc(mRectF,-90,360,false,mPaint); /** * 画圆弧的进度显示 */ mPaint.setColor(getResources().getColor((R.color.gray))); canvas.drawArc(mRectF,-90,((float) mProcessValue/mMaxProcessValue)*360,false,mPaint); Log.d(TAG,((float) mProcessValue/mMaxProcessValue)*360+""); /** * 画中间的图 */ float imageLeft=width/2-drawBitmap.getWidth()/2; float imageTop=height/2-drawBitmap.getHeight()/2; canvas.drawBitmap(drawBitmap,imageLeft,imageTop,mPaint); }
这样我们就实现了一个非常好看和简单的自定义View 自定义属性参考其他文章 这里就不细说了
但是这个View是不会转动的 只有通过MainActivity在线程中设置setmProcessValue(processValue)调用改变值就可以转动了。
源码下载
Android自定义控件--圆形进度条(中间有图diao)相关推荐
- Android自定义圆形进度条
Android自定义圆形进度条 github地址:https://github.com/opq1289/CircleProgressView 效果图: 无动画: 有动画: 整圆: 切割圆: 具体步骤: ...
- android自定义进度条百分比跟着走,Android studio圆形进度条 百分数跟随变化
本文实例为大家分享了Android studio圆形进度条展示的具体代码,供大家参考,具体内容如下 MainActivity import android.support.v7.app.AppComp ...
- 前端 圆形进度图_Highcharts 圆形进度条式测量图
Highcharts 圆形进度条式测量图 以下实例演示了圆形进度条式测量图. 我们在前面的章节已经了解了 Highcharts 基本配置语法.接下来让我们来看下其他的配置. 配置 chart.type ...
- Android 绘制圆形进度条
Android 绘制圆形进度条 最近项目上有一些需求,需要绘制圆形的进度条满足设计上和交互上的需求: 实现思路 在画布上直接绘制View,需要了解一下几点 1.需要画一个圆 2.圆圈上有不同进度的颜色 ...
- Android可触摸圆形进度条,Android 可滚动圆形进度条 滑块和进度在进度条上面跟着滚动...
Android 可滚动圆形进度条 滑块和进度在进度条上面跟着滚动.package com.example.test; import android.content.Context; import an ...
- android自定义圆形进度条,实现动态画圆效果
自定义圆形进度条效果图如下:应用场景如动态显示分数等. view的自定义属性如下attr.xml <?xml version="1.0" encoding="UTF ...
- android实现圆形进度条
/*** date:2021/1/4 0004* author:wsm (Administrator)* funcation:圆形进度条控件*/public class CircleProgressV ...
- android 渐变圆形进度条_flutter好用的轮子推荐七-flutter圆形或线型进度条
前言 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面. IT界著名的尼古拉斯·高尔包曾说:轮子是IT进步的阶梯!热门的框架千篇一律,好用轮子万里挑一!F ...
- Android 自定义圆形进度条(圆环刻度)View
转载请注明出处http://blog.csdn.net/shallcheek/article/details/50343677 这个也刚好是公司软件最近的需求需要到的,当初最早的版本是使用美工切好的图 ...
- android 自定义圆形进度条拖动样式,android自定义圆形进度条
首先在布局文件定义Progressbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tool ...
最新文章
- 第七届(16年)蓝桥杯java B组决赛真题及前四题解析
- C#实现文件与二进制互转并存入数据库
- matlab求心率,心电图QRS波检测(计算心跳次数)
- 【系统架构设计师】软考高级职称,一次通过,倾尽所有,2016年下半年系统架构设计师考试论文真题(论述软件设计模式技术及应用)
- c语言程序设计对称数,c语言程序设计--对称数
- ubuntu16.04 apt-get update出错:由于没有公钥,无法验证下列签名
- Android NFC详解
- 电脑文件备份到哪里最安全?
- MySQL更新数据语句
- html页面图片可点击事件,html中如何给图片添加点击事件的详解
- word里面搜狗输入法突然不见了
- [转载]MySQL 中 char 与 varchar 能存多少汉字问题_-Chaz-_新浪博客
- HBase学习(四) HBase API操作
- 四元数AHRS姿态解算和IMU姿态解算分析
- 则必有不完全相同的奇数排列对换为同一个偶排列
- qq邮箱 实现邮件的发送
- 如何优化我的世界服务器,我的世界服务器优化教程优化插件和玩法建议
- gps定位c语言开发,Android GPS定位开发教程
- 谷歌大脑与DeepMind合二为一!为对抗OpenAI打造全新大模型
- 教师资格证小学计算机面试题库,小学教师资格证面试题库.docx
热门文章
- 龙卷风代码html,龙卷风旋涡.html
- [WebGL入门]三十一,Quaternions(四元数)
- mac安装虚拟机 centos7
- 计算机要重启电脑才能检测出u盘启动,电脑使用U盘需要重启才能识别分析及解决措施...
- 芯片测试的目的及原理介绍
- n次独立重复试验暨伯努利试验
- 清华大学信息 计算机科学与技术,清华大学计算机科学与技术系导师简介:陈渝...
- 高德地图开放平台集成所需网址
- 摩尔定律,贝尔定律,吉尔德定律,麦特卡尔夫定律
- MySQL事务隔离及锁机制