美文网首页
自定义View——Paint

自定义View——Paint

作者: 四喜汤圆 | 来源:发表于2019-10-15 21:45 被阅读0次

    网络一线牵 HenCoder Android 开发进阶: 自定义 View 1-1 绘制基础

    一、作用

    Paint 保存了绘制时的style and color信息。

    二、Paint API

    Android画笔基础(Paint)

    1. 内部类

    2. 构造函数

    // 创建默认画笔,使用默认配置
    Paint()
    // 创建一个新画笔,并通过flags参数进行配置
    Paint(int flags)
    // 创建一个新画笔,并复制参数中画笔的设置
    Paint(Paint paint)
    

    3. 常量

    4. 公开方法

    (1)flags 相关

    // 获取画笔相关的一些设置(标志)
    int getFlags()
    // 设置标志,该方法会覆盖之前设置的内容,只有最后一次的生效
    void setFlags(int flags)
    // 复制 Paint 的设置
    void set(Paint src)
    // 将画笔恢复为默认设置
    void reset() 
    

    常用的 flags 包括

    • Paint.ANTI_ALIAS_FLAG
      抗锯齿
    • Paint.DITHER_FLAG
      抗抖动

    可以同时设置多个 flags

    paint.setFlags(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG);
    

    (2)画笔颜色相关

    // 只返回颜色的 alpha 值
    int getAlpha()
    // 设置透明度
    void setAlpha(int a)
    // 返回画笔的颜色
    int getColor()
    // 设置颜色
    void setColor(int color)
    // 设置带透明通道的颜色
    void setARGB(int a,int r, int g,int b)
    

    可以用十进制或十六进制设置透明度

    paint.setAlpha(204);
    paint.setAlpha(0xXX);
    

    可以用十进制或十六进制设置颜色

    paint.setARGB(204,255,255,255,0);
    paint(0xCC,0xFF,0xFF,0x00);
    

    (3)画笔style(3种)

    // 设置画笔 style
    paint.setStyle(Paint.Style style);
    

    共有3种 style

    • Paint.Style.FILL
      填充内容(默认模式)
    • Paint.Style.STROKE
      描边,只绘制图形轮廓
    • Paint.Style.FILLANDSTROKE
      描边+填充

    画笔宽度(画笔粗细)

    // 设置画笔 style
    paint.setStyle(Paint.Style style);
    paint.setStrokeWidth(float width);
    

    设置画笔宽度后,这条宽度是同时向两边进行扩展的。


    摘自GCseSloop

    画笔线帽(线段开始和结束时的效果)

    // 指定线段开始和结束时的效果
    void setStrokeCap(Paint.Cap cap)
    

    共有3种Cap

    • Paint.Cap.BUTT
      无线帽(默认)
    • Paint.Cap.SQUARE
      以线条宽度为大小,在开头和结尾处分别添加半个正方形
    • Paint.Cap.ROUND
      以线条宽度为直径,在开头和结尾处分别添加一个半圆
    摘自GCseSloop

    线段连接方式(拐角类型)

    void setStrokeJoin(Paint.Join join)
    

    共有3种 Join

    • Paint.Join.MITER
      尖角(默认)
    • Paint.Join.BEVEL
      平角
    • Paint.Join.ROUND
      圆角
    摘自GcsSloop

    (4)PathEffect
    PathEffect 在绘制之前修改几何路径,它可以实现划线,自定义填充效果和自定义笔触效果。它可作用于 Canvas 的各种绘制。

    • CornerPathEffect
      圆角效果,将尖角替换为圆角。

    • DashPathEffect
      虚线效果,用于各种虚线效果

    • PathDashPathEffect
      Path虚线效果,虚线中间的间隔使用 Path 代替

    • DiscretePathEffect
      让路径分段随机偏移

    • SumPathEffect
      两个 PathEffect 效果组合,同时绘制两种效果

    • ComposePathEffect
      两个 PathEffect 效果组合,先绘制效果1,再绘制2

    (5)文字设置相关

    • 文字大小
      setTextSize(float textSize)
    • 文本下划线
      setUnderlineText(boolean unserlineText)
    • 文本删除线
      setStrikeThruText(boolean strikeThruText)
    • 文本粗体
      setFakeBoldText(boolean fakeBoldText)
    • 设置斜体
      setTextSkewX(float skewX)
    • 文字阴影
      setShadowLayer(float radius,float x,float y,int shadowColor)

    三、使用

    1. Paint 的使用

    参考文献

    Path
    HenCoder Android 开发进阶: 自定义 View 1-2 Paint 详解

    相关文章

      网友评论

          本文标题:自定义View——Paint

          本文链接:https://www.haomeiwen.com/subject/vmdopctx.html