欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

帧动画

程序员文章站 2022-03-16 19:01:46
...

转载请注明出处:https://blog.csdn.net/mr_leixiansheng/article/details/78730184


实现一个等待加载动画

步骤:

1、res下创建一个anim目录 新建动画xml文件

2、将需要播放动画的控件src设置为添加的动画文件

3、AnimationDrawable 获取动画资源、加载到需要播放动画的控件上

4、控制动画的播放和停止


代码如下:

1、res下创建一个anim目录 新建动画xml文件

<?xml version="1.0" encoding="utf-8"?>

<!--
    根标签为animation-list,其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画
    根标签下,通过item标签对动画中的每一个图片进行声明
    android:duration 表示展示所用的该图片的时间长度
 -->

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">

    <item android:drawable="@drawable/loading_01" android:duration="200"/>
    <item android:drawable="@drawable/loading_02" android:duration="200"/>
    <item android:drawable="@drawable/loading_03" android:duration="200"/>
    <item android:drawable="@drawable/loading_04" android:duration="200"/>
    <item android:drawable="@drawable/loading_05" android:duration="200"/>
    <item android:drawable="@drawable/loading_06" android:duration="200"/>
    <item android:drawable="@drawable/loading_07" android:duration="200"/>
    <item android:drawable="@drawable/loading_08" android:duration="200"/>
    <item android:drawable="@drawable/loading_09" android:duration="200"/>
    <item android:drawable="@drawable/loading_10" android:duration="200"/>
    <item android:drawable="@drawable/loading_11" android:duration="200"/>
    <item android:drawable="@drawable/loading_12" android:duration="200"/>

</animation-list>
2、将需要播放动画的控件src设置为添加的动画文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.leixiansheng.myprogressbar.MainActivity">

    <ImageView
        android:id="@+id/image_view"
        android:layout_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/image_pgbar" />
</RelativeLayout>
3、4、AnimationDrawable 获取动画资源、加载到需要播放动画的控件上

package com.leixiansheng.myprogressbar;

import android.graphics.drawable.AnimationDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
/**
 * 自定义progressbar ,animationDrawable动画代替
 * postDelayed :view自带handler, postDelayed 延时发送到主线程handler处理
 */
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ImageView imageView = (ImageView) findViewById(R.id.image_view);
//        imageView.setImageResource(R.drawable.image_pgbar); //java 实现动画资源添加(也可以直接在xml中设置src添加资源)
        final AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getDrawable();

        /**
         * 开始动画
         */
        imageView.postDelayed(new Runnable() {
            @Override
            public void run() {
                animationDrawable.start();
            }
        }, 100);

        /**
         * 取消动画,
         */
        imageView.postDelayed(new Runnable() {
            @Override
            public void run() {
                animationDrawable.stop();
                imageView.setVisibility(View.GONE);
            }
        }, 5000);
    }
}
帧动画