Android 中LoadingDialog使用

本文介绍了如何在Android项目中创建一个CustomDialog子类LoadingDialog,展示一个加载中的界面,并在异步操作完成后自动消失。涉及了继承Dialog类、设置布局和在Activity中使用的方法。

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

  1. 首先,在您的项目中创建一个新的CustomDialog类,并继承Dialog类。命名为LoadingDialog.java
  2. import android.app.Dialog;
    import android.content.Context;
    import android.graphics.Color;
    import android.graphics.drawable.ColorDrawable;
    import android.os.Bundle;
    import android.view.Window;
    
    public class LoadingDialog extends Dialog {
        public LoadingDialog(Context context) {
            super(context);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.dialog_loading);
            setCancelable(false);
            getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        }
    }

  3. 在res目录下创建layout文件夹,并在其中创建dialog_loading.xml文件。
  4. <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="16dp">
    
        <ProgressBar
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:indeterminate="true"
            android:indeterminateTint="@color/colorAccent" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="16dp"
            android:text="Loading..."
            android:textColor="@android:color/black" />
    </RelativeLayout>

  5. 在Activity中使用LoadingDialog。
  6. <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="16dp">
    
        <ProgressBar
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:indeterminate="true"
            android:indeterminateTint="@color/colorAccent" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="16dp"
            android:text="Loading..."
            android:textColor="@android:color/black" />
    </RelativeLayout>

  7. 在异步操作完成后,调用dismiss()方法隐藏LoadingDialog
public class MainActivity extends AppCompatActivity {
    private LoadingDialog loadingDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 创建LoadingDialog实例
        loadingDialog = new LoadingDialog(this);
        
        // 模拟异步操作,延迟2秒后隐藏LoadingDialog
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                // 隐藏LoadingDialog
                loadingDialog.dismiss();
            }
        }, 2000);

        // 显示LoadingDialog
        loadingDialog.show();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值