详解Paint的setPathEffect(PathEffect effect)

PathEffect效果实例 Android的PathEffect效果,用于一些需要特殊显示的地方 立即下载

一、setPathEffect()

这个方法一看就和path有关,顾名思义,它就是给path设置样式(效果)的。PathEffect这个路径效果类没有具体的实现,效果是由它的六个子类实现的:

这六个子类分别可以实现不同的路径效果:

下面,我们来用代码来具体实现一下。

 

二、测试代码

2.1 代码框架

首先初始化paint和path,然后配置相关属性,最后作画。

复制代码
package com.kale.cview;public class CustomView extends View {

    // 实例化画笔
    private Paint mPaint = null;
    private Path mPath;// 路径对象
    private Context mContext;

    public CustomView(Context context) {
        super(context);
    }

    /**
     * 当你要给view添加attribute的时候就需要用到这个构造
     * 
     * @param context
     * @param attrs
     */
    public CustomView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;

        // 初始化画笔
        initPaint();
        initPath();
    }

    private void initPaint() {
        // 实例化画笔并打开抗锯齿
        // mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        mPaint = new Paint();
        mPaint.setStyle(Paint.Style.STROKE);  
        mPaint.setStrokeWidth(5);  
        mPaint.setColor(Color.DKGRAY);  
    }

    private void initPath() {
        // 实例化路径
        mPath = new Path();
        // 定义路径的起点
        mPath.moveTo(10, 50);

        // 定义路径的各个点
        for (int i = 0; i <= 30; i++) {
            mPath.lineTo(i * 35, (float) (Math.random() * 100));
        }
    }


    /*
     * 绘制view时调用的方法,可能会出现多次调用,所以不建议在这里面实例化对象,也就是不要出现new
     * 
     * @param canvas 一个画布对象,我们可以用paint在上面画画
     */
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        /*
         * 绘制路径
         */
        // 没有做处理,还没有写代码
       
        canvas.drawPath(mPath, mPaint);
    }
}
复制代码

 

2.2 不设置效果

复制代码
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // 把画布往下移动250
        canvas.translate(0, 250);  
        /*
         * 绘制路径
         */
        // 没有做处理,显示生硬
        mPaint.setPathEffect(null);
        canvas.drawPath(mPath, mPaint);
    }
复制代码

 

2.3 CornerPathEffect

CornerPathEffect则可以将路径的转角变得圆滑,CornerPathEffect的构造方法只接受一个参数radius,意思就是转角处的圆滑程度。

复制代码
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // 把画布往下移动250
        canvas.translate(0, 250);  
        /*
         * 绘制路径
         */
        mPaint.setPathEffect(new CornerPathEffect(50));
        canvas.drawPath(mPath, mPaint);
    }
复制代码

 

2.4 DiscretePathEffect

DiscretePathEffect(离散路径效果)相对来说则稍微复杂点,其会在路径上绘制很多“杂点”的突出来模拟一种类似生锈铁丝的效果。其构造方法有两个参数:

第一个呢指定这些突出的“杂点”的密度,值越小杂点越密集;

第二个参数呢则是“杂点”突出的大小,值越大突出的距离越大反之反之。

复制代码
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // 把画布往下移动250
        canvas.translate(0, 250);  
        /*
         * 绘制路径
         */
        mPaint.setPathEffect(new DiscretePathEffect(3.0F, 5.0F));
        canvas.drawPath(mPath, mPaint);
    }
复制代码

当我们设置杂点密度很大,突出距离较小时,你会发现线条也变得柔和了起来。

复制代码
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // 把画布往下移动250
        canvas.translate(0, 250);  
        /*
         * 绘制路径
         */
        mPaint.setPathEffect(new DiscretePathEffect(10.0F, 2.0F));
        canvas.drawPath(mPath, mPaint);
    }
复制代码

 

2.5 DashPathEffect

它的效果相对与上面两种路径效果来说要略显复杂,其虽说也是包含了两个参数:

第一个参数是一个浮点型的数组,那这个数组有什么意义呢?其实是这样的,我们在定义该参数的时候只要浮点型数组中元素个数大于等于2即可,也就是说上面我们的代码可以写成这样的:

复制代码
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // 把画布往下移动250
        canvas.translate(0, 250);  
        /*
         * 绘制路径
         */
        mPaint.setPathEffect(new DashPathEffect(new float[] {20, 10}, 1));
        canvas.drawPath(mPath, mPaint);
    }
复制代码

loat[] {20, 10}的偶数参数20(注意数组下标是从0开始哦)定义了我们第一条实线的长度,而奇数参数10则表示第一条虚线的长度,如果此时数组后面不再有数据则重复第一个数以此往复循环,整条线就成了[20,10,20,10,20,10…………………………]这么一个状态。当然如果你想要对每个实线和虚线进行设置,你可以这样:

