`
Bauble
  • 浏览: 67352 次
  • 性别: Icon_minigender_1
  • 来自: Mercury
社区版块
存档分类
最新评论

Android40_Dialog

阅读更多

DialogAndroid常用的对话框控件。AlertDialog对话框是Dialog的子类,它提供一个图标,一个标题,一个文本和3个按钮。以前用过的DatePickerDialogTimePickerDialogDialog的间接子类。ProgressDialogAlertDialog类的一个扩展,可以为一个未定义进度的任务显示一个旋转轮形状的进度动画,或者为一个指定进度的任务显示一个进度条。

一、AlertDialog使用方法

       1.创建对话框

              setIcon:创建图标;setTitle:设置标题;setMessage:设置内容;setPositiveButton:响应Yes/Ok的点击,setNeutralButton:响应中立行为的点击,setNegativeButton:响应No/Cancel的点击。都需要传进去一个OnClickListener的对象。

dialog = new AlertDialog.Builder(this)
    	.setIcon(android.R.drawable.btn_star).setTitle("这是一个警告对话框")
    	.setMessage("确定要退出吗?")
    	.setPositiveButton("是", dbl)
    	.setNegativeButton("否", dbl)
    	.setNeutralButton("取消", dbl).create(); 

       2.准备显示对话框,这是一个可选的回调函数。 如果你想在每一次对话框被打开时改变它的任何属性,你可以定义这个方法。这个方法在每次打开对话框时被调用,而onCreateDialog(int) 仅在对话框第一次打开时被调用。如果你不定义onPrepareDialog(),那么这个对话框将保持和上次打开时一样。这个方法也被传递以对话框的ID,和在onCreateDialog()中创建的对话框对象。即对话框对象每次运行之后创建一次,不会每次调用都创建,所以只能在onPrepareDialog中更改。

// 每次显示对话框之前会被调用
@Override
public void onPrepareDialog(int id, Dialog dialog){
    Toast.makeText(this, "onPrepareDialog方法被调用",
		Toast.LENGTH_LONG).show();
super.onPrepareDialog(id, dialog);
} 

       3. 添加对话框中按钮点击事件的监听器,点击取消按钮Dialog.BUTTON_NEUTRAL不会调用OnCancelListener

// 对话框按钮点击事件监听器
class DialogButtonListener implements DialogInterface.OnClickListener{
	public void onClick(DialogInterface dialog, int which) {
        switch (which) {
        case Dialog.BUTTON_NEGATIVE:
            Toast.makeText(AlertDialogActivity.this, "不退出",
				Toast.LENGTH_LONG).show();
            break;
        case Dialog.BUTTON_NEUTRAL:
            Toast.makeText(AlertDialogActivity.this, "取消",
				Toast.LENGTH_LONG).show();
            break;
        case Dialog.BUTTON_POSITIVE:
            Toast.makeText(AlertDialogActivity.this, "退出",
				Toast.LENGTH_LONG).show();
            break;
        }
    }
} 

  4.显示对话框

showDialog(DIALOG_ID);

  同样也可以消除对话框和移除对话框,移除对话框会同时调用注册的OnCancelListener,即删除对话框对象,而消除对话框则不会删除dialog对象,下次调用的时候还是这个对象:

//消除对话框
dismissDialog(DIALOG_ID);
//移除对话框
removeDialog(DIALOG_ID);

 完整代码:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<Button 
	android:id="@+id/showdialog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="弹出对话框"
/>
<Button 
	android:id="@+id/deletedialog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="关闭对话框"
/>
<Button 
	android:id="@+id/removedialog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="移除对话框"
/>
</LinearLayout>

 AlertDialogActivity.java

package com.android.activity;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class AlertDialogActivity extends Activity {
	private Button showDialog = null;
	private Button deleteDialog = null;
	private Button removeDialog = null;
	private Dialog dialog = null;
	DialogButtonListener dbl = null;
	private static final int DIALOG_ID = 1;
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        showDialog = (Button)findViewById(R.id.showdialog);
        deleteDialog = (Button)findViewById(R.id.deletedialog);
        removeDialog = (Button)findViewById(R.id.removedialog);
        dbl = new DialogButtonListener();
        showDialog.setOnClickListener(new ShowButtonListener());
        deleteDialog.setOnClickListener(new DeleteButtonListener());
        removeDialog.setOnClickListener(new RemoveButtonListener());
    }
	// 创建会话框时调用
    @Override
    public Dialog onCreateDialog(int id) {
        Toast.makeText(this, "onCreateDialog方法被调用", 
			Toast.LENGTH_LONG).show();
        dialog = new AlertDialog.Builder(this)
    			.setIcon(android.R.drawable.btn_star)
			.setTitle("这是一个警告对话框!")
    			.setMessage("确定要退出吗?")
    			.setPositiveButton("是", dbl)
    			.setNegativeButton("否", dbl)
    			.setNeutralButton("取消", dbl).create();
        return dialog;
    }
    // 每次显示对话框之前会被调用
    @Override
    public void onPrepareDialog(int id, Dialog dialog){
        Toast.makeText(this, "onPrepareDialog方法被调用", 
			Toast.LENGTH_LONG).show();
         super.onPrepareDialog(id, dialog);
    }
	// 对话框按钮点击事件监听器
	class DialogButtonListener implements DialogInterface.OnClickListener{
        public void onClick(DialogInterface dialog, int which) {
            switch (which) {
            case Dialog.BUTTON_NEGATIVE:
                Toast.makeText(AlertDialogActivity.this, 
					"不退出",Toast.LENGTH_LONG).show();
                break;
            case Dialog.BUTTON_NEUTRAL:
                Toast.makeText(AlertDialogActivity.this, 
					"取消",Toast.LENGTH_LONG).show();
                break;
            case Dialog.BUTTON_POSITIVE:
                Toast.makeText(AlertDialogActivity.this, 
					"退出",Toast.LENGTH_LONG).show();
                break;
            }
        }
	}
    //弹出对话框按钮监听器
    class ShowButtonListener implements OnClickListener{
		public void onClick(View v) {
			//显示对话框
			showDialog(DIALOG_ID);
		}
    }
    //关闭对话框按钮监听器
    class DeleteButtonListener implements OnClickListener{
		public void onClick(View v) {
			 //关闭对话框
			 dismissDialog(DIALOG_ID);
		}
    }
    //移除对话框按钮监听器
    class RemoveButtonListener implements OnClickListener{
		public void onClick(View v) {
			//移除对话框 ,会同时调用注册的OnCancelListener()
			removeDialog(DIALOG_ID);
		}
    }
}

 运行结果:

 

二、ProgressDialog使用方法

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<Button android:text="圆形进度对话框" 
	android:id="@+id/spinnerprogress" 
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content"/>
<Button android:text="长方形进度对话框" 
	android:id="@+id/horizonalprogress" 
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content"/>
</LinearLayout> 

ProgressDialogActivity.java

package com.android.activity;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class ProgressDialogActivity extends Activity {
	private Button spinnerProgress = null;
	private Button horizonalProgress = null;
	private ProgressDialog progressDialog = null;
	private ProgressDialog progressDialog2 = null;
	int count = 0;
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        spinnerProgress = (Button)findViewById(R.id.spinnerprogress);
        horizonalProgress = 
			(Button)findViewById(R.id.horizonalprogress);
        spinnerProgress.setOnClickListener(new SpinnerProgress());
        horizonalProgress.setOnClickListener(new HorizonalProgress());
    }
	class SpinnerProgress implements OnClickListener{
		public void onClick(View view) {
			//创建ProgressDialog对象
			progressDialog = new ProgressDialog(
				ProgressDialogActivity.this);
            //设置进度条风格,风格为圆形,旋转的
			progressDialog.setProgressStyle(
				ProgressDialog.STYLE_SPINNER);
            //设置ProgressDialog 标题
			progressDialog.setTitle("下载");
            //设置ProgressDialog 提示信息
			progressDialog.setMessage("这是一个圆形进度条对话框");
            //设置ProgressDialog 标题图标
			progressDialog.setIcon(android.R.drawable.btn_star);
            //设置ProgressDialog 的进度条是否不明确
			progressDialog.setIndeterminate(false);
            //设置ProgressDialog 是否可以按退回按键取消
			progressDialog.setCancelable(true);
			//设置取消按钮
			progressDialog.setButton("取消", 
				new ProgressDialogButtonListener());
            // 让ProgressDialog显示
			progressDialog.show();
		}
	}
	class ProgressDialogButtonListener 
			implements DialogInterface.OnClickListener{
		public void onClick(DialogInterface dialog, int which) {
			//点击"取消按钮"取消对话框
            dialog.cancel();
		}
		
	}
	class HorizonalProgress implements OnClickListener{
		public void onClick(View view) {
			progressDialog2 = new ProgressDialog(
				ProgressDialogActivity.this);
            //设置进度条风格,风格长方形的
			progressDialog2.setProgressStyle(
				ProgressDialog.STYLE_HORIZONTAL);
			progressDialog2.setTitle("下载");
			progressDialog2.setMessage("这是一个长方形进度条对话框");
			progressDialog2.setIcon(android.R.drawable.btn_star);
			progressDialog2.setIndeterminate(false);
			progressDialog2.setCancelable(true);
			progressDialog2.setButton("取消", 
				new ProgressDialogButtonListener());
			progressDialog2.show();
			Thread t = new Thread(new ProgressThread());
			t.start();
		}
	}
	class ProgressThread implements Runnable{
		public void run() {
			try{
                while (count <= 100){
                    // 由线程来控制进度。
                	progressDialog2.setProgress(count++);
                    Thread.sleep(100);
                }
    			progressDialog2.setMessage("下载完成");
            }catch (InterruptedException e){
            	progressDialog2.cancel();
            }
		}
	}
} 

运行结果:

 

 

  • 大小: 44.5 KB
  • 大小: 42.3 KB
  • 大小: 45 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    material-dialogs_material-dialogs_dialog_android开发_material_

    在Android应用开发中,Material Design是一种广泛采用的设计语言,它由Google提出,旨在提供一致、直观且富有表现力的用户体验。"material-dialogs"库是专门为Android开发者设计的一个组件,它实现了Material Design...

    date_picker_dialog

    `date_picker_dialog`是一个专门为Android平台设计的日期选择对话框组件,旨在简化开发者集成日期选择功能的过程。在这个压缩包中,你将找到一个可以直接使用的日期选择控件实现,帮助你快速地在应用中添加这一功能...

    iOS_Dialog_Library.zip

    在这种情况下,"iOS_Dialog_Library.zip"是一个专为Android设计的第三方库,它允许开发者创建类似于iOS7风格的底部弹出对话框,通常在QQ等应用中可见。这个库可以帮助你在Android应用中实现这种独特的交互方式,从而...

    Android_Dialog测试代码

    在Android开发中,Dialog是一种非常重要的组件,它用于在用户界面中显示临时信息或与用户进行交互。在本文中,我们将深入探讨如何在Android中创建和测试Dialog,并基于提供的资源"TestDialog"来理解相关代码。 首先...

    Android_Dialog倒计时可任意设定时间

    在Android开发中,`Dialog`是一种非常常用的组件,它用于在主界面之上显示临时的通知或者让用户进行简单的交互。本文将详细讲解如何在Android中创建一个可以任意设定时间的倒计时`Dialog`。 首先,我们需要了解`...

    Android(Dialog).zip_android_android Dialog

    在Android开发中,Dialog是一个非常重要的组件,它用于在用户界面中显示临时的、轻量级的窗口,通常用于向用户展示信息或者请求用户的输入。本篇内容将深入探讨Android中的Dialog及其各种类型,帮助开发者更好地理解...

    各种android弹出dialog效果以及各种dialog样式

    各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果...

    android中load_Toast_dialog

    在Android开发中,`load`、`Toast`和`Dialog`是三个非常关键的组件,它们各自承担着不同的功能,并且在用户界面交互中扮演着重要角色。让我们深入了解一下这三个概念以及如何在Android应用程序中使用它们。 首先,...

    自定义控件_Dialog

    在Android中,Dialog是继承自`android.app.Dialog`类的,它是Activity的一个浮动窗口,通常用于打断用户的操作流程,但不会完全阻断与主界面的交互。创建一个Dialog的基本步骤包括:创建Dialog实例,设置布局,然后...

    Android应用源码之dialog去除边框代码_dialog.zip

    在Android应用开发中,对话框(Dialog)是用户界面中常用的一种组件,它通常用于向用户展示临时信息或进行简单的交互。本示例主要关注如何去除Android Dialog的默认边框,使其看起来更加简洁和符合现代设计风格。...

    Custom_Dialog_Usage

    在Android开发中,自定义Dialog是一种常见的需求,用于提供与用户交互的个性化界面。`Custom_Dialog_Usage`这个主题正是关注如何在Android应用中创建并使用自定义对话框。通常,系统默认的Dialog样式可能无法满足...

    android安卓app已经放弃使用Theme.Dialog,改用Theme.Holo.DialogWhenLarge

    "Theme.Dialog"和"Theme.Holo.DialogWhenLarge"都是Android系统提供的两种不同的对话框主题。本篇文章将详细探讨这两种主题的区别,以及为何Android应用可能选择从"Theme.Dialog"转向"Theme.Holo.DialogWhenLarge"。...

    Android自定义loading Dialog

    在Android开发中,自定义组件是一项常见的需求,特别是在创建用户界面时,为了提供更好的用户体验,开发者经常需要定制一些特殊的对话框(Dialog)。本教程将详细讲解如何实现一个自定义的加载对话框(Loading ...

    Android 控制关闭Dialog

    在Android开发中,Dialog是一种常见的用户交互元素,用于在用户界面中显示临时信息或进行简单的交互操作。通常,当我们使用AlertDialog构建一个对话框时,它的默认行为是在用户点击按钮(如"确定"或"取消")后自动...

    android自定义全屏dialog

    在Android开发中,自定义全屏Dialog是一种常见的需求,它能提供更为丰富的用户体验,比如用于展示大图或者视频预览。本篇文章将深入探讨如何在Android中实现一个自定义的全屏Dialog,以及如何实现全屏显示图片的功能...

    android_dialog

    在Android开发中,Dialog是一种非常重要的组件,它用于在用户界面中显示临时的、轻量级的窗口,通常用于向用户展示警告、确认信息或提供简单的选择操作。"android_dialog"是一个示例项目,旨在演示如何在Android应用...

    Android 底部弹出dialog+动画

    在Android开发中,底部弹出Dialog是一种常见的交互方式,它用于显示临时信息或者提供用户一些简短的操作选项。本文将详细讲解如何实现一个带有动画效果的底部弹出Dialog,并通过具体的代码实例进行演示。 首先,...

    Android_对话框(Dialog)大全

    在Android开发中,对话框(Dialog)是一种常见且重要的组件,用于向用户展示临时的通知、询问或确认信息。对话框通常不会占据整个屏幕,而是悬浮于应用内容之上,引导用户进行交互。本篇文章将深入探讨如何在Android...

Global site tag (gtag.js) - Google Analytics