Android ProgressBar 动图替代圆形进度条

一般情况下,都是使用一套连续图片,形成一个帧动画,当需要进度图的时候,让动画可见,不需要 的时候让动画不可见即可

范例


  1. 创建一个 空的 Android 项目 cn.twle.android.ProgressBarAnim

  2. 下载解压 /static/i/android/progressbar_gif.zip 并把所有的图片拖到 /res/drawable 目录下

  3. res/drawable 目录下新建一个 anim_pgbar.xml 的资源文件

    <?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_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>
    
  4. 修改 activity_main.xml 添加一个 ImageView

    <?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:gravity="center_horizontal" 
        android:orientation="vertical" >
    
        <Button android:id="@+id/btn_show"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="显示动画" />
    
        <Button android:id="@+id/btn_hide"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="隐藏动画" />
    
        <ImageView
            android:src="@drawable/anim_pgbar"
            android:id="@+id/loading"
            android:visibility="gone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
    </LinearLayout>
    
  5. 修改 MainActivity.java

    package cn.twle.android.progressbaranim;
    
    import android.graphics.drawable.AnimationDrawable;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    
        private ImageView loading;
        private Button btn_show;
        private Button btn_hide;
        private AnimationDrawable ad;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            loading = (ImageView) findViewById(R.id.loading);
            ad = (AnimationDrawable) loading.getDrawable();
    
            btn_hide = (Button) findViewById(R.id.btn_hide);
            btn_show = (Button) findViewById(R.id.btn_show);
    
            btn_show.setOnClickListener(this);
            btn_hide.setOnClickListener(this);
    
        }
    
        @Override
        public void onClick(View view) {
            switch (view.getId()) {
                case R.id.btn_show:
                    loading.setVisibility(View.VISIBLE);
                    ad.start();
                    break;
                case R.id.btn_hide:
                    loading.setVisibility(View.GONE);
                    ad.stop();
                    break;
            }
        }
    
    }
    

参考文档

官方 API 文档: ProgressBar

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.