mEffects[3] = new DashPathEffect(new float[] {20, 10, 50, 5, 100, 30, 10, 5}, mPhase);  

而DashPathEffect的第二个参数(phase)我称之为偏移值,动态改变其值会让路径产生动画的效果。

复制代码
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // 把画布往下移动250
        canvas.translate(0, 250);  
        /*
         * 绘制路径
         */
        mPaint.setPathEffect(new DashPathEffect(new float[] {20, 10}, phase));
        canvas.drawPath(mPath, mPaint);
        
        // 改变偏移值
        phase++;
        // 重绘,产生动画效果
        invalidate();
    }
复制代码

 

2.6 PathDashPathEffect

PathDashPathEffect和DashPathEffect是类似的,不同的是PathDashPathEffect可以让我们自己定义路径虚线的样式,比如我们将其换成一个个小圆组成的虚线:

复制代码
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // 把画布往下移动250
        canvas.translate(0, 250);  
        /*
         * 绘制路径
         */
        Path path = new Path();  
        path.addCircle(0, 0, 3, Direction.CCW);  
        PathEffect pathEffect = new PathDashPathEffect(path, 12, phase, PathDashPathEffect.Style.ROTATE);  
        
        mPaint.setPathEffect(pathEffect);
        canvas.drawPath(mPath, mPaint);
        
        // 改变偏移值
        phase++;
        // 重绘,产生动画效果
        invalidate();
    }
复制代码

 

2.7 ComposePathEffect和SumPathEffect

ComposePathEffect和SumPathEffect都可以用来组合两种路径效果,就是把两种效果二合一。唯一不同的是组合的方式:

ComposePathEffect(PathEffect outerpe, PathEffect innerpe)会先将路径变成innerpe的效果,再去复合outerpe的路径效果,即:outerpe(innerpe(Path));

SumPathEffect(PathEffect first, PathEffect second)则会把两种路径效果加起来再作用于路径。


转载: http://www.cnblogs.com/tianzhijiexian/p/4297783.html

STM32F4用FSMC驱动AX58100 EtherCAT从站芯片,保姆级配置流程与避坑指南 本文详细介绍了STM32F4通过FSMC接口驱动AX58100 EtherCAT从站芯片的完整配置流程,包括硬件连接、时序优化、协议栈移植及TwinCAT主站集成。针对工业自动化场景,提供高性价比的实时控制解决方案,特别适合机械臂、CNC机床等精确同步应用,并分享关键调试技巧与性能优化方法。 阅读详情

相关推荐

米哈游 AI产品经理面试题精选:10道高频考题+答案解析(附PDF)

米哈游是全球知名游戏开发商,以《原神》《崩坏》系列著称,专注二次元文化与AI技术创新。本文整理了10道AI产品经理面试题,涵盖Transformer架构、智能NPC设计、机器学习应用、AIGC产品规划等核心领域。题目既考察技术理解(如RAG原理、多模态模型),又关注产品落地(游戏平衡性优化、伦理安全),同时强调跨团队协作能力。参考答案均结合米哈游业务场景,体现技术驱动与玩家体验并重的产品思维,展现AI在游戏行业的创新应用前景。

ZHHHHH15的博客 682

Android——详解Paint的setPathEffect(PathEffect effect)

一、setPathEffect() 这个方法一看就和path有关,顾名思义,它就是给path设置样式(效果)的。PathEffect这个路径效果类没有具体的实现,效果是由它的六个子类实现的: 这六个子类分别可以实现不同的路径效果: 下面,我们来用代码来具体实现一下。 二、测试代码 2.1 代码框架 首先初始化paint和path,然后配置相关属性,最后作画。 package com.kale.c...

小欣儿的专栏 2119

Verilog使用inout信号的方法

在FPGA的设计过程中,有时候会遇到双向信号(既能作为输出,也能作为输入的信号叫双向信号)。比如,IIC总线中的SDA信号就是一个双向信号,QSPI Flash的四线操作的时候四根信号线均为双向信号。在Verilog中用关键字inout定义双向信号,这里总结一下双向信号的处理方法。  实际上,双向信号的本质是由一个三态门组成的,三态门...

qq_41687938的博客 1万+

Android 虚线实现绘制 - DashPathEffect

前言: 通过view绘制虚实线,采用Android自带API——DashPathEffect。具体使用请参考更多的链接,这里只是讲解。 构造函数 DashPathEffect 的构造函数有两个参数: DashPathEffect (float[] intervals, float phase) 官方文档解释如下: The intervals array must contain a...

