自定义View——Paint

网络一线牵 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);

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


自定义View——Paint_第1张图片
摘自GCseSloop

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

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

共有3种Cap

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

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

void setStrokeJoin(Paint.Join join)

共有3种 Join

  • Paint.Join.MITER
    尖角(默认)
  • Paint.Join.BEVEL
    平角
  • Paint.Join.ROUND
    圆角
自定义View——Paint_第3张图片
摘自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)