博主声明:

转载请在开头附加本文链接及作者信息,并标记为转载。本文由博主 威威喵 原创,请多支持与指教。

本文首发于此   博主:威威喵  |  博客主页:https://blog.csdn.net/smile_running

Android 提供了一种简单而好用的帧动画,所谓帧动画,就是一帧一帧的播放,你可以想象一下民国时期那种电影片的效果,它用的就是一帧一帧的播放,说白了就是一张一张图片的播放,若两张图片切换的时间间隔非常短的话,我们眼睛看上去就会形成一种连贯性的动画,这就是称为帧动画。

当然了,前面说到的帧动画,其实是播放一张张的图片。所以呢,我们做这个效果之前,肯定需要把一个图片序列材料给准备好。我可以提供一个我自己的制作方式,图片序列咱们不好搞,直接去搜那种动态 gif 的图片,然后我们用 gif 分解器,把这些动画分解成一张张图片即可。

好了,上面介绍了帧动画,还有如何制作素材。下面,我们来看看要实现的效果图吧。

这种帧动画在很多应用中都会有,比如美团的加载动画,京东的加载动画等等,上面的效果也就是我从网上搜罗来的一个 gif 图片,然后分解掉得来的,个人感觉这个有点可爱,傻傻的,哈哈,所以选了这个。

首先,第一步要导入我们的图片,不用多说了。接下来,在 res -> drawable 下面建立的 anim.xml 的资源文件,我们需要在此设置图片的序列及每一帧持续的时间。

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"android:oneshot="false">  // 表示循环播放<item android:drawable="@drawable/load0" android:duration="50"/><item android:drawable="@drawable/load1" android:duration="50"/><item android:drawable="@drawable/load2" android:duration="50" /><item android:drawable="@drawable/load3" android:duration="50"/><item android:drawable="@drawable/load4" android:duration="50"/><item android:drawable="@drawable/load5" android:duration="50"/><item android:drawable="@drawable/load6" android:duration="50"/><item android:drawable="@drawable/load7" android:duration="50"/><item android:drawable="@drawable/load8" android:duration="50"/><item android:drawable="@drawable/load9" android:duration="50"/><item android:drawable="@drawable/load10" android:duration="50"/><item android:drawable="@drawable/load11" android:duration="50"/><item android:drawable="@drawable/load12" android:duration="50"/><item android:drawable="@drawable/load13" android:duration="50"/><item android:drawable="@drawable/load14" android:duration="50"/><item android:drawable="@drawable/load15" android:duration="50"/><item android:drawable="@drawable/load16" android:duration="50"/><item android:drawable="@drawable/load17" android:duration="50"/><item android:drawable="@drawable/load18" android:duration="50"/><item android:drawable="@drawable/load19" android:duration="50"/><item android:drawable="@drawable/load20" android:duration="50"/><item android:drawable="@drawable/load21" android:duration="50"/><item android:drawable="@drawable/load22" android:duration="50"/><item android:drawable="@drawable/load23" android:duration="50"/><item android:drawable="@drawable/load24" android:duration="50"/><item android:drawable="@drawable/load25" android:duration="50"/><item android:drawable="@drawable/load26" android:duration="50"/><item android:drawable="@drawable/load27" android:duration="50"/><item android:drawable="@drawable/load28" android:duration="50"/><item android:drawable="@drawable/load29" android:duration="50"/><item android:drawable="@drawable/load30" android:duration="50"/><item android:drawable="@drawable/load31" android:duration="50"/><item android:drawable="@drawable/load32" android:duration="50"/><item android:drawable="@drawable/load33" android:duration="50"/><item android:drawable="@drawable/load34" android:duration="50"/><item android:drawable="@drawable/load35" android:duration="50"/><item android:drawable="@drawable/load36" android:duration="50"/><item android:drawable="@drawable/load37" android:duration="50"/><item android:drawable="@drawable/load38" android:duration="50"/><item android:drawable="@drawable/load39" android:duration="50"/><item android:drawable="@drawable/load40" android:duration="50"/><item android:drawable="@drawable/load41" android:duration="50"/><item android:drawable="@drawable/load42" android:duration="50"/><item android:drawable="@drawable/load43" android:duration="50"/><item android:drawable="@drawable/load44" android:duration="50"/><item android:drawable="@drawable/load45" android:duration="50"/><item android:drawable="@drawable/load46" android:duration="50"/><item android:drawable="@drawable/load47" android:duration="50"/><item android:drawable="@drawable/load48" android:duration="50"/><item android:drawable="@drawable/load49" android:duration="50"/><item android:drawable="@drawable/load50" android:duration="50"/><item android:drawable="@drawable/load51" android:duration="50"/><item android:drawable="@drawable/load52" android:duration="50"/><item android:drawable="@drawable/load53" android:duration="50"/><item android:drawable="@drawable/load54" android:duration="50"/><item android:drawable="@drawable/load55" android:duration="50"/><item android:drawable="@drawable/load56" android:duration="50"/><item android:drawable="@drawable/load57" android:duration="50"/><item android:drawable="@drawable/load58" android:duration="50"/><item android:drawable="@drawable/load59" android:duration="50"/><item android:drawable="@drawable/load60" android:duration="50"/><item android:drawable="@drawable/load61" android:duration="50"/><item android:drawable="@drawable/load62" android:duration="50"/><item android:drawable="@drawable/load63" android:duration="50"/><item android:drawable="@drawable/load64" android:duration="50"/><item android:drawable="@drawable/load65" android:duration="50"/><item android:drawable="@drawable/load66" android:duration="50"/><item android:drawable="@drawable/load67" android:duration="50"/><item android:drawable="@drawable/load68" android:duration="50"/><item android:drawable="@drawable/load69" android:duration="50"/><item android:drawable="@drawable/load70" android:duration="50"/><item android:drawable="@drawable/load71" android:duration="50"/></animation-list>

