美文网首页
Android动画篇——Drawable Animation(帧

Android动画篇——Drawable Animation(帧

作者: 钟小明_ | 来源:发表于2019-04-02 19:47 被阅读0次

    OverView

    An object used to create frame-by-frame animations, defined by a series of Drawable objects, which can be used as a View object's background.

    定义多帧画面连续播放构成了帧动画。帧动画的应用场景不多,主要用在过于复杂而无法用代码实现的gif效果,如一些复杂度比较高的loading效果等。

    使用

    帧动画的定义非常简单

    <?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/loading_icon_1"
            android:duration="70"/>
        <item android:drawable="@drawable/loading_icon_2"
            android:duration="70"/>
        <item android:drawable="@drawable/loading_icon_3"
            android:duration="70"/>
        <item android:drawable="@drawable/loading_icon_4"
            android:duration="70"/>
    </animation-list>
    

    以animation-list作为根节点,每一个item就是一帧动画drawable对应一张图片资源。android:oneshot="false"指定只播放一次还是循环播放。

    使用同样很简单帧动画一般作为View的背景或者src来使用:

    <ImageView
            android:id="@+id/drawable_anim_iv"
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:layout_marginTop="32dp"
            android:src="@drawable/loading_animation_list"/>
    

    需要注意的是即使设置为background了帧动画也不会自动播放,需要我们start一下。

    AnimationDrawable animationDrawable = (AnimationDrawable)(drawableAnimIV.getDrawable());
    
    if(animationDrawable.isRunning()){
       animationDrawable.stop();
    } else{
       animationDrawable.start();
    }
    

    需要注意的是start()方法不能用来Activity的onCreate中,因为此时页面还没渲染完。通常放到onWindowFocusChanged()方法中处理比较合适,当然这也要看你的具体需求。

    相关文章

      网友评论

          本文标题:Android动画篇——Drawable Animation(帧

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