那么我们为什么在自定义View中不介绍onLayout方法呢?(借用同事的一句话)其实对于自定义View来说,onLayout方法基本上不用重写,但是对于自定义ViewGroup而言,此方法确实相当的重要,因为他要计算出viewGroup中所有的子view。
1.onDraw之paint 画笔
在探究onDraw之前首先必须要认识两个类,这里给出非常不错的两个资料参考网站,我也是从这里得到想要知道的东西
http://blog.csdn.net/abcdef314159/article/details/51720686
http://www.apihome.cn/api/android/Paint.html
http://www.cnblogs.com/aibuli/p/efef9d774df97c553a8a0c0c3495ba35.html?utm_source=tuicool&utm_medium=referral
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1105/1907.html
http://blog.csdn.net/harvic880925/article/details/39080931
这里的方法已经很详细了,我们简单的挑几个常用的看看。
1.set(paint src)
复制一个画笔
2.setAntiAlias(boolean aa)
设置抗锯齿。如果不设置,加载位图的时候可能会出现锯齿状的边界,如果设置,边界就会变的稍微有点模糊,锯齿就看不到了。
3.setAlpha(int a)
设置透明度
4.setColor(int color)
设置颜色值
5.setStyle(Paint.Style style)
置画笔样式,如果不设置,默认是全部填充(FILL)。可选项为:FILL(填充)、FILL_AND_STROKE(描边并填充)、STROKE(描边)
6.setTextSize(float textSize)
设置文字大小
7.setTextAlign(Paint.Align align)
设置文本对齐方式。CENTER,LEFT和RIGHT
8.setStrokeWidth(float width)
当画笔样式(style)为STROKE或FILL_OR_STROKE时(空心样式时),设置笔刷的粗细度。
9.setShadowLayer(float radius, float dx, float dy, int color)
设置阴影效果
radius表示阴影的扩散半径;dx和dy表示阴影平面上的偏移值;shadowColor就不说了阴影颜色。
注意: 这个方法不支持硬件加速,所以我们要测试时必须先关闭硬件加速。
还有很多,我就不一 一 列举了。其实我们平时常用到的方法很少,一些比较冷的方法压根就用不到.
mPaint = new Paint();
mPaint.setAntiAlias(true);//设置抗锯齿
mPaint.setStyle(Paint.Style.STROKE);//设置格式为描边
mPaint.setColor(Color.BLACK);//设置颜色
mPaint.setStrokeWidth(10);//设置描边宽度
但是还有一点需要大家注意:
但是要注意一点,最好不要在onDraw方法中new Paint();
因为onDraw方法有可能会多次调用,(官方给出了invalidate();和postInvalidate();里面调用了onDraw方法。)多次的new 对象,容易影响内存的消耗.这句话是我借用同事的。
另外请参考:http://blog.csdn.net/sinat_26710701/article/details/70156361
http://www.cnblogs.com/yishujun/p/5559917.html