我这里把那个 gif 图片分解了,里面居然是 70 几张图片合成的,算了,既然选择了你,还是得搞一下。不过这里得说明一下,不建议图片太多,10 张以内就好了,而且图片也别太大了,容易导致 oom 的出现,它这个帧动画是把图片一帧一帧的绘制出来的,而我们放入的是 ImageView 里面,没做优化处理的话,不太行。

接下来,在主布局里面放一个 ImageView,背景设置为我们刚刚创建的 anim.xml 文件

    <ImageViewandroid:id="@+id/loading"android:layout_width="320dp"android:layout_height="200dp"android:layout_gravity="center"android:background="@drawable/loading_anim" />

好了,到了这一步,它还是不会自动播放的。接下来,我们需要用代码开启动画效果,很简单

        ImageView loading = findViewById(R.id.loading);AnimationDrawable animationDrawable = (AnimationDrawable) loading.getBackground();animationDrawable.start();

我们拿到动画的实例,然后 start() 就好了,现在运行一下就会产生动画效果了。这里要注意一下,图片的序列千万别搞错了,不然动画会变成畸形的,错乱的。

Android 简单又炫酷的帧动画(加载动画)相关推荐

  1. html加载特效大全,10种炫酷的CSS3 loading加载动画特效

    这是一组效果非常炫酷的纯CSS3 loading加载动画特效.这组loading动画共10种不同的效果,全部使用animation帧动画制作而成.这些特效代码简洁,效果炫酷,非常值得学习借鉴. 制作方 ...

  2. 【web素材】09—150款+炫酷的CSS3 loading加载动画,总有一款适合你

    整理 | 杨小爱 我不知道,作为程序员的你,是否有这样的"职业病",就是在浏览网页时,有时候无意间看到一个很炫酷的效果,你会去研究一下,别人是怎么实现这个效果的吗?会去看一下别人的 ...

  3. 150款+炫酷的CSS3 loading加载动画,总有一款适合你

    是不是非常有趣? 最后,附上150款+CSS3 loading加载动画的下载地址: 下载地址: https://pan.baidu.com/s/1upupoPpI0KDrK1lk_m4MmA 提取码: ...

  4. 超酷jQuery进度条加载动画集合

    在丰富多彩的网页世界中,进度条加载动画的形式非常多样,有利用gif图片实现的loading动画,也有利用jQuery和CSS3实现的进度加载动画,本文主要向大家介绍很多jQuery和CSS3实现的进度 ...

  5. Android 炫酷自定义 View - 剑气加载

    效果图 原理分析 这个效果仔细看,就是有三个类似月牙形状的元素进行循环转动,我们只需要拆解出一个月牙来做效果即可,最后再将三个月牙组合起来就可以达到最终效果了 月牙 先画一个圆: 再画个大一丢丢的: ...

  6. css-animaton-随堂-风车动画-加载动画-走路动画

    animation 爱你妹心 丢儿锐醒 in非里特 奥特里特 破丝 肤锐母 animation用法 格式 animation: 动画名称 动画时间 动画曲线(linear,ease,steps) 延迟 ...

  7. html顺序进场动画,十六种炫酷纯css加载动画(一)

    一个好的开篇,会给你这个项目增加不少分值. 有没有遇到过打开页面加载一段时间,页面内容才加载出来.在等待加载的过程中页面却是空白页,给用户的体验特别不好,会让项目降一个档次.下面的十六种炫酷炸裂的cs ...

  8. 超酷的 CSS3 loading 预加载动画特效

    给大家介绍一款超酷CSS3 loading预加载动画特效. 该loading特效共有4种不同的效果,分别通过不同的CSS3 keyframes帧动画来完成. HTML结构 4种loading预加载动画 ...

  9. CSS 实现加载动画(最简单实现)

    一.源码 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8& ...

  10. 自定义 View 之联想手机 ZUI 系统加载动画

    博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载.本文由博主 威威喵 原创,请多支持与指教. 本文首发于此   博主:威威喵  |  博客主页:https://blog.csdn.net/ ...

