zoukankan      html  css  js  c++  java
  • 一手遮天 Android

    项目地址 https://github.com/webabcd/AndroidDemo
    作者 webabcd

    一手遮天 Android - Animation: 帧动画(Drawable Animation)

    示例如下:

    /animation/AnimationDemo4.java

    /**
     * 帧动画(Drawable Animation)
     * Drawable Animation(帧动画)即 Frame Animation(逐帧动画)
     *
     *
     * AnimationDrawable - 帧动画,继承自 Drawable(在 xml 定义的各种帧动画均需要放在 res/drawable 目录下)
     *     start(), stop() - 启动动画,停止动画
     *     setOneShot(boolean oneShot) - 帧动画是否只播放一次(false 代表循环播放)
     *     addFrame(Drawable frame, int duration) - 添加帧(需要指定帧图片和显示时长,显示时长的单位是毫秒)
     *     isRunning() - 帧动画是否在运行中
     */
    
    package com.webabcd.androiddemo.animation;
    
    import android.graphics.drawable.AnimationDrawable;
    import android.graphics.drawable.Drawable;
    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.ImageView;
    
    import com.webabcd.androiddemo.R;
    import com.webabcd.androiddemo.utils.Helper;
    
    public class AnimationDemo4 extends AppCompatActivity {
    
        private ImageView mImageView1;
        private ImageView mImageView2;
        private ImageView mImageView3;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_animation_animationdemo4);
    
            mImageView1 = findViewById(R.id.imageView1);
            mImageView2 = findViewById(R.id.imageView2);
            mImageView3 = findViewById(R.id.imageView3);
    
            sample1();
            sample2();
            sample3();
        }
    
        // 启动一个帧动画(帧动画定义在 xml 中,且在 xml 中绑定到 ImageView)
        private void sample1() {
            // 获取 ImageView 上绑定的帧动画
            AnimationDrawable animationDrawable = (AnimationDrawable) mImageView1.getBackground();
            // 如果帧动画未运行,则启动帧动画
            if (!animationDrawable.isRunning()) {
                animationDrawable.start();
            }
        }
    
        // 启动一个帧动画(帧动画定义在 xml 中,然后在 java 中绑定到 ImageView)
        private void sample2() {
            // 获取帧动画
            AnimationDrawable animationDrawable = (AnimationDrawable) this.getDrawable(R.drawable.animationlist_animationdemo4);
            // 绑定帧动画
            mImageView2.setBackground(animationDrawable);
            // 启动帧动画
            animationDrawable.start();
        }
    
        // 启动一个帧动画(帧动画定义在 java 中,且在 java 中绑定到 ImageView)
        private void sample3() {
            // 定义一个帧动画
            AnimationDrawable animationDrawable = new AnimationDrawable();
            int[] ids = {R.drawable.img_sample_son, R.drawable.img_dialog_original, R.drawable.img_thread_state};
            for (int i = 0; i < 3; i++) {
                Drawable frame = Helper.id2drawable(this, ids[i]);
                animationDrawable.addFrame(frame, (i + 1) * 100);
            }
            animationDrawable.setOneShot(false);
    
            // 绑定帧动画
            mImageView3.setBackground(animationDrawable);
            // 启动帧动画
            animationDrawable.start();
        }
    }
    
    

    /layout/activity_animation_animationdemo4.xml

    <?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">
    
        <!--
            background - 指定 ImageView 的帧动画(默认只显示第一帧,需要在 java 中启动动画)
        -->
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/animationlist_animationdemo4"/>
    
        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    
        <ImageView
            android:id="@+id/imageView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    
    </LinearLayout>
    
    

    /drawable/animationlist_animationdemo4.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!--
        animation-list - 帧动画
            oneshot - 是否只播放一次(false 代表循环播放)
            item - 帧
                duration - 此帧显示的时长(单位:毫秒)
                drawable - 此帧显示的图片
    -->
    <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
        android:oneshot="false">
        <item android:duration="100" android:drawable="@drawable/img_sample_son" />
        <item android:duration="200" android:drawable="@drawable/img_dialog_original" />
        <item android:duration="300" android:drawable="@drawable/img_thread_state" />
    </animation-list>
    

    项目地址 https://github.com/webabcd/AndroidDemo
    作者 webabcd

  • 相关阅读:
    tar命令,vi编辑器
    Linux命令、权限
    Color Transfer between Images code实现
    利用Eclipse使用Java OpenCV(Using OpenCV Java with Eclipse)
    Matrix Factorization SVD 矩阵分解
    ZOJ Problem Set
    Machine Learning
    ZOJ Problem Set
    ZOJ Problem Set
    ZOJ Problem Set
  • 原文地址:https://www.cnblogs.com/webabcd/p/android_animation_AnimationDemo4.html
Copyright © 2011-2022 走看看