Android ProgressBar 动图替代圆形进度条
一般情况下,都是使用一套连续图片,形成一个帧动画,当需要进度图的时候,让动画可见,不需要 的时候让动画不可见即可
范例
-
创建一个 空的 Android 项目
cn.twle.android.ProgressBarAnim
-
下载解压 /static/i/android/progressbar_gif.zip 并把所有的图片拖到
/res/drawable
目录下 -
在
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>
-
修改
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>
-
修改
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