Android绘制(三):Path结合属性动画, 让图标动起来!
Android绘制(一):来用shape绘出想要的图形吧!
Android绘制(二):来用Path绘出想要的图形吧!
目录
- 效果图
- 前言
- 绘制
- 属性动画
- 最后
效果图
不废话, 直接上效果图, 感兴趣再看下去. 其实不单单是效果图演示的, 运用熟练的话各种图标之间都是可以切换的.
前言
之前的文章也说了, path还是很有潜力的. 但是很遗憾, 我本人不太擅长用贝塞尔曲线画东西, 所以只能演示一些简单的变化(手动无奈). 来看看是如何实现的吧.
绘制
想要绘制矩形很简单啦, 移动到左上角, 然后逆时针画一圈, 或者顺时针画一圈. 那其实暂停和终止就是两个矩形, 播放就是两个三角形. 所以稍微改变下path绘制的位置就解决问题啦.
mLPath.moveTo(left, top);
mLPath.lineTo(left, bottom);
mLPath.lineTo(right, bottom);
mLPath.lineTo(right, top);
mLPath.close();
复制代码
但是需要弄清绘制区域. 首先要测出设定视图宽高, 再以此画一个圆, 然后设置一个内边距, 然后再绘制图标. 来张图:
属性动画
其实这里的属性动画的使用部分是最简单的使用, 就是值变化, 从0到1或者从1到0.
ValueAnimator valueAnimator = ValueAnimator.ofFloat(isPlaying ? 1 : 0, isPlaying ? 0 : 1);
valueAnimator.setDuration(mAnimDuration);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {mProgress = (float) animation.getAnimatedValue();invalidate();}
});
复制代码
然后依据mProgress的值变化图形. 那要怎么构建这个变化呢? 注意看我的注释部分, 变化的值就那几个, 你将0时的值和1时的值先写好, 然后推算函数, 就是初中数学的难度, 大概(天知道现在小学生变成什么样了)(手动滑稽).
// 暂停间距(0: mMidSpace 1: 0)
float pauseDis = mMidSpace * (1 - mProgress);
// 暂停单条宽(0: mRectWidth / 3 1: mRectWidth / 2)
float pauseWidth = (mRectWidth - pauseDis) / 2;
// 左暂停左上(0: 0 1: mRectWidth / 2)
float pauseLLT = pauseWidth * mProgress;
// 右暂停左上(0: mRectWidth / 3 * 2 1: mRectWidth / 2)
float pauseRLT = pauseWidth + pauseDis;
// 右暂停右上(0: mRectWidth 1: mRectWidth)
float pauseRRT = pauseWidth * 2 + pauseDis;
// 右暂停右下(0: mRectWidth 1: mRectWidth / 2)
float pauseRRB = pauseRRT - pauseWidth * mProgress;
复制代码
最后
之后实现应该都不太难了, 不管是监听还是自定义属性. 那自定义视图可以看这篇-界面无小事(五):自定义自定义TextView, 属性动画可以看这篇-动画必须有(一): 属性动画浅谈. 当然了, 要是前一篇没看的, 建议看下Android绘制(二):来用Path绘出想要的图形吧!. 喜欢记得点赞哦, 有意见或者建议评论区见, 暗中关注我也是可以的哦~
Android绘制(三):Path结合属性动画, 让图标动起来!相关推荐
- android 字母path动画,Android绘制(三):Path结合属性动画, 让图标动起来!
目录 效果图 前言 绘制 属性动画 最后 效果图 不废话, 直接上效果图, 感兴趣再看下去. 其实不单单是效果图演示的, 运用熟练的话各种图标之间都是可以切换的. 暂停到终止 暂停到播放 前言 之前的 ...
- Android动画学习记录二(属性动画、估值器和插值器)
Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) 一.补间动画缺陷 二.属性 ...
- 使用属性动画实现星光四射的动画效果
在Android中, 属性动画是非常有意思的功能, 控制参数变换动画效果.与使用gif图片相比, 动画控件要节约空间和增加响应速度. 要点:(1) 使用PercentLayout设置自定义控件的大小. ...
- Android svg矢量图实现心跳动画
文章目录 将svg转化为xml文件 给每个path设置动画 要实现的效果如下: 将svg转化为xml文件 阿里巴巴矢量图标库iconfont:https://www.iconfont.cn/ 我们需要 ...
- 使用属性动画实现仿支付宝咻一咻功能
第一步:先画一个自定义圆. public class Xiu3 extends View {private int n;private Paint paint;private int r;public ...
- Android View体系(三)属性动画
上一篇文章讲了View滑动的六种方法,其中一种是使用动画,这篇文章我们来讲一讲动画的其中一种:属性动画. 1.android视图动画和属性动画 视图动画我们都了解,它提供了AlphaAnimation ...
- Android -- 三种动画(帧动画、View动画、属性动画)
Android的动画分为了三种, 分别是 帧动画.View动画.属性动画 一:帧动画 帧动画就是顺序播放一组预先定义好的图片,就类似于我们观看视频,就是一张一张的图片连续播放. 帧动画的使用很简单,总 ...
- Android动画案例(三)属性动画
前方高能!!!有大量理论性的知识 Android系统在一开始的时候就提供了两种实现动画的方式,逐帧动画和补间动画 逐帧动画效果非常简单,就是让一张张单独的图片连续起来播放,类似于动画片的工作原理 补间 ...
- Android的三种动画详解(帧动画、View动画、属性动画)
Android的动画分为了三种, 分别是 帧动画.View动画.属性动画. 1.帧动画 帧动画就是顺序播放一组预先定义好的图片,就类似于我们观看视频,就是一张一张的图片连续播放. 帧动画的使用很简单, ...
最新文章
- 将一张100元的钞票换成1元、5元和10元的钞票,每种钞票至少一张,编写程序输出所有的换法,循环次数需要尽可能地少。
- 触发Full GC执行的情况 以及其它补充信息
- C# IE浏览器操作类
- nginx源码分析之变量
- 来自东软的 OpenStack 负载均衡即服务开源项目
- 【渝粤题库】陕西师范大学700005 遗传学
- Django (八) 中间件验证码富文本缓存
- All men are brothers【并查集+数学】
- 软件工程概论第二周 开课作业
- Remoting PerfMon Service
- Android 签名类型
- 高斯函数、高斯积分和正态分布
- Linux之计划任务
- 雷曼兄弟 算法_雷曼如何失去双腿
- 王者荣耀同一微信号多个服务器,王者荣耀微信怎么切换账号?打不上省排?那就换个荣耀战区好了...
- 在php的开发环境中如何调取WebService?
- 硬核!4.5万字手把手教你搭建MySQL海量数据存储架构!!(全程实战,建议收藏)
- 《青春》 by 席慕容
- 车牌识别分割定位_解析车牌识别系统有什么优势?
- 机房温度远程监控方案
热门文章
- 入Java_初入Java的方法
- table tr省略后鼠标移入显示相应信息_中考来了,人机对话、信息技术考试要求看过来...
- linux爬365租房没有数据,新手求助,LINUX下安装11G不能MOUNT数据库
- output怎么用_性能领先,即训即用,快速部署,飞桨首次揭秘服务器端推理库
- Android缩放比例公式,android开发 缩放到指定比例的尺寸
- 邮箱服务器ip地址白名单,申请SSL证书时如何设置IP地址白名单和邮箱白名单
- 学习数字图像处理经验谈
- 线程queue、事件event及协程
- (转)C# WebApi 身份认证解决方案:Basic基础认证
- vue+Element-ui实现分页效果