android 实现加载动画对话框

来源:互联网 发布:合肥骆岗机场知乎 编辑:程序博客网 时间:2024/05/03 00:27

先来两张效果图

      



自定义对话框:

public class LoadingProgressDialog extends ProgressDialog {private AnimationDrawable mAnimation;private Context mContext;private ImageView mImageView;private String mLoadingTitle;private TextView mLoadingTv;private int mResid;public LoadingProgressDialog(Context context, String content, int id) {super(context);this.mContext = context;this.mLoadingTitle = content;this.mResid = id;setCanceledOnTouchOutside(true);}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);initView();initData();}private void initData() {mImageView.setBackgroundResource(mResid);mAnimation = (AnimationDrawable) mImageView.getBackground();mImageView.post(new Runnable() {@Overridepublic void run() {mAnimation.start();}});mLoadingTv.setText(mLoadingTitle);}public void setContent(String str) {mLoadingTv.setText(str);}private void initView() {setContentView(R.layout.progress_dialog);mLoadingTv = (TextView) findViewById(R.id.loadingTv);mImageView = (ImageView) findViewById(R.id.loadingIv);}}

在layout文件夹下建立progress_dialog.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:gravity="center"    android:layout_gravity="center"    android:orientation="vertical">    <ImageView        android:id="@+id/loadingIv"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <TextView        android:id="@+id/loadingTv"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textColor="#ffffff"        android:textSize="20sp" /></LinearLayout>

在res文件夹下建立anim文件夹,然后在里面建立frame.xml

动画是由一张一张的图片逐帧播放的,里面每一个item就是一张图片,动画有多少帧就有多少张图片,有多少图片就有多少item。

<?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="100" />    <item        android:drawable="@drawable/loading_02"        android:duration="100" />    <item        android:drawable="@drawable/loading_03"        android:duration="100" />    <item        android:drawable="@drawable/loading_04"        android:duration="100" /></animation-list>

用法:

LoadingProgressDialog dialog =new LoadingProgressDialog(MainActivity.this, "正在加载中...",R.anim.frame);//打开dialog.show();//隐藏dialog.dismiss();

Demo地址:https://github.com/yangjie10930/LoadingAnim

0 0
原创粉丝点击