Android自定义自定义View实现验证码实现验证码
本文章是基于鸿洋的Android 自定义View (一) 的一些扩展,以及对Android自定义View构造函数详解里面内容的一些转载。
首先我们定义一个declare-styleable标签declare-styleable标签的作用是给自定义控件添加自定义属性用的例如这样
(我们定义了文字的颜色,大小,长度,跟背景的颜色)
<declare-styleable name="CustomTitleView">
<attr name="titleColor" format="color" />
<attr name="titleSize" format="dimension" />
<attr name="titleBackground" format="color" />
<attr name="titleLenth" format="integer" />
</declare-styleable>
Android提供了自定义属性的方法,其中的format的参数有
(reference、color、boolean、dimension、float、integer、string、fraction、enum、flag)
1.reference:资源资源ID:
如果设置了这个属性那么这个属性相当于@string|@drawable等调用资源文件的作用
2. color:
这个属性的作用为设置颜色值8或者6位的16进制的颜色值,如设置TextView的textColor等属性的作用相同(如#ff000设置为红
色等)
3.boolean::
这个参数的作用为设置true或者false
4.dimension:
这个参数的作用为设置尺寸值,如px、dip、dp、sp等
5.float:
这个参数的作用为设置浮点型数据
6.integer:
这个参数的作用为设置整形数据
7.string:
这个参数的作用为设置字符串数据,如TextView的text属性
8.fraction:
这个参数的作用为设置百分比数据
9:enum:
这个参数相当于给这个attr的name属性设置固定的参数,如线性布局的orientation属性只能设置vertical或者horizontal
10:flag:
这个参数作用为:位或运算
一个自定义View的步骤为
1、自定义View的属性
2、在View的构造方法中获得我们自定义的属性
3、重写onMeasure
4、重写onDraw
有的时候onMeasure方法是不用重写的例如系统自带组件等
然后我们定义一下需要的属性
//文本
private StringBuffer mTitleText;
//文本的颜色
private int mTitleColor;
//文本的大小
private int mTitleSize;
//背景颜色
private int mBackground;
//控制生成的随机字符串长度
private int mLenth;
//绘制时控制文本绘制的范围
private Rect mBound;
//画笔
private Paint mPaint;
//随机数对象
private Random random = new Random();
//字符串边距
private int padding_left;
//随机的值
String[] data = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};