Android自定义View【实战教程】3⃣️----Paint类、Path类以及PathEffect类详解

本文详细介绍了Android自定义View中Paint类的使用,包括透明度、抗锯齿、画笔风格等属性,并探讨了Path类的路径绘制方法,如画线段、贝塞尔曲线和弧线。此外,还讲解了PathEffect如何实现线条的特殊效果,为自定义View提供更多的视觉表现力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#Paint类使用详解
Paint 代表了Canvas上的画笔、画刷、颜料等等

方法 作用
setARGB(int a, int r, int g, int b) 设置Paint对象颜色,参数一为alpha透明通道
setAlpha(int a) 设置alpha不透明度,范围为0~255
setMaskFilter(MaskFilter maskfilter) 滤镜效果
setStyle(Style style); 设置画笔风格
setStrokeWidth(int width) 设置画笔空心线宽
setDither(boolean dither) 设定是否使用图像抖动处理,使绘制出的图片颜色更平滑饱满,图像更加清晰
setAntiAlias(boolean aa) 是否抗锯齿
setColor(int color) 设置颜色,这里Android内部定义的有Color类包含了一些常见颜色定义
setFakeBoldText(boolean fakeBoldText) 设置伪粗体文本
setLinearText(boolean linearText) 设置线性文本
setPathEffect(PathEffect effect) 设置路径效果
setRasterizer(Rasterizer rasterizer 设置光栅化
setShader(Shader shader) 设置阴影
setTextAlign(Paint.Align align) 设置文本对齐
setTextScaleX(float scaleX) 设置文本缩放倍数,1.0f为原始
setTextSize(float textSize) 设置字体大小
setTypeface(Typeface typeface) 设置字体,Typeface包含了字体的类型,粗细,还有倾斜、颜色等。
setUnderlineText(boolean underlineText) 设置下划线
setStrokeCap(CAP cap) 线段末端效果
setStrokeJoin(Join join) 闭合图形的连接处效果

先看一个简单的demo:

public class DemoView extends View {
    Paint paint = new Paint();
    Path path = new Path();

    public DemoView(Context context) {
        this(context,null);
    }

    public DemoView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs,0);
    }

    public DemoView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);

        init();
    }

    private void init(){
        paint.setAntiAlias(false);
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeWidth(10);
        paint.setColor(Color.parseColor("#ff0000"));

        //path在后面进行讲解
        path = new Path();
        path.moveTo(150, 400);
        path.lineTo(450, 400);
        path.lineTo(300, 150);
        path.close();

    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        canvas.drawPath(path,paint);
    }
}

效果如图:
这里写图片描述

下面几个重要属性详细介绍:

###setAlpha(int a) —透明度

paint.setAlpha(100);

这里写图片描述

###setAntiAlias(boolean aa) —是否抗锯齿
false不抗锯齿

 paint.setAntiAlias(false);

这里写图片描述

true抗锯齿

 paint.setAntiAlias(true);

这里写图片描述

###setStyle(Style style)—设置画笔风格
Style.FILL:实心
Style.FILL_AND_STROKE:同时显示实心和空心
Style.STROKE:空心

paint.setStyle(Paint.Style.STROKE);

效果如图:
这里写图片描述

paint.setStyle(Paint.Style.FILL);

这里写图片描述

###setStrokeWidth—空心画笔宽度

setStrokeWidth(int width)

这里写图片描述

###setStrokeCap(CAP cap)—线段末端效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值