走往android的进阶之路,避不开自定义View的学习和绘制。这里以绘制一个可用的验证码为例。开始系统的学习View的绘制。 验证码需求:
mContent:验证信息的内容(可在xml中设置,默认值为“”) mContentColor:验证信息的字体颜色(可在xml中设置,默认值为黑色) mContentSize:验证信息的字体大小(可在xml中设置,默认值为10) mBackGround:验证码的背景颜色(可在xml中设置,默认值为绿色) mBound:声明Reac mBorderColor:边框颜色(默认值为黑色) mBorderSize:边框大小(默认值为1) mRandom:声明Random mInterfrenceCount:声明干扰项的个数(默认值为100) mPaint:声明Paint
1.重写一参、二参、三参构造函数,将一参、二参的构造函数都指向三参。
在不重写的情况下,指定宽高以及match- parent是正常的,但是 warp-content也会铺满整个ViewGroup跟预期不符。所以需要针对 warp-content进行处理。 MeasureSpec的specMode,一共三种类型,当达到类似条件,specMode会等于此类型的值:
因为我们在选择warp-content时我们的宽度是内容的宽度。所以我们需要重新去测量它。而内容的宽度来源于Rect。 最后别忘记setMeasuredDimension(width, height);将我们调试好的宽高度绘制上去。
在onDraw中绘制我们的所有内容,调用编写好的所有绘制方法即可。而调用postInvalidate();会导致调用onDraw方法达到更新的作用。
verificationCode下载地址 若附件无法下载,请复制打开连接,在浏览器重新执行即可!!
https://www.jianshu.com/p/84cee705b0d3 http://www.cnblogs.com/jiayongji/p/5560806.html https://blog.csdn.net/lmj623565791/article/details/24252901/