这里不在自己造轮子了,给出一些关于 View 的绘制系列介绍的比较好的文章,尼玛! 写的太流弊!!! 给一个大大的赞! 屌!!!
这是作者关于 View 绘制的开篇文章,主要介绍内容如下:
1、主要介绍关于 Android 的 画笔和画布
主要介绍内容为 Android 中画笔(Paint)的常见使用方法:
1、set(Paint src): copy 指定画笔属性
2、setARGB(int a, int r, int g, int b):为当前画笔设置 ARGB
3、setAlpha(int a):为当前画笔设置 Alpha
4、setAntiAlias(boolean aa):设置抗锯齿
5、setColor(int color):设置当前画笔颜色
6、setColorFilter(ColorFilter filter):设置颜色过滤 可选择有:ColorMatrixColorFilter、LightingColorFilter、PorterDuffColorFilter、
ColorMatrixColorFilter:色彩矩阵过滤器 是一个 4x5的float[]类型的矩阵
LightingColorFilter:光照颜色过滤,增强或添加颜色
PorterDuffColorFilter:
7、setXfermode(Xfermode xfermode):过渡模式(图像混合模式) 可选值有:AvoidXfermode、PixelXorXfermode、PorterDuffXfermode(比较常用)
PorterDuffXfermode:图形混合模式
例子:橡皮擦效果实现
主要介绍内容还是围绕 Paint 来的,主要介绍了 Paint 的 “写字”的操作
1、FontMetrics:字体测量类
2、MaskFilter :滤镜,可以实现常见的有模糊、阴影效果 好像 高斯模糊的原理并不是采用的 MaskFilter 待探究中……
3、EmbossMaskFilter:可以实现浮雕效果
4、PathEffect:路径效果,可选值有:PathEffect、CornerPathEffect、DiscretePathEffect、DashPathEffect、PathDashPathEffect、ComposePathEffect、SumPathEffect 常见的实现效果有 心电图等路径的绘制
主要介绍内容:Paint 的 shader、
1、setShader:设置着色器,Shader其可取子类有:BitmapShader(可实现图片的重复排列以及倒影等操作)、LinearGradient(可以用来实现过度式渐变等操作)、SweepGradient(梯度渐变)、RadialGradient(径向渐变,是以中心向四周渐变的效果)
2、Matrix:矩阵
主要介绍内容:Canvas 类的使用
1、drawBitmapMesh:常用的有错切效果…正在研究中
2、Path:路径方法使用介绍
3、clipXXX:
4、Region:和 PorterDuffXfermode 很相似(混合模式)
主要介绍有关于 Canvas 相关的变换操作:
1、关于层的概念
2、 Canvas 相关的变换操作:
主要介绍内容:View 的测量
这里主要介绍 View 的生命周期方法
1、onFinishInflate:这个方法当xml布局中我们的View被解析完成后则会调用,但是如果我们不从xml布局文件中解析的话,该方法就不会被调用
2、onAttachedToWindow:表示我们的View已被创建并添加到了窗口Window中
3、onWindowVisibilityChanged:在 onAttachedToWindow 方法之后调用,只要我们当前的Window窗口中View的可见状态发生改变都会被触发
4、onMeasure
5、onSizeChanged:如果测量结果被确定则会先调用onSizeChanged方法通知View尺寸大小发生了改变
等等……