Android 自定义加载框dialog

本文介绍如何在Android应用中创建自定义的加载对话框,包括准备动画资源、定义布局文件和样式,以及在BaseActivity中实现加载对话框的显示与取消。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、首先准备好图片资源,写一个自定义的drawable(progress_drawable_white),实现动画功能。

<?xml version="1.0" encoding="utf-8"?>
<animation-list android:oneshot="false"
                xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_01" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_02" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_03" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_04" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_05" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_06" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_07" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_08" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_09" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_10" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_11" />
    <item android:duration="83" android:drawable="@drawable/ic_loading_white_12" />
</animation-list>

2、布局文件是少不了的,接着。。。(dialog_my)

<?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:background="@drawable/ic_loading_bg"
              android:gravity="center"
              android:orientation="vertical"
              android:padding="16.0dip" >

    <ProgressBar
            android:layout_width="30.0dip"
            android:layout_height="30.0dip"
            android:indeterminateDrawable="@drawable/progress_drawable_white" />

    <TextView
            android:id="@+id/id_tv_loadingmsg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginTop="8.0dip"
            android:textColor="#fff"
            android:textSize="16.0dip" />

</LinearLayout>
3、res包下values包需要之定义style(style_dialog)
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="progress_dialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:background">@null</item>
        <item name="android:windowBackground">@null</item>
        <item name="android:backgroundDimEnabled">false</item>
    </style>
</resources>

4、BaseActivity中书写公共的方法,以后项目中所有的Activity只要继承BaseActivity,只需调用方法就行了。加载提示的内容我写了两种,可以这样用,十分方便。

package com.sunday.myprogresdialog;

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.widget.TextView;

public class BaseActivity extends Activity {
	private Dialog progressDialog;

	/**
	 * Called when the activity is first created.
	 */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	}

	/**
	 * 
	 * @Description: TODO 自定义加载提示内容
	 * @param @param id
	 * @return void 用法buildProgressDialog(R.string.loding)
	 * @throws
	 * @author Sunday
	 * @date 2015年12月25日
	 */
	public void buildProgressDialog(int id) {
		if (progressDialog == null) {
			progressDialog = new Dialog(this, R.style.progress_dialog);
		}
		progressDialog.setContentView(R.layout.dialog_my);
		progressDialog.setCancelable(true);
		progressDialog.getWindow().setBackgroundDrawableResource(
				android.R.color.transparent);
		TextView msg = (TextView) progressDialog
				.findViewById(R.id.id_tv_loadingmsg);
		msg.setText(getString(id));
		progressDialog.show();
	}

	/**
	 * @Description: TODO 固定加载提示内容
	 * @author Sunday
	 */
	public void buildProgressDialog() {
		if (progressDialog == null) {
			progressDialog = new Dialog(this, R.style.progress_dialog);
		}
		progressDialog.setContentView(R.layout.dialog_my);
		progressDialog.setCancelable(true);
		progressDialog.getWindow().setBackgroundDrawableResource(
				android.R.color.transparent);
		TextView msg = (TextView) progressDialog
				.findViewById(R.id.id_tv_loadingmsg);
		msg.setText("卖力加载中");
		progressDialog.show();
	}

	/**
	 * @Description: TODO 取消加载框
	 * @author Sunday
	 * @date 2015年12月25日
	 */
	public void cancelProgressDialog() {
		if (progressDialog != null) {
			progressDialog.dismiss();
		}
	}
}

5、只需调用buildProgressDialog()和cancelProgressDialog()就能实现加载和取消了。


项目效果图


项目下载地址

MyProgressDialog

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端梦工厂+

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值