Bnimation

现阶段实现了模仿即刻点赞效果以及数字跳动增长,小米运动首页烟花转圈圈(•̀⌄•́)效果。

即刻

即刻的点赞效果

下面是我实现的效果(最下为 TextView 自带的展示数字效果)

主要使用了 PropertyValuesHolder 和 ObjectAnimator 来编写动画。点赞效果可以分为手势图标的缩小放大(1.0->0.8->1.0,符合重力按下的效果),水纹图案的扩散并逐渐透明,手势上的 'shining' 图标的放大。通过 AnimatorSet 控制这三种动画的播放顺序。数字跳动效果通过比较新数字与旧数字之间的差异,从左侧开始第一个不同的数字以及后面的数字都需要跳动。如当前显示为 99,99+1=100,99 与 100 从第一位开始就不同,所以需要整体滚动。而 909+1=910 这种情况,只需要从第 2 位开始滚动即可。

滚动效果的实现主要使用

class Paint {

...

public void drawText(@NonNull String text, int start, int end, float x, float y,

@NonNull Paint paint) {

super.drawText(text, start, end, x, y, paint);

}

}

这个函数。坐标 y 根据 view 的高度与字体的 ascent 和 descent 属性可以得到纵向中间的位置。坐标 x 使用 Paint 类的 getTextWidths() 获得每一位数字的宽度,每次累加即可(注意,0~9 每个数字的宽度不完全相等)。

图标来源于即刻 App 反编译后的资源包,布局也使用了即刻的布局(还是有些复杂的)

小米运动

小米运动效果

上述 Gif 图中前半段是一个烟花转圈圈的效果,表示正在连接到运动设备,后烟花渐隐,出现计时的圆圈。烟花转圈的效果比较难实现,所以下文主要讲这个部分的实现。

下面是我实现的效果:最下面是 ProgressBar 的展示。

我将这个动画分为两部分: ProgressBar 就是按钮下方展示的,还有烟花效果 Comet 。

ProgressBar 部分使用 Canvas + Path 完成,可以看到是 5 个圆圈按照某种梯度依次包含。每层圆圈使用 SweepGradient 实现了颜色渐变。这里面有个技巧:SweepGradient 颜色渐变如下分布

其构造方法不提供初始的旋转角度,需要使用 canvas.rotate() 方法对画布进行旋转。当然,每次操作前记得 canvas.save() 操作后 canvas.restore()

烟花的效果参考了这篇文章为你的EditText添加一个烟花效果 ,Comet 类存储了所有的尘埃 Dust 实例,在每个位置都会诞生出 Dust 而 Dust 中包含了在此位置辐射的所有 Element 。

值得注意的是模仿的是彗星运行的效果,所以每一处位置上辐射的 Element 范围在与前进方向相反的并且-30~30度内,大概就是这样的。

有点夸张了

将 ProgressBar 与 Comet 分开,由 ProgressBar 的滚动动画 ObjectAnimator 来驱动 Comet 产生 Dust 和执行 Dust 辐射效果。

图片来源于 小米运动 App 反编译后的资源包, HenCoder Android 开发进阶: 自定义 View 1-2 Paint 详解 关于 SweepGradient 的描述图片。

做完这个项目之后突然惊觉:使用 canvas 画出一个圆圈,并在某个位置固定产生 Dust 并执行辐射效果,然后对 canvas 整体旋转不就得了。。。

