转过来的贴,不想动原文,划分了原文的模块!添加了代码和效果。在此为勒些共享技术的程序员表示由衷的感谢和诚挚的问候!
原帖:
http://hi.baidu.com/leran0222/blog/item/b5395a4b908628fa83025c7e.html
(原文)
/**
用户可以继承Dialog类或者它的子类并且创建一个新的layout。
Showing a Dialog
Dialog总是作为一个Activity的一部分来创建和显示的。正常可以使用Activity的onCreateDialog(int)回调函数来创建Dialog。使用这个回调函数的时候,系统会自动管理每个dialog的状态,并把它们关联到这个Activity,有效的使它成为dialog的所有者。这样每个第啊咯个都从父Activity继承一些属性。For example, when a dialog is open, the Menu key reveals the options menu defined for the Activity and the volume keys modify the audio stream used by the Activity.
注意:如果你在onCreate()之外创建dialog,他不会附属于任何的Activity,可以使用dialog的setOwnerActivity(Activity)来设置。
当想显示一个dialog的时候,调用showDialog(int),并传递一个整数来唯一标识想要显示的dialog即可。
当第一次使用一个dialog的时候,Android会调用onCreateDialog(int),应该在这里创建dialog。这个回调方法的参数是你传递给showDialog(int)的id。创建Dialog结束后,返回这个dialog对象。
在现实一个dialog之前,Android会先用可选的回调非法onPrepareDialog(int)。如果想在每次打开dialog的时候改变它的属性就可以通过重写这个方法来实现。他会在每次打开dialog的时候被调用,而onCreateDialog(int)只在第一次打开一个dialog的时候调用。如果不定义onPrepareDialog(),那么dialog将保持塌方上次被打开的属性。This method is also passed the dialog's ID, along with the Dialog object you created in onCreateDialog()。
创建Dialog的Example:
static final int DIALOG_PAUSED_ID = 0;
static final int DIALOG_GAMEOVER_ID = 1;
protected Dialog onCreateDialog(int id) {
Dialog dialog;
switch(id) {
case DIALOG_PAUSED_ID:
// do the work to define the pause Dialog
break;
case DIALOG_GAMEOVER_ID:
// do the work to define the game over Dialog
break;
default:
dialog = null;
}
return dialog;
}
显示创建的dialog:showDialog(DIALOG_PAUSED_ID);
**/
/**
这里我贴一段代码,一切尽在代码中:
public class DialogAppActivity extends Activity implements android.view.View.OnClickListener{
private Button btn1,btn2,btn3,dialogbtn;
private Context context;
private Integer DIALOG_ID;
private Boolean DIALOG_IS_OPEN = false;
AlertDialog dialog = null;
AlertDialog.Builder builder = null;
View dialogview = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
context = this;
dialogview = getView();
init();
}
public void init(){
btn1 = (Button) findViewById(R.id.btn1);
btn2 = (Button) findViewById(R.id.btn2);
btn3 = (Button) findViewById(R.id.btn3);
dialogbtn = (Button) dialogview.findViewById(R.id.dialogbtn);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
dialogbtn.setOnClickListener(this);
builder = new AlertDialog.Builder(context);
builder.setView(dialogview);
dialog = builder.create();
}
public void onClick(View arg0) {
// TODO Auto-generated method stub
switch (arg0.getId()) {
case R.id.btn1:
DIALOG_ID = 1;
break;
case R.id.btn2:
DIALOG_ID = 2;
break;
case R.id.btn3:
DIALOG_ID = 3;
break;
case R.id.dialogbtn:
//把 removeDialog(DIALOG_ID)改为dismissDialog(DIALOG_ID)
//或者dialog.cancle,dialog.dismiss,看完效果就懂下文介绍dismiss的内容
removeDialog(DIALOG_ID);
break;
}
if(arg0.getId()!=R.id.dialogbtn){
dialogbtn.setText("Click DIALOG_ID :"+String.valueOf(DIALOG_ID));
showDialog(DIALOG_ID);
}
}
@Override
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
switch (id) {
case 1:
dialog.setTitle("Demo one");
dialog.setMessage("第一个Dialog");
break;
case 2:
dialog.setTitle("Demo two");
dialog.setMessage("第二个Dialog");
break;
case 3:
dialog.setTitle("Demo three");
dialog.setMessage("第三个Dialog");
break;
default:
break;
}
return dialog;
}
public View getView(){
return LayoutInflater.from(DialogAppActivity.this).inflate(R.layout.dialog_layout, null);
}
}
//dialog_layout.xml布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/dialogbtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
//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/btn1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Demo1"
/>
<Button
android:id="@+id/btn2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Demo2"
/>
<Button
android:id="@+id/btn3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Demo3"
/>
</LinearLayout>
**/
Dismissing a Dialog
当准备关闭dialog的时候,可以调用dialogobject的dismiss()方法。如果必要,可以调用Activity的dismissDialog(int),它会有效的调用dialog的dismiss()。
如果你使用onCreateDialog(int)来管理dialog的状态,那么每次关闭dialog的时候,dialog的状态都会被Activity保存。如果这个dialog不会再次被使用或者清除它的状态很重要,可以调用removeDialog(int),这回清除内部任何对它的引用,如果它正在显示,会被关闭。
Using dismiss listeners
如果想在dialog被关闭的时候执行一些操作,应该为dialog设置on-dismiss listener。
首先定义DialogInterfacev.OnDismissListener接口。这个接口只有一个方法,vonDismiss(DialogInterface),当关闭dialog的时候会调用这个方法。把OnDismissListener的实现传递给setOnDismissListener()就可以了。
注意,dialog可以被取消。这是由用户显示取消dialog的特殊情况,在用户点击back键或者显示调用cancel()函数就是这种情况。当dialog被cancel的时候,OnDismissListener不会被通知,如果你想知道dialog被显示的cancel(不是正常的关闭),那么你应该用setOnCancel()注册一个vDialogInterface.OnCancelListener。
Creating an AlertDialog
AlertDialog是Dialog的子类,它可以构造用户交互的多数dialog,是建议的dialog类型。下列情况可以使用AldertDialog:
A tittle;
A text message;
One,two,or three buttons;
A list of selectable items (with optional checkboxes or radio buttons)
可以使用AlertDialog.Builder的子类来创建AlertDialog。通过AlertDialogBuilder(Context)来创建一个builder并使用这个builder的public方法来定义AlertDialog的所有属性。在使用builder创建结束后,使用create()来得到创建的AlertDialog对象。
The following topics show how to define various properties of the AlertDialog using the AlertDialog.Builder class. If you use any of the following sample code inside your onCreateDialog() callback method, you can return the resulting Dialog object to display the dialog.
Adding buttons
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MyActivity.this.finish();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
注意:每种类型的按钮只能添加一个。这限制了按钮的个数(3个)。这些名字于其功能无关只用来帮助你记住这些按钮是干嘛的。
Adding a list
final CharSequence[] items = {"Red", "Green", "Blue"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
}
});
AlertDialog alert = builder.create();
Adding checkboxes and radio buttons
可以用vsetMultiChoiceitems()和setSingleChoiceItems()来在AlertDialog上设置多选或者单选列表。如果使用onCreateDialog()创建这些选项列表,那么Android会维护这个选项列表的状态。在Activity存活期间,这个dialog会记住先前的选项状态,但是当用户利卡这个Activity时,选项状态就会丢失。
注意:为了在用户退出或者暂停这个Activity时保存选项状态,你必须在整个Activity的生命周期中恰当的保存和恢复选项状态。为了永久的保存选项状态(甚至在Activity进程完全结束之后),你应该使用数据存储技术来保存选项状态。
To create an AlertDialog with a list of single-choice items like the one shown to the right, use the same code from the previous example, but replace the setItems() method with setSingleChoiceItems():
final CharSequence[] items = {"Red", "Green", "Blue"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
}
});
AlertDialog alert = builder.create();
在setSingleChoiceItems()的第二个参数是一个整形表示哪个item被选中,item的标识从0开始,-1表示没有item默认被选中。
自己做的一些案例,供参考:
分享到:
相关推荐
Android 对话框(Dialog)是 Android 应用程序中常用的交互方式之一。它可以用来提示用户、确认操作、显示信息等。Android 对话框有多种样式,可以根据不同的需求选择合适的样式。 知识点一:基本对话框样式 Android...
本资源提供了Android对话框的源码,包含十几种不同的动画效果,可以极大地丰富应用的用户体验。接下来,我们将深入探讨Android对话框的基础知识、自定义对话框以及各种动画效果的应用。 首先,Android系统提供了两...
`FancyAlertDialog-Android` 提供了丰富的样式选项,使得原本单调的标准Android对话框得以焕然一新。这个库不仅提供了预设的样式,还允许开发者通过代码动态设置对话框的样式,增强了灵活性和自定义程度。这意味着...
在Android应用开发中,对话框(Dialog)是一种重要的交互元素,用于向用户显示临时信息或进行简单的用户交互。本示例主要关注`Android`中的几种基本对话框类型:普通AlertDialog、列表对话框(ListDialog)、进度...
一、Android对话框的基本类型 1. **AlertDialog**: 它是最常见的对话框类型,提供了标题、内容和一个或多个按钮。可以通过`AlertDialog.Builder`来创建,设置标题、消息和按钮。 2. **ProgressDialog**: 用于展示...
本文详细介绍了Android对话框的创建、管理和自定义方法,包括如何使用各种生命周期方法来控制对话框的行为。通过具体示例,我们可以看到如何创建不同类型的对话框以满足不同的需求。希望本文能帮助你在实际项目中更...
在Android应用开发中,对话框...总之,Android对话框是用户界面的重要组成部分,熟练掌握各种对话框的用法和自定义技巧,可以提升应用的交互体验。通过不断实践和学习,你可以创建出符合设计规范、功能强大的对话框。
Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框Android 对话框...
在Android开发中,创建并显示一个文本对话框是常见的任务,尤其在用户需要输入或确认信息时。这个场景中提到的“android 打开文本对话框”是一个Android应用功能,用于展示一个包含文本输入和交互的对话框。下面将...
在Android开发中,对话框(Dialog)是一种非常重要的组件,用于与用户进行交互,提供临时信息展示、选项选择等操作。本篇文章将对Android中的对话框进行深入的总结,包括基本概念、类型、使用方法以及自定义对话框的...
Android 对话框(Dialog)大全 建立你自己的对话框 附源码 Android 对话框(Dialog)大全 建立你自己的对话框 附源码 Android 对话框(Dialog)大全 建立你自己的对话框 附源码
通过分析这些内容,我们可以深入理解Android对话框的工作原理及其创建方法。 首先,Android中的对话框分为几种类型,包括普通对话框(AlertDialog)、进度对话框(ProgressDialog)、自定义对话框等。这里主要关注...
总结,自定义Android对话框是一个灵活的过程,允许开发者根据项目需求调整对话框的样式、内容和行为。通过创建自定义布局,设置主题,以及处理各种事件,我们可以打造出与应用风格一致且用户体验良好的对话框。在...
### Android对话框样式详解 在Android开发过程中,对话框(Dialog)是常用的一种UI组件,用于向用户展示信息、请求用户输入或确认等操作。合理地定制对话框样式不仅可以提升应用的整体美观度,还能增强用户体验。...
在Android开发中,Dialog对话框是一种非常常见的组件,它用于在主线程中向用户展示一些信息,接收用户的输入,或者进行一些确认操作。这个“Android dialog对话框用法实例.rar”压缩包提供了一些示例代码,帮助...
在这个特定的案例中,我们关注的是Android Studio中的"常用对话框",包括普通对话框、单选对话框和多选对话框。这些对话框在用户交互中扮演着重要角色,用于提示信息、获取用户输入或进行选择操作。 首先,普通...
在Android开发中,创建具有个性化视觉效果的对话框可以提升用户体验。本文将深入探讨如何在Android Studio中实现对话框的圆角以及毛玻璃模糊效果,这两种特性常常被用于提升界面的美观度和交互性。 首先,让我们...
本文将详细介绍如何实现一个仿iOS样式的Android对话框,并提供相关的代码资源,以帮助开发者们快速创建出美观且符合设计规范的对话框。 在Android原生系统中,对话框通常有几种基本样式:AlertDialog、...
在Android开发中,对话框(Dialog)是一种非常重要的组件,用于与用户进行交互,提供临时的通知、确认或者选项。在"Android常用对话框源码--对话框大全"中,我们可以探讨多种类型的对话框及其实现方式。 1. **系统...