Android 自定义ProgressDialog

本文介绍如何在Android中自定义ProgressDialog,包括创建进度动画、定制样式及实现代码,并提供使用示例。

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

Android系统自带的Dialog实在是难看得可怕..项目参数没有下来,实在闲着无聊,重写个ProgressDialog

首先前期准备,先弄个Progress进度圈的Anim

<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"  
    android:drawable="@drawable/publicloading"  
    android:fromDegrees="0"  
    android:pivotX="50.0%"  
    android:pivotY="50.0%"  
    android:toDegrees="360" /> 
进度圈的图片


然后我们再定制样式

       <!-- 自定义loading dialog  wrz-->  
           <style name="CustomDialog" parent="@android:style/Theme.Dialog">  
            <item name="android:windowFrame">@null</item>  
            <item name="android:windowIsFloating">true</item>  
            <item name="android:windowContentOverlay">@null</item>  
            <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>  
            <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>  
        </style>  
<style name="CustomProgressDialog" parent="@style/CustomDialog">  
            <item name="android:windowBackground">@drawable/loading_bg</item>  
            <item name="android:windowNoTitle">true</item>  
        </style>  

xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/dialog_view"   
    android:orientation="vertical"  
    android:layout_width="fill_parent"   
    android:layout_height="fill_parent"  
    android:minHeight="60dp"  
    android:minWidth="180dp"  
    android:gravity="center"  
    android:padding="10dp"  
    >  
   <ProgressBar  
        android:id="@+id/loadingImageView"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_marginTop="10dp"
        android:layout_gravity="center_horizontal"
        android:indeterminateDrawable="@anim/loading_animation" />  
     <TextView  
        android:id="@+id/id_tv_loadingmsg"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_gravity="center_horizontal"  
        android:layout_marginTop="5dp"
        android:textColor="@android:color/tertiary_text_light"  
        android:textSize="18dp"
        android:text="数据载入中.." />  

</LinearLayout>


代码如下,继承Dialog


import android.app.Dialog;
import android.content.Context;
import android.view.Gravity;
import android.widget.TextView;

/**
 * 自定义progressDialog
 * @author wrz
 * @time 2016.5.16
 */
public class CustomProgressDialog extends Dialog {  
    public CustomProgressDialog(Context context, String strMessage) {  
        this(context, R.style.CustomProgressDialog, strMessage);  
    }  
  
    public CustomProgressDialog(Context context, int theme, String strMessage) {  
        super(context, theme);  
        this.setContentView(R.layout.loading_dialog);  
        this.getWindow().getAttributes().gravity = Gravity.CENTER;  
        TextView tvMsg = (TextView) this.findViewById(R.id.id_tv_loadingmsg);  
        if (tvMsg != null) {  
            tvMsg.setText(strMessage);  
        }  
    }  
  
    @Override  
    public void onWindowFocusChanged(boolean hasFocus) {  
  
        if (!hasFocus) {  
            dismiss();  
        }  
    }  
}


代码运用

Dialog mDlgProgress= new CustomProgressDialog(context,message);
mDlgProgress.show();


好了,搞定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值