android自定义圆弧刻度

一直对于自定义view只是囫囵吞枣,拿人代码就用,很少研究,最近项目需要这个效果图:

项目效果图

关于上方的圆弧,自定义一下。对于自定义view:

1,onMeasure方法:作用是计算各控件的大小。系统在渲染页面时会调用各view的onMeasure方法,各控件的onMeasure方法执行顺序是从内到外,即先调用子控件的onMeasure方法,在执行父布局的onMeasure方法。

2,onLayout方法:根据获取到的尺寸信息渲染这个view。onMeasure方法执行完后会回调onLayout方法。onSizeChanged方法执行完也会回调onLayout方法。执行顺序也是从内到外,即先调用子控件的onLayout方法,在执行父布局的onLayout方法。

removeView(): 子onMeasure --> 父onMeasure -->子onLayout-->父onLayout

addView():子onMeasure --> 父onMeasure -->子onLayout-->父onLayout

3,onDraw()方法:绘制view:

关于绘制view,需要用到的一些类:(只介绍目前我项目中用到的):

Paint:画笔(很好理解,把view当作要画的画,这个就是画画所需要的画笔),一些属性设置

mArcBgPaint=newPaint();//实例化

mArcBgPaint.setAntiAlias(true);//抗锯齿

mArcBgPaint.setStyle(Paint.Style.STROKE);//设置样式,系统提供了3种:Paint.Style.STROKE:只画描边,Paint.Style.FILL:只画内部,Paint.Style.FILL_AND_STROKE:描边和内部都画

mArcBgPaint.setStrokeWidth(mArcWidth);//设置描边的宽度

mArcBgPaint.setColor(mArcBgColor);//设置画笔颜色

mArcBgPaint.setStrokeCap(Paint.Cap.ROUND);//该方法用来设置我们画笔的 笔触风格 ,比如:ROUND,表示是圆角的笔触。那么什么叫笔触呢,其实很简单,就像我们现实世界中的笔,如果你用圆珠笔在纸上戳一点,那么这个点一定是个圆,即便很小,它代表了笔的笔触形状,如果我们把一支铅笔笔尖削成方形的,那么画出来的线条会是一条弯曲的“矩形”,这就是笔触的意思。除了ROUND,Paint.Cap还提供了另外两种类型:SQUARE和BUTT

LinearGradient gradient =newLinearGradient(0,0,mScressWidth-2*mPdDistance,mScressWidth-2*mPdDistance,mArcForeEndColor,mArcForeStartColor,Shader.TileMode.CLAMP);

mArcForePaint.setShader(gradient);//设置圆弧渐变。

关于更多的set设置属性,查找api文档。

有了画笔,我们画画还需要画布,在自定义view种,在ondraw()方法中,Canvas这个类就是画布,提供了一系列画图的方法,当然也可以设置很多属性:

canvas.drawArc(new Recf(0,0,128,128),0,270, false,mArcBgPaint);画圆,1:圆的范围大小

参数2:起始角度,参数3:圆心角角度,360为圆,180为半圆,参数4:useCenter: 如果为True时,在绘制圆弧时将圆心包括在内,通常用来绘制扇形。参数5:画笔。

canvas.drawText(“哈哈,70,80,paint):画文字:参数1:文字内容,参数2:文字的x坐标,参数3:文字的y坐标,参数4:画文字的画笔。

关于画布提供的还有很多:如drawLine(画直线),drawRoundRect方法:绘制圆角矩形,目前我只用到这些。

好啦,关于自定义我觉得还是数学要好啊,计算的东西太多啦,写文章记录一下,代码中有错误希望看到的人可以指出联系我:1940393554@qq.com.

源码地址:github.com/daoxiaomianzi/CircleProgress

2017.7.19更新:

一:RectF和Rect的联系和区别:

1. 联系:

都是用于表示坐标系中的一块矩形区域,并可以对其做一些简单操作。这块矩形区域,需要用左上和右下两个坐标点表示。

2. 区别:

(1).精度不一样。Rect是使用int类型作为数值,RectF是使用float类型作为数值。RectF的精度更高一点。

(2).两个类型提供的方法也不是完全一致。

RectF rectF=new RectF();//构造

rectF.inset(10,10);//设置矩形的宽度

二:

1:canvas.drawRect():绘制直角矩形,这个方法有3种参数设置。1:传rectf和paint参数。2:传rect和paint参数。3:传left,top,right,bottom,paint,参数1-4:,其实就是rectf的左上和右下2个坐标点。参数5:画笔

2:canvas.drawCircle(400,400,100,mArcForePaint):画圆,参数1:圆心的x坐标,参数2:圆心的y坐标,参数3:圆的半径,参数4:画笔。

3:canvas.drawColor(Color.TRANSPARENT):给画布设置背景颜色。参数:颜色

4:canvas.drawLine(100,100,400,400,mArcBgPaint):画直线。参数1:直线的开始x坐标,参数2:直线的开始y坐标,参数3:直线的结束x坐标,参数4:直线的结束y坐标,参数5:画笔。

5:canvas.drawPoint(500,500,mArcBgPaint):画点:参数1:点的x坐标,参数2:点的y坐标,参数3:画笔。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容