android 实现加载动画对话框

本文展示了如何在Android中创建自定义加载动画对话框。通过布局文件progress_dialog.xml设计对话框,并利用多张图片实现逐帧播放的动画效果。
摘要由CSDN通过智能技术生成

先来两张效果图

      



自定义对话框:

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);
	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		initView();
		initData();
	}

	private void initData() {

		mImageView.setBackgroundResource(mResid);
		mAnimation = (AnimationDrawable) mImageView.getBackground();
		mImageView.post(new Runnable() {
			@Override
			public 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值