android仿小米运动,GitHub - luciferldy/Bnimation: 模仿即刻 App 点赞与数字跳动效果,模仿小米运动首页转圈圈的烟花效果...相关推荐

  1. Android仿微信添加联系人列表,内附有截图和demo源码

    最新demo地址,仿微信添加联系人WXAddPersonDemo 分享一个Android仿微信选择联系人页面 之前做的App主要是工具类的,而且公司的产品经理也喜欢在App里设计很多自定义控件,所以比 ...

  2. Android自定义弹窗模仿微信,Android 仿微信朋友圈点赞和评论弹出框功能

    本文简单模仿微信朋友圈的点赞和评论弹出框,布局等细节请忽略,着重实现弹出框.发评论,及弹出位置的控制. 1. 微信弹出框 微信朋友圈的点赞和评论功能,有2个组成部分: 点击左下角的"更多&q ...

  3. android高仿小米时钟,Android小米时钟 Android仿小米时钟效果

    想了解Android仿小米时钟效果的相关内容吗,jane_dxj在本文为您仔细讲解Android小米时钟的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Android,时钟,下面大家一起来 ...

  4. android 小红书标签,GitHub - shellljx/TagViewGroup: Android 仿小红书图片标签Group

    TagViewGroup Android 仿小红书图片标签,实现了图片标签的动画,布局,水波纹,编辑等功能,还可以自定义 Tag.视频演示地址 This is a library of tags th ...

  5. 推荐两个高仿抖音 GitHub 开源项目( iOS 和 Android)

    人工智能(Artificial Intelligence),英文缩写为AI.它是研究.开发用于模拟.延伸和扩展人的智能的理论.方法.技术及应用系统的一门新的技术科学. 抖音短视频 App 火速爆红,没 ...

  6. android 仿小米日历 周视图 月视图切换

    android 仿小米日历,周视图左右滑动,月视图左右滑动,周视图月视图无缝切换: http://download.csdn.net/detail/chen352602412/9556162 插播广告 ...

  7. [Android] 仿小米空气净化器首页旋转UI

    效果图如下: 模仿并实现了小米空气净化器的主页旋转UI,动画效果比小米的流畅. 地址:https://github.com/legendmohe/CircleViewDemo

  8. Android自定义弹窗模仿微信,Android仿微信右上角点击加号弹出PopupWindow

    本文实例为大家分享了Android仿微信右上角点击加号弹出展示的具体代码,供大家参考,具体内容如下 一.要弹出的布局,随便设计 android:layout_width="match_par ...

  9. Android仿miui11风格,华为EMUI10对比小米MIUI11,到底谁才是最好用的系统?

    原标题:华为EMUI10对比小米MIUI11,到底谁才是最好用的系统? 小米和华为之间的竞争一直都算是国内厂商中比较激烈的,两者在手机配置上互相角逐,同样也是踩着对方的弱点向上攀爬的.而小米和华为系统 ...

最新文章

  1. OpenAI推出数学推理证明模型,推理结果首次被数学家接受
  2. Android呼叫开发系列WebService
  3. Spring Security 入门(四):自定义-Filter
  4. 优化VS 2005编译,脱离漫长的等待!
  5. Docker 升级 npm v3 报错 cross-device link not permitted, rename
  6. matlab中欠定方程组超定方程组_七年级下册第10章:认识二元一次方程组(1课时)...
  7. Hadoop on Mac with IntelliJ IDEA - 5 解决java heap space问题
  8. chrome插件 实现微博言论监控
  9. python比较长度_Python:XLRD;比较列长度
  10. 变革中的思索,思索中的变革
  11. Linux运维 第三阶段 (九)NFS
  12. no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory
  13. (HDFS)搭建eclipse搭建hadoop开发平台以及hdfs api调用——大数据分析及其可视化4
  14. 传统的企业数据总线(ESB)和目前的分布式消息系统有什么区别?两者的关系是?
  15. C语言之数组求中位数-封装函数
  16. 相对路径目录返回问题
  17. ECMAScript和JavaScript的区别
  18. 最短路径和最少花费问题--动态规划
  19. 彻底解决win10黑屏,睡眠后无法唤醒(Intel平台)
  20. 还不会做简历?Word自带功能,1秒自动生成简历!

热门文章

  1. pub计算机术语,【Unionpub学术】计算机与信息技术专题详情
  2. 实验五 数据查询——复杂查询
  3. 医保前置服务器系统安装,医保前置机数据库和服务器软件需求教程.doc
  4. android x86 支付宝,亿级APP支付宝在移动端的高可用技术实践
  5. mac双屏时程序坞总是跑到副屏的解决办法
  6. Linux下SUID提权方法
  7. import cannot be resolved问题-解决方法
  8. 新能源汽车的充电、电池包的组成、充电的设备
  9. 3D游戏开发基础-姜雪伟-专题视频课程
  10. computed计算属性