通常情况,有以下三种方法来实现自定义控件:
1.对现有控件进行拓展
2.通过组合来实现新的控件
3.重写View来实现新的控件
这四个构造方法确保了自定义View能够被大多数开发者使用。
原生的TextView使用onDraw()来绘制显示的文字,代码如下:
所以我们可以认为在程序调用了super.onDraw(canvas)之后,绘制显示就完成了,那么如果要进行自定义View,只能在super.onDraw(canvas)之前进行(否则自定义内容可能会被显示的文字重叠覆盖)。
下面正式开始自定义View。
1.在构造方法中完成初始化
这里的mPaint1和mPaint2是两个全局变量,简单地理解成两支属性不同的画笔️,我们定义了这两支画笔的颜色的填充的方式。
2.重写onDraw()方法
这边解释一下为什么要在canvas.translate(50,0)之前进行canvas.save(),因为canvas.translate()其实是对画布进行操作,这样能确保绘制完成的内外层方框不受画布移动的影响(经过实验,事实上不加这句话也不会有影响,规范起见还是加上),这样相当于让之后绘制的文字向前平移了50个像素。
第一次发现文字始终显示不出来弄了半天发现是一开始错误继承了View类,导致这不是一个TextView。
3.布局文件
这样基本的过程就结束了,下面是效果图:
-
欢迎关注微信公众号、长期为您推荐优秀博文、开源项目、视频
-
微信公众号名称:Android干货程序员
网友评论