HenCoder-自定义View部分笔记

HenCoder:https://zhuanlan.zhihu.com/hencoder

Paint的Shader设置
LinearGradient:线性,Shader.TileMode.CLAMP,MIRROR,REPEAT
RadialGradient:辐射渐变
BitmapShader
ComposeShader:混合着色器

Paint#setStrokeCap(Paint.Cap cap)
BUTT 平头、ROUND 圆头、SQUARE 方头
可以用来画点

Paint#setStrokeJoin(Paint.Join join)
设置拐角的形状。有三个值可以选择:MITER 尖角、 BEVEL 平角和 ROUND 圆角

Paint#setStrokeMiter(float miter)
设置 MITER 型拐角的延长线的最大值

在放大绘制 Bitmap 的时候就会使用双线性过滤了
paint.setFilterBitmap(true);

setPathEffect(PathEffect effect)
CornerPathEffect:把所有拐角变成圆角,参数 radius 是圆角的半径
DiscretePathEffect:把线条进行随机的偏离,让轮廓变得乱七八糟。乱七八糟的方式和程度由参数决定。segmentLength 是用来拼接的每个线段的长度, deviation 是偏离量
DashPathEffect:使用虚线来绘制线条
PathDashPathEffect(Path shape, float advance, float phase, PathDashPathEffect.Style style):比 DashPathEffect 多一个前缀 Path ,所以顾名思义,它是使用一个 Path 来绘制「虚线」,PathDashPathEffect.Style ,是一个 enum ,具体有三个值:TRANSLATE:位移,ROTATE:旋转,MORPH:变体
SumPathEffect:组合效果类的 PathEffect 。它的行为特别简单,就是分别按照两种 PathEffect分别对目标进行绘制。
ComposePathEffect:这也是一个组合效果类的 PathEffect 。不过它是先对目标 Path 使用一个 PathEffect,然后再对这个改变后的 Path 使用另一个 PathEffect。
注意: PathEffect 在有些情况下不支持硬件加速,需要关闭硬件加速才能正常使用:
1.Canvas.drawLine() 和 Canvas.drawLines() 方法画直线时,setPathEffect()是不支持硬件加速的;
2.PathDashPathEffect 对硬件加速的支持也有问题,所以当使用 PathDashPathEffect 的时候,最好也把硬件加速关了。

setShadowLayer(float radius, float dx, float dy, int shadowColor)
radius 是阴影的模糊范围; dx dy 是阴影的偏移量; shadowColor 是阴影的颜色。
如果要清除阴影层,使用 clearShadowLayer() 。
注意:
在硬件加速开启的情况下, setShadowLayer() 只支持文字的绘制,文字之外的绘制必须关闭硬件加速才能正常绘制阴影。
如果 shadowColor 是半透明的,阴影的透明度就使用 shadowColor 自己的透明度;而如果 shadowColor 是不透明的,阴影的透明度就使用 paint 的透明度。

setMaskFilter(MaskFilter maskfilter)
MaskFilter 有两种: BlurMaskFilter 和 EmbossMaskFilter。
BlurMaskFilter:
NORMAL: 内外都模糊绘制
SOLID: 内部正常绘制,外部模糊
INNER: 内部模糊,外部不绘制
OUTER: 内部不绘制,外部模糊(什么鬼?)
EmbossMaskFilter:
浮雕效果的 MaskFilter。
EmbossMaskFilter(float[] direction, float ambient, float specular, float blurRadius)的参数里, direction 是一个 3 个元素的数组,指定了光源的方向; ambient 是环境光的强度,数值范围是 0 到 1; specular 是炫光的系数; blurRadius 是应用光线的范围。

setInterpolator(Interpolator interpolator)
https://zhuanlan.zhihu.com/p/29094369

自定义View
View绘制步骤
drawBackground()
onDraw()
dispatchDraw()
onDrawForeground()

设置原点端点形状,圆头 (ROUND)、平头 (BUTT) 和方头 (SQUARE) 三种
paint.setStrokeCap(Paint.Cap.SQUARE);

你可能感兴趣的:(HenCoder-自定义View部分笔记)