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结合属性动画, 让图标动起来!相关推荐

  1. android 字母path动画,Android绘制(三):Path结合属性动画, 让图标动起来!

    目录 效果图 前言 绘制 属性动画 最后 效果图 不废话, 直接上效果图, 感兴趣再看下去. 其实不单单是效果图演示的, 运用熟练的话各种图标之间都是可以切换的. 暂停到终止 暂停到播放 前言 之前的 ...

  2. Android动画学习记录二(属性动画、估值器和插值器)

    Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) 一.补间动画缺陷 二.属性 ...

  3. 使用属性动画实现星光四射的动画效果

    在Android中, 属性动画是非常有意思的功能, 控制参数变换动画效果.与使用gif图片相比, 动画控件要节约空间和增加响应速度. 要点:(1) 使用PercentLayout设置自定义控件的大小. ...

  4. Android svg矢量图实现心跳动画

    文章目录 将svg转化为xml文件 给每个path设置动画 要实现的效果如下: 将svg转化为xml文件 阿里巴巴矢量图标库iconfont:https://www.iconfont.cn/ 我们需要 ...

  5. 使用属性动画实现仿支付宝咻一咻功能

    第一步:先画一个自定义圆. public class Xiu3 extends View {private int n;private Paint paint;private int r;public ...

  6. Android View体系(三)属性动画

    上一篇文章讲了View滑动的六种方法,其中一种是使用动画,这篇文章我们来讲一讲动画的其中一种:属性动画. 1.android视图动画和属性动画 视图动画我们都了解,它提供了AlphaAnimation ...

  7. Android -- 三种动画(帧动画、View动画、属性动画)

    Android的动画分为了三种, 分别是 帧动画.View动画.属性动画 一:帧动画 帧动画就是顺序播放一组预先定义好的图片,就类似于我们观看视频,就是一张一张的图片连续播放. 帧动画的使用很简单,总 ...

  8. Android动画案例(三)属性动画

    前方高能!!!有大量理论性的知识 Android系统在一开始的时候就提供了两种实现动画的方式,逐帧动画和补间动画 逐帧动画效果非常简单,就是让一张张单独的图片连续起来播放,类似于动画片的工作原理 补间 ...

  9. Android的三种动画详解(帧动画、View动画、属性动画)

    Android的动画分为了三种, 分别是 帧动画.View动画.属性动画. 1.帧动画 帧动画就是顺序播放一组预先定义好的图片,就类似于我们观看视频,就是一张一张的图片连续播放. 帧动画的使用很简单, ...

最新文章

  1. 将一张100元的钞票换成1元、5元和10元的钞票,每种钞票至少一张,编写程序输出所有的换法,循环次数需要尽可能地少。
  2. 触发Full GC执行的情况 以及其它补充信息
  3. C# IE浏览器操作类
  4. nginx源码分析之变量
  5. 来自东软的 OpenStack 负载均衡即服务开源项目
  6. 【渝粤题库】陕西师范大学700005 遗传学
  7. Django (八) 中间件验证码富文本缓存
  8. All men are brothers【并查集+数学】
  9. 软件工程概论第二周 开课作业
  10. Remoting PerfMon Service
  11. Android 签名类型
  12. 高斯函数、高斯积分和正态分布
  13. Linux之计划任务
  14. 雷曼兄弟 算法_雷曼如何失去双腿
  15. 王者荣耀同一微信号多个服务器,王者荣耀微信怎么切换账号?打不上省排?那就换个荣耀战区好了...
  16. 在php的开发环境中如何调取WebService?
  17. 硬核!4.5万字手把手教你搭建MySQL海量数据存储架构!!(全程实战,建议收藏)
  18. 《青春》 by 席慕容
  19. 车牌识别分割定位_解析车牌识别系统有什么优势?
  20. 机房温度远程监控方案

热门文章

  1. 入Java_初入Java的方法
  2. table tr省略后鼠标移入显示相应信息_中考来了,人机对话、信息技术考试要求看过来...
  3. linux爬365租房没有数据,新手求助,LINUX下安装11G不能MOUNT数据库
  4. output怎么用_性能领先,即训即用,快速部署,飞桨首次揭秘服务器端推理库
  5. Android缩放比例公式,android开发 缩放到指定比例的尺寸
  6. 邮箱服务器ip地址白名单,申请SSL证书时如何设置IP地址白名单和邮箱白名单
  7. 学习数字图像处理经验谈
  8. 线程queue、事件event及协程
  9. (转)C# WebApi 身份认证解决方案:Basic基础认证
  10. vue+Element-ui实现分页效果