当前位置:   article > 正文

帧动画(Frame Animation)

帧动画(Frame Animation)

参考博客 kirk_wang   参考博客园 S丶black  参考简书 DakerYi

kirk_wang的帧动画写在anim里面 我试了试写不出来。。后来看到了S丶black的写法后试着把文件写入drawable里成功

我又试着用kirk_wang的activity的代码运行了下背景图和动画重叠了。。。最后用DakerYi的方法把

image.getBackground();

改为

image.getDrawable(); 

经验+1 

1、帧动画的特性:

  • a. 用于生成连续的Gif效果图。

  • b. DrawableAnimation也是指此动画


2、帧动画的优缺点:

  • 缺点:效果单一,逐帧播放需要很多图片,占用控件较大
  • 优点:制作简单


3、帧动画的实现:

帧动画实现方法很简单,完全是图片的叠加。原理和 gif 动画一样,因为每一帧过的速度太快,眼睛来不及反应所以我们觉得是动画

而且它可以任意组合动画,组合动画可以一次进行,也可以同时进行,达到了更加炫酷的效果

下面就来看看在代码中如何让使用


准备几张帧动画的图片

然后在drawable里新建xml文件 我这里加了20张图 有点长 帧动画的缺点也很明显 就是太麻烦了 

oneshot:是否只播放一次    (true是播放一遍 ,false是无限轮播)      

drawable:一帧引用的图片

duration:一帧播放的时间

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:oneshot="true">
  4. <item
  5. android:drawable="@mipmap/push_down_1"
  6. android:duration="50" />
  7. <item
  8. android:drawable="@mipmap/push_down_2"
  9. android:duration="50" />
  10. <item
  11. android:drawable="@mipmap/push_down_3"
  12. android:duration="50" />
  13. <item
  14. android:drawable="@mipmap/push_down_4"
  15. android:duration="50" />
  16. <item
  17. android:drawable="@mipmap/push_down_5"
  18. android:duration="50" />
  19. <item
  20. android:drawable="@mipmap/push_down_6"
  21. android:duration="50" />
  22. </animation-list>

acticity里面的布局需要一个imageview用来放动画

  1. <ImageView
  2. android:id="@+id/frame_image"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:src="@mipmap/push_down_1" />

开始播放的方法

  1. //开始
  2. public void startFrame(ImageView frame_image) {
  3. frame_image.setBackgroundResource(R.drawable.anim_frame);
  4. AnimationDrawable anim = (AnimationDrawable) frame_image.getDrawable();//如果图片在mipmap里就用getBackground()方法,不然会报空
  5. anim.start();
  6. }

停止的方法

  1. //停止
  2. public void stopFrame(ImageView frame_image) {
  3. AnimationDrawable anim = (AnimationDrawable) frame_image.getDrawable();
  4. if (anim.isRunning()) { //如果正在运行,就停止
  5. anim.stop();
  6. }
  7. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/451360
推荐阅读
  

闽ICP备14008679号