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自己定义控件:进度条的四种实现方式
前三种实现方式代码出自: http://stormzhang.com/openandroid/2013/11/15/android-custom-loading/ (源代码下载)http://down ...
- android 自定义控件——(四)圆形进度条
----------------------------------↓↓圆形进度条(源代码下有属性解释)↓↓---------------------------------------------- ...
- Android自己定义控件系列五:自己定义绚丽水波纹效果
尊重原创!转载请注明出处:http://blog.csdn.net/cyp331203/article/details/41114551 今天我们来利用Android自己定义控件实现一个比較有趣的效果 ...
- MFC控件编程进度条编写
MFC控件编程进度条编写 一丶进度条编程需要用到的方法 进度条MFC已经帮我们封装好类了. 叫做 CProgressCtrl 进度条编程也很简单. 封装的方法也就那个那几个. GetPos() 获 ...
- android 自己定义控件
Android自己定义View实现非常easy 继承View,重写构造函数.onDraw.(onMeasure)等函数. 假设自己定义的View须要有自己定义的属性.须要在values下建立attrs ...
- Android自己定义控件皮肤
Android自己定义控件皮肤 对于Android的自带控件,其外观仅仅能说中规中矩,而我们平时所示Android应用中,一个简单的button都做得十分美观.甚至于很多button在按下时的外观都有 ...
- android 自己定义控件属性(TypedArray以及attrs解释)
近期在捣鼓android 自己定义控件属性,学到了TypedArray以及attrs.在这当中看了一篇大神博客Android 深入理解Android中的自己定义属性.我就更加深入学习力一番.我就沿着这 ...
- Highcharts 测量图;Highcharts 圆形进度条式测量图;Highcharts 时钟;Highcharts 双轴车速表;Highcharts 音量表(VU Meter)
Highcharts 测量图 配置 chart.type 配置 配置 chart 的 type 为 'gauge' .chart.type 描述了图表类型.默认值为 "line". ...
- 【Android 应用开发】 自定义 圆形进度条 组件
转载著名出处 : http://blog.csdn.net/shulianghan/article/details/40351487 代码下载 : -- CSDN 下载地址 : http://down ...
随机推荐
- eclipse 在Servers窗口创建一个Tomcat 6.0 Server失败
web项目部署到tomcat除了用eclipse插件,eclipse也有一个Servers窗口来部署. 问题背景:Servers窗口,我之前创建过一个Tomcat v6.0 Server,后来我把 ...
- EditPlus集成Java编译和运行命令组建轻量级Java SE开发工具
http://www.gogogogo.me/development/EditPlus-Java.html
- Ubuntu用户root密码设置
我们在安装Ubuntu后发现个问题,就是不像Linux系统那样会在安装过程中设置root的密码,那以后如果需要root的权限时该如何操作呢? Ubuntu里有个命令叫sudo,是以管理员的身份运行命令 ...
- ceph 之recovery machhine
一.概述 ceph recovery状态机的变化过程:
- input text的所有事件
onBlur 当 text field失去聚焦的时候执行一些代码 onChange 当 text field失去聚焦并且它的值发生变动的时候执行一些代码 onClick 当用户在 text field ...
- Linux内核(4) - 内核学习的心理问题
对于学习来说,无论是在学校的课堂学习,还是这里说的内核学习,效果好或者坏,最主要取决于两个方面——方法论和心理.注意,我无视了智商的差异,这玩意儿玄之又玄,岔开了说,属于迷信的范畴. 前面又是Kern ...
- [转]Microsoft Office 2010、Visio 2010、Project 2010官方中文版+有效激活方法
本文刊发的Office 2010.Project 2010O.Visio 2010:(1)均为“微软批量授权中心”原版光盘镜像:(2)均提供了32位(x86)和64位(x64)两种版本.为使大家了解各 ...
- FPGA管脚约束
Edit → language templates : 打开即可查看基本语法. 一.xilinx中的约束文件 1.约束的分类 利用FPGA进行系统设计常用的约束主要分为3类. (1)时序约束:主要用于 ...
- 判断js对象是否拥有某一个属性的js代码
js对象是否拥有某一个属性的判断方法有很多. 本文分享一个简单的方法,如下: <script> /** * 判断js对象是否具有某属性 * by www.jbxue.com */ var ...
- 【Android】3.4 图层展示
分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 3.4 示例4--图层展示 一.简介 1.地图类型 百度地图Android SDK 3.7.1提供了两种类型的 ...