Jason_Lee155的博客 1694

YOLO系列算法改进 | Neck改进篇 | 融合FAAFusion傅里叶角度对齐模块 | 攻克多尺度方向特征冲突,角度检测精度飙升! | CVPR 2026

YOLO系列算法改进 | Neck改进篇 | 融合FAAFusion傅里叶角度对齐模块 | 攻克多尺度方向特征冲突,角度检测精度飙升! | CVPR 2026 (以YOLO26最新目标检测模型为基础,利用FAAFusion傅里叶角度对齐模块改进Neck部分)

2502_91881744的博客 315

大模型之Spring AI实战系列(二):Spring Boot + OpenAI 打造聊天应用全攻略

本篇文章是《Spring AI实战》专栏的第一篇开发入门文章,我们将借助一个完整的OpenAI聊天应用示例,详细介绍如何运用Spring Boot和Spring AI快速搭建一个支持OpenAI API的聊天服务,全面涵盖基础对话、流式对话、多提供商配置等核心功能。

寻道AI,探索AI无限可能! 6867

Android绘图之PathEffect

Android绘图之PathEffect

XYJ的博客 766

微信小程序 - 实现Java微信支付退款功能以及退款流程,微信小程序前端+java后端完整示例源码,微信小程序退款功能详解,小程序订单申请退款和退款回调方法、查询退款等(新版微信支付,详细示例代码)

微信小程序开发-微信支付退款功能以及退款回调方法,微信支付退款API详解,微信小程序支付V3(支付、退款)Java实现微信小程序开发 小程序支付开发-小程序退款功能,微信小程序小程序和公众号 退款功能教程(含申请退款和退款回调,退款回调地址在商户后台配置或者代码自定义)最新版微信小程序支付,退款问题,小程序支付和退款功能详解,小程序申请退款,小程序处理退款,微信小程序支付与退款java,微信小程序退款及回调,JAVA实现微信小程序支付退款功能,退款api调用报错,如何解决退款申请无响应,如何用实现小程序订单

🏆 前端领域优质创作者 4159

Android PathDashPathEffect 使用详解

PathDashPathEffect 和 DashPathEffect 的区别: DashPathEffect 是用来画虚线的,而PathDashPathEffect 是特殊的DashPathEffect, 特殊的地方是,虚线不是用线画,而是用Path(形状)来画。 所以,PathDashPathEffect 也是可以用来画虚线的,只不过会比DashPathEffect 麻烦。 而且这里有一个地方需要注意一下,这里的Path 必须是有高度的,Path 不能是点,线,只能是圆,矩形等。不然是画不出来东西的。

男儿不展风云志,空有天生八尺躯 2550

【OpenClaw从入门到精通】命令行操作指南——TUI模式高效管理OpenClaw(2026避坑版)

本文将详细介绍OpenClaw的命令行操作,重点介绍TUI(Text User Interface)模式的高效使用方法,以及在实际使用中需要避免的常见陷阱。通过本文的学习,你将掌握OpenClaw命令行的精髓,提升工作效率。

一键难忘的博客 1691

AUTOSAR从入门到精通-【应用篇】基于AUTOSAR架构的混合动力电池 ECU 软件开发

由于严峻的环境污染和能源短缺问题,各国都在致力于发展新能源车,以达到节能排放的目的。在此背景下,12V启停系统由于成本较低廉、匹配方便,得到广泛应用。但是12V系统作为启停系统后存在许多问题,比如节能和减排效果有限,并且轻度混合动力系统的功率需求通常在10~15KW,在此电压条件下运行时,电池的电流会达到1000A,因此该方案行不通。高压混合动力系统(>110V)的节油效果好,但是成本很高,并且需要大功率的电机。48V混合动力系统比高压混合动力系统成本。

getusushu的博客 1488

Paint setPathEffect(PathEffect effect)设置绘制路径的效果

/** * 设置绘制路径的效果,如点画线等 * setPathEffect(PathEffect effect); */ 1、//CornerPathEffect—-圆形拐角效果/** * 利用半径R=5的圆来代替原来两条直线间的夹角 */CornerPathEffect cornerPathEffect = new CornerPathEffect(10); paint.setPa

看风景的博客 1085

uniapp [全端兼容] - 实现上传本地视频到后端服务器及在线预览播放视频+移除视频+进度条上传,将已选视频上传服务端并可预览视频和删除功能,上传单个或多个视频文件及大文件(H5、小程序、app)

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,uniapp+uview上传视频并预览,UNI-APP视频上传组件,实现视频文件上传视频回显,上传视频并预览、上传多个视频,实现上传视频功能+预览,上传显示视频功能,上传视频预览移除,批量上传视频,上传超大视频文件,视频上传并预览效果,uniapp上传视频,使用uview上传视频及预览,上传视频和删除视频功能,视频流上传播放功能,上传视频到后端,视频上传与实时预览功能,upload上传组件,视频播放器

