美文网首页
动画合集之帧动画

动画合集之帧动画

作者: 巫师Android | 来源:发表于2020-09-18 10:28 被阅读0次

    1、概念

    帧动画是由N张静态图片依次显示而产生的。

    2、用法

    要实现帧动画,需要用到AnimationDrawable类。

    3、示例:

    效果图:


    帧动画展示

    实现步骤:
    1)在drawable中,创建frame_animation.xml。

    <?xml version="1.0" encoding="utf-8"?>
    <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
        android:oneshot="false">
    <!-- onshot:是否只播放一次-->
    
        <item android:drawable="@drawable/p1" android:duration="1000"/>
    
        <item android:drawable="@drawable/p2" android:duration="1000"/>
    
    </animation-list>
    

    oneshot:表示是否只播放一次,若是,动画会停在最后一帧

    2)将其设置为ImageView的background。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <Button
            android:id="@+id/btn_start"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="开始" />
    
        <Button
            android:id="@+id/btn_stop"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="停止" />
    
        <ImageView
            android:id="@+id/img_show"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:layout_gravity="center"
            android:background="@drawable/frame_animation" />
    
    </LinearLayout>
    

    3)在MainActivity中获取、启动动画。

    public class FrameAnimationActivity extends AppCompatActivity implements View.OnClickListener {
    
        private Button btnStart, btnStop;
        private ImageView imgShowFrame;
        private AnimationDrawable anim;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_frame_animation);
    
            initViews();
            anim = (AnimationDrawable) imgShowFrame.getBackground();
        }
    
        private void initViews() {
            btnStart = findViewById(R.id.btn_start);
            btnStop = findViewById(R.id.btn_stop);
            btnStart.setOnClickListener(this);
            btnStop.setOnClickListener(this);
    
            imgShowFrame = findViewById(R.id.img_show_frame);
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btn_start:
                    anim.start();
                    break;
                case R.id.btn_stop:
                    anim.stop();
                    break;
                default:
            }
        }
    }
    

    拓展:
    帧动画优化:https://github.com/ansen360/FrameAnimation

    写于:2020/09/18

    相关文章

      网友评论

          本文标题:动画合集之帧动画

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