最新文章

  1. C语言面向过程与C++面向对象
  2. Python学习心得第一周-03练习1
  3. 数据库选项--ALTER DATABASE WITH 选项
  4. python中的str方法和repr方法_Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些
  5. 算法 | 一段C语言和汇编的对应分析,揭示函数调用的本质
  6. 阿里云参加ONS EU 2018,飞天洛神亮相网络顶会
  7. MySQL数据库进阶(事务Transaction)
  8. IDM俄国大神直装注册版INTERNET DOWNLOAD MANAGER 6.36.7
  9. SD卡、TF卡坏道及容量检测
  10. 三维激光雷达点云处理发展趋势
  11. 生活大爆炸第六季 那些精妙的台词翻译
  12. 网络安全系列-VIII: 什么是渗透测试 Penetration Test?
  13. android课程设计健身,健身软件课程设计_毕业论文设计.doc
  14. 2022最新酒桌小游戏小程序源码(附带流量主)
  15. MySQL 并集、交集、差集
  16. 软件著作权申请注意事项——常见问题
  17. 学习虫师的《web接口开发与自动化测试1-5章》
  18. 关于 .bashrc
  19. 新版 CSDN Markdown 编辑器上线公告(Alpha 2.0)
  20. 一篇文章上手SSH开发,单表全过程,全代码

热门文章

  1. 【真人手势动画制作软件】万彩手影大师教程 | 预览、保存及发布视频
  2. 软件测试技能大赛山东省,我院获2020年山东省职业院校技能大赛“软件测试”赛项二等奖...
  3. Keil uVision5 MDK-ARM 程序使用—————中文图解
  4. offer oracle svp_SVP4
  5. 医学诊断报告生成论文综述
  6. catia二次开发:结构树文档,录制宏编程思路,遍历结构树,catia根对象窗体属性,打开导出文件,cameras工具条,viewer对象和截图,catia发送命令
  7. 安川焊接机器人做圆弧运动编程_安川机器人示教器编程插补方式详细介绍--安川机器人...
  8. mac的obs录制不到全屏
  9. mindspore-ResNet101使用GPU进行训练时报错
  10. 安卓html 750px,移动端750px页面适配