🏆 前端领域优质创作者 1万+

Paint的setPathEffect(PathEffect effect)、以及Path的具体使用,收益多多!

Paint的setPathEffect(PathEffect effect)、以及Path的具体使用,收益多多! 在这首先申明一下介绍只是为了学习使用 内容都来自:http://www.cnblogs.com/tianzhijiexian/p/4297783.html,感谢啦!受益多多! 一、setPathEffect() 这个方法一看就和path有关,顾名思义,它就是给path设置样式(...

weixin_30877227的博客 84

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Paint的效果研究

转载自:http://wpf814533631.iteye.com/blog/1847661   在Paint中有很多的属性可以设置,比如可以设置阴影,颜色过滤等等,这些会产生不同的奇妙效果,今天就对各种属性探索一下。 方法一: 1 //设置绘制的颜色,a代表透明度,r,g,b代表颜色值。 2 setARGB(int a,int r,int

lv18092081172的博客 491

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android自定义View(三)路径效果PathEffect

1.七种路径效果 1.1 效果图 1.2 具体方法 PathEffect(); 默认效果,就是直线 CornerPathEffect(radius); 将各线段之间的夹角变成圆角,radius是圆角的半径 new DashPathEffect(new float[]{10f, 5f, 20f, 15f},10);绘制虚线,intervals最少为2个,ph...

menglong0329的博客 485

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Adroid学习研究(一) PathEffect 详细解析

PathEffect是绘制path路径增加特殊效果的类,它的子类有ComposePathEffect, CornerPathEffect, DashPathEffect, DiscretePathEffect, PathDashPathEffect, SumPathEffect; CornerPathEffect(float radius):它将Path的各个连接线段之间的夹角用一种更平滑的方式连

驴与鱼的博客 620

Android:视图绘制(五) ------Paint进阶之PathEffect

本文主要介绍一下Paint的setPathEffect方法。直译就是设置画笔的路径效果。

阿东 5545

Android 画虚线 DashPathEffect 使用详解

PathEffect

男儿不展风云志,空有天生八尺躯 2789

Android 之 Paint API —— PathEffect (路径效果)

本节继续来学习Paint的API——PathEffect(路径效果),我们把画笔的sytle设置为Stroke,可以 绘制一个个由线构成的图形,而这些线偶尔会显得单调是吧,比如你想把这些先改成虚线,又 或者想让路径的转角变得圆滑等,那你就可以考虑使用这个PathEffect来实现了!作用是:叠加效果,和ComposePathEffect不同,在表现时会将两个参数的效果都独立的表现出来, 接着将两个效果简单的重叠在一起显示出来!// 依次使用7中不同的路径效果、7中不同的颜色来绘制路径。

leyang0910的博客 540

Android自定义view之利用PathEffect实现动态效果

系列文章目录 Android自定义view之利用PathEffect实现动态效果 文章最后有源码 文章目录系列文章目录前言一、首先介绍下PathEffect的一些子类二、看看子类具体的一些代码三、案例实现(CornerPathEffect,PathDashPathEffect,ComposePathEffect)PathDashPathEffect里面有几个参数:绘制运动路径修改偏移量实现动态效果四 源码 前言 在上一篇此类型的文章中是改变偏移量实现动态效果,借助的方法是drawArc,这篇文章依然是

计蒙不吃鱼的博客 1545

自定义View——Paint 之 PathEffect

PathEffect 有很多子类,如图: 能过实现这样的效果: 下面就来介绍这6个子类。 CornerPathEffect 圆形拐角效果 将线段之间的任何锐角替换为指定半径的圆角来绘制的几何图形 CornerPathEffect(float radius) 参数:radius 拐弯处的圆角半径 使用: mPathEffect = new CornerPathEff...

M-Ellen的博客 365

Android自定义控件入门到精通--PathEffect路径效果

文章目录PathEffectDashPathEffectPathDashPathEffectCornerPathEffectSumPathEffectComposePathEffectDiscretePathEffect PathEffect 路径效果,有六个实现类。 DashPathEffect DashPathEffect(float intervals[], float phase) 虚线路径效果 intervals:描述虚线效果的数组,按这个数组描述循环绘制效果 phase:开始绘制的偏移量

Jhone_csdn的专栏 961
上一篇: Android Studio Freeline 简单配置过程
下一篇: Android 常用ADB命令
dhhAndroid
博客等级 码龄10年 12粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值