ProgressDialog(五)——自定义ProgressDialog

简介: MainActivity如下: package cn.testprogressdialog;import android.app.Activity;import android.

MainActivity如下:

package cn.testprogressdialog;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.os.Bundle;
import android.view.Window;
/**
 * Demo描述:
 * 自定义ProgressDialog
 * 
 * 备注说明:
 * 在此处progressDialog.setOnCancelListener(){}
 * 并没有起到按下back键盘使风火轮消失的作用.
 * 因为在initDialog(Context context)中设置了
 * dialog.setCancelable(false);
 * 若需要此功能,注释掉该句代码即可.
 */
public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Dialog progressDialog=initDialog(MainActivity.this);
		progressDialog.setOnCancelListener(new OnCancelListener() {
			@Override
			public void onCancel(DialogInterface dialog) {
				dialog.dismiss();
				//其余业务逻辑
			}
		});
		progressDialog.show();
	}

	public Dialog initDialog(Context context) {
		Dialog dialog = new DialogSubClass(MainActivity.this, R.style.dialog);
		dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
		dialog.setCanceledOnTouchOutside(false);
		dialog.setCancelable(false);
		return dialog;
	}

}

DialogSubClass如下:

package cn.testprogressdialog;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
public class DialogSubClass extends Dialog {
	public DialogSubClass(Context context, int theme) {
		super(context, theme);
	}

	protected DialogSubClass(Context context, boolean cancelable,OnCancelListener cancelListener) {
		super(context, cancelable, cancelListener);
	}

	public DialogSubClass(Context context) {
		super(context);
	}
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		View view = LayoutInflater.from(getContext()).inflate(R.layout.dialoglayout, null);
		setContentView(view);
	}
	
	@Override
	public void show() {
		super.show();
	}
	
	@Override
	public void dismiss() {
		super.dismiss();
	}
	
	public void setMsg(String txt) {
		
	}

}

dialoglayout.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="loading"
        android:textSize="20sp"
        android:layout_below="@id/progressBar"
        android:layout_marginTop="-5dip"
        android:layout_centerHorizontal="true"
        android:textColor="@android:color/black" 
        />

</RelativeLayout>

styles.xml如下:

<resources>

    <style name="AppBaseTheme" parent="android:Theme.Light"></style>

    <style name="AppTheme" parent="AppBaseTheme"></style>
    
    <style name="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:windowBackground">@android:color/transparent</item>
        <item name="android:backgroundDimEnabled">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>

</resources>

main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="测试自定义ProgressDialog"
        android:layout_centerHorizontal="true"
        android:textSize="24sp"
    />

</RelativeLayout>


相关文章
Dialog和DialogFragment 设置背景透明
Dialog和DialogFragment 设置背景透明
1040 0
Snackbar使用详解
Snackbar使用详解
254 0
Snackbar使用详解
|
XML Android开发 数据格式
Snackbar详解
Snackbar是什么 Snackbar是Design Support Library库中的一个控件它是用来替代Toast的一个全新的控件,Snackbar与Toast最大的区别是Snackbar支持点击和滑动和滑动消失,如果用户没有进行操作它也会在到达指定时间后自动消失。
1602 0
|
Android开发
Android弹窗二则: PopupWindow和AlertDialog
前言 弹窗是图形界面必备的一个模块, 回忆一下windows那些恶心爆了的错误弹窗吧, 把弹窗制作的更高效友好一点是非常必要的. 这里说两个常用的弹窗类, PopupWindow和AlertDialog.
1156 0