美文网首页
8. android动画《二》逐帧动画(Frame Animat

8. android动画《二》逐帧动画(Frame Animat

作者: liys_android | 来源:发表于2018-09-05 00:30 被阅读66次
逐帧动画(Frame Animation).jpg

一. 作用对象

1. 作用对象: 视图控件View。
2. 不可作用于属性或者其它对象。

二. 原理

原理:按序播放一组预先定义好的图片。
将动画拆分为 帧 的形式,且定义每一帧 = 每一张图片

自己玩小技巧:
  1. 找到自己需要的gif动画
  2. 用 gif分解软件将 gif 分解成一张张图片即可

三. 优缺点

缺点:效果单一,逐帧播放需要很多图片,占用内存空间较大,容易引发OOM
优点:制作简单

四. 使用方式

1. xml方式

res/drawable/animation_list.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/icon_redwallet_open1"
        android:duration="100"/>
    <item android:drawable="@drawable/icon_redwallet_open2"
        android:duration="100"/>
    <item android:drawable="@drawable/icon_redwallet_open3"
        android:duration="100"/>
    <item android:drawable="@drawable/icon_redwallet_open4"
        android:duration="100"/>
    <item android:drawable="@drawable/icon_redwallet_open5"
        android:duration="100"/>
    <item android:drawable="@drawable/icon_redwallet_open6"
        android:duration="100"/>
    <item android:drawable="@drawable/icon_redwallet_open7"
        android:duration="100"/>
    <item android:drawable="@drawable/icon_redwallet_open8"
        android:duration="100"/>
</animation-list>

Activity中调用:

  iv.setImageResource(R.drawable.animation_list);
  animationDrawable = (AnimationDrawable) iv.getDrawable();
  animationDrawable.start(); //开始动画
  animationDrawable.stop(); //结束动画
2. java代码方式
  animationDrawable = new AnimationDrawable();
        for (int i = 1; i <= 8; i++) {
            //第一个参数为ID名,第二个为资源属性是ID或者是Drawable,第三个为包名
            int id = getResources().getIdentifier("icon_redwallet_open" + i, "drawable", getPackageName());
            Drawable drawable = getResources().getDrawable(id);
            animationDrawable.addFrame(drawable, 100);
            animationDrawable.setOneShot(false); //false循环   true只播放一次
            iv.setImageDrawable(animationDrawable);
        }
  animationDrawable.start(); //开始动画
  animationDrawable.stop(); //结束动画

五. 应用场景

较为复杂的个性化动画效果。

相关文章

网友评论

      本文标题:8. android动画《二》逐帧动画(Frame Animat

      本文链接:https://www.haomeiwen.com/subject/tpqgwftx.html