View -- Paint

2018-05-03  本文已影响0人  北林丶

整理精简, 学习自定义view中paint的使用方法

颜色

基本颜色绘制

Shaper
线性渐变
LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1, Shader.TileMode tile) 
    - x0/y0 x1/y1 起始端点和结束端点
    - color0/color1 两个端点的颜色
    - Shader.TileMode 
        CLAMP  端点之外延续端点处的颜色
        MIRROR 镜像模式  
        REPEAT 重复模式
辐射渐变
RadialGradient(float centerX, float centerY, float radius, int centerColor, int edgeColor, TileMode tileMode)
    - radius 半径
    - Shader.TileMode 
        CLAMP  端点之外延续端点处的颜色
        MIRROR 镜像模式  
        REPEAT 重复模式
扫描渐变
SweepGradient(float cx, float cy, int color0, int color1)
    - cx/cy 扫描的中心坐标
用bitmap(图片)来着色
BitmapShader(Bitmap bitmap, Shader.TileMode tileX, Shader.TileMode tileY)
ComposeShader 混合着色器
ComposeShader(Shader shaderA, Shader shaderB, PorterDuff.Mode mode)
    - PorterDuff.Mode 共17种模式, 此处不细表

设置颜色过滤

绘制与目标源的重叠显示 Transfer mode

setXfermode(Xfermode xfermode)
注意事项

离屏缓冲
Canvas.saveLayer()

View.setLayerType()
     setLayerType() 是直接把整个 View 都绘制在离屏缓冲中 
     setLayerType(LAYER_TYPE_HARDWARE) 是使用 GPU 来缓冲
     setLayerType(LAYER_TYPE_SOFTWARE) 是直接直接用一个 Bitmap 来缓冲。

如果没有特殊需求,可以选用第一种方法 Canvas.saveLayer() 来设置离屏缓冲,以此来获得更高的性能
控制透明区域
绘制对象位置与绘制区域大小

效果

DrawText()

初始化类

上一篇 下一篇

猜你喜欢

热点阅读