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>


相关文章
|
Java Shell 开发工具
Git快速入门+常用指令
Git快速入门+常用指令
98 0
|
9月前
|
SQL 数据采集 安全
扫描工具原理
扫描工具原理
|
安全 Java 关系型数据库
基于Java的超市进销存管理系统
基于Java的超市进销存管理系统
|
8月前
|
JavaScript 前端开发 测试技术
构建高效可维护的前端应用
构建高效可维护的前端应用
|
存储 Kotlin 容器
Kotlin 变量详解:声明、赋值与最佳实践指南
**Kotlin 变量简介** Kotlin 中使用 `var` 定义可变变量,`val` 定义常量。类型可自动推断,如 `var name = &quot;John&quot;`(String)和 `val birthyear = 1975`(Int)。`val` 一旦赋值不可变,`var` 则可变。变量名遵循驼峰命名法,且不能为保留字。`println()` 用于打印变量值。可使用 + 连接字符串或执行数学运算。
127 0
|
存储 分布式计算 数据挖掘
MaxCompute
MaxCompute是阿里云提供的一种大数据处理平台,它能够处理海量数据的存储和计算,提供PB级别的数据存储和处理能力。
1022 1
|
存储 弹性计算 固态存储
阿里云服务器CPU内存、系统盘和公网带宽大小怎么选合适?
阿里云服务器配置如何选择?个人用户选择ECS共享型s6云服务器,1核2G、2核4G配置即可,企业公司用户可以选择独享型ECS计算型c6、通用型g7等,4核8G、8核16G、4核32G等配置,阿里云百科来详细说下不同用户选择阿里云服务器配置避坑指南:
706 0
阿里云服务器CPU内存、系统盘和公网带宽大小怎么选合适?
|
算法 安全
常见的限流算法分析以及手写实现(计数器、漏斗、令牌桶)
限流是指在高并发、大流量请求的情况下,限制新的流量对系统的访问,从而保证系统服务的安全性。
1875 0
常见的限流算法分析以及手写实现(计数器、漏斗、令牌桶)
|
城市大脑 算法 数据可视化
从城云智慧停车看阿里云“被集成”战略的原动力
从城云智慧停车看阿里云“被集成”战略的原动力
767 0
从城云智慧停车看阿里云“被集成”战略的原动力
|
数据采集 缓存 监控
代理的基本原理和多线程的基本原理
代理的基本原理和多线程的基本原理