Android 动画----帧动画

帧动画的使用,以及使用中遇到的问题(stop无效)

Posted by Mio4kon on 2014-11-16

存档

如果android:pivotX=”N”,则表示绝对坐标比例,即屏幕的坐标比例。

如果android:pivotX=”N%”,则表示相对自身的坐标比例。

如果android:pivotX=”N%p”,则表示相对于父控件的坐标比例。

setStartOffset(long startOffset) 延迟执行动画

setFillAfter(true) 动画完成后保持不变

帧动画

<ImageView
    android:id="@+id/pb_repay"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:layout_gravity="center"
    android:src="@drawable/frame_anim_loading" />

设置需要动的控件:ImageView的src对应Frame动画.

drawable/frame_anim_loading.xml

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:andro[]id="http://schemas.android.com/apk/res/android"
    android:oneshot="false" > 
    <!--false为循环播放--!>
    <item
        android:drawable="@drawable/weichu"
        android:duration="500">
    </item>
    <item
        android:drawable="@drawable/yuqi"
        android:duration="500">
    </item>

</animation-list>

代码中开启动画:

/** 帧动画 */
progressImage = (ImageView) findViewById(R.id.pb_repay);
AnimationDrawable animationDrawable = (AnimationDrawable) progressImage.getDrawable();
animationDrawable.start();    

在使用帧动画中遇到一个问题:

第一帧没有结束,就使用animationDrawable.stop() 无效.也就是过一会帧动画又立刻显示,哪怕你把ImageView给Gone掉.

最后想出一个办法已解燃眉之急:

final ImageView iv = (ImageView) findViewById(R.id.iv);
iv.setImageResource(R.drawable.frame_anim_loading);
final AnimationDrawable anim = (AnimationDrawable) iv.getDrawable();
anim.start();

new Handler().postDelayed(new Runnable() {

    @Override
    public void run() {
        while (anim.isRunning()) {
            Log.d("anirm", anim.isRunning() + "");
            anim.stop();
            iv.setImageDrawable(null); //利用这句话彻底停止帧动画
        }
    }
}, 500);