package com.kangzye.dialog;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private final static int SIMPLE_DIALOG = 0;
private final static int LIST_DIALOG = 1;
private final static int RADIO_DIALOG = 2;
private final static int CHECKBOX_DIALOG = 3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.btn);
Button btn2 = (Button) findViewById(R.id.btn2);
Button btn3 = (Button) findViewById(R.id.btn3);
Button btn4 = (Button) findViewById(R.id.btn4);
registClickListener(btn, SIMPLE_DIALOG);
registClickListener(btn2, LIST_DIALOG);
registClickListener(btn3, RADIO_DIALOG);
registClickListener(btn4, CHECKBOX_DIALOG);
}
private void registClickListener(Button btn,final int flag){
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(flag);
}
});
}
@Override
public Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
case SIMPLE_DIALOG:
EditText txt = (EditText) findViewById(R.id.txt);
Builder builder = new AlertDialog.Builder(this);
builder.setTitle("标题");
builder.setMessage(txt.getText().toString());
builder.setPositiveButton("确定", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "which:" + which, 1)
.show();
}
});
dialog = builder.create();
break;
case LIST_DIALOG:
Builder builder2 = new AlertDialog.Builder(this);
builder2.setTitle("标题");
builder2.setItems(R.array.items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, dialog+":"+which, 1).show();
}
});
builder2.setPositiveButton("确定", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "which:" + which, 1)
.show();
}
});
dialog = builder2.create();
break;
case RADIO_DIALOG:
Builder build3=new AlertDialog.Builder(this);
build3.setTitle("单选框");
build3.setSingleChoiceItems(R.array.items, 2, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
alert(dialog+":"+which);
}
});
dialog=build3.create();
build3.setPositiveButton("确定", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "which:" + which, 1)
.show();
}
});
break;
case CHECKBOX_DIALOG:
Builder build4=new AlertDialog.Builder(this);
build4.setTitle("复选框");
build4.setMultiChoiceItems(R.array.items, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
alert(dialog+":"+which+":"+isChecked);
}
});
build4.setPositiveButton("确定", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "which:" + which, 1).show();
}
});
dialog=build4.create();
break;
default:
break;
}
return dialog;
}
private void alert(String msg){
Toast.makeText(this, msg, 1).show();
}
}
以上示例了4种对话框:简单对话框、列表对话框、单选对话框、复选对话框
它们都是通过 AlertDialog 实现的。只是有少许不同。
简单对话框 设置builder 的message即可
列表对话框 设置一个List 和一个 DialogInterface.OnClickListener 实例 到其setItems 方法即可当有选项被点击时,DialogInterface.OnClickListener实例的public void onClick(DialogInterface dialog, int which) 方法将被调用,其中 which 就是被点击item的序号,从0开始。这样你就知道是哪个被点击了。这种对话框在选项被点击后即会关闭,所以上面程序中为对话框添加的确定按钮(通过builder2.setPositiveButton("确定", new AlertDialog.OnClickListener() {......});)其实没必要也没有意义,或许在什么都不像选择时用来关闭对话框时还是有用的。
单选对话框 不同之处在于通过方法:build3.setSingleChoiceItems(R.array.items, 2, new DialogInterface.OnClickListener(){...});来设置对话框为单选对话框。其中的2表示默认情况下第二个选项是被选中的。当某个选项被选择后DialogInterface.OnClickListener实例的public void onClick(DialogInterface dialog, int which)方法将被调用。which即为被选择的项的序号,从0开始。此对话框和列表对话框一样,当某一个选项被点击后,对话框就会关闭。
复选对话框 通过方法build4.setMultiChoiceItems(R.array.items, new boolean[]{true,false,true}, new DialogInterface.OnMultiChoiceClickListener(){.....});即可表示此为复选对话框。第一个参数是选项内容。第二个参数是默认那些选项是被选中的。第三个参数的public void onClick(DialogInterface dialog, int which, boolean isChecked); 方法在选项被点击后将被调用,which 和上面一样是点击项的序号,从0开始。isChecked 表示点击完后此选项是否是选中状态。此对话框在选项点击后不会关闭对话框,需要为builder 设置关闭按钮通过方法:build4.setPositiveButton("确定", new AlertDialog.OnClickListener(){...});
分享到:
相关推荐
在`Dialog-master`这个项目中,可能包含了这些对话框类型的实例代码,帮助开发者理解和学习如何在实际应用中创建和使用它们。通过分析和运行这些示例,你可以深入理解Android对话框的用法,提升你的Android开发技能...
以上是"Android常用对话框源码--对话框大全"中的主要知识点,通过学习和实践这些,开发者可以熟练掌握Android应用中对话框的使用,提高用户体验。在实际开发中,可以根据需求灵活组合和定制,创造出符合应用特性的...
在Android开发中,Dialog对话框是一种常见的用户交互组件,它用于在主界面之上显示一个临时窗口,用于提示信息、确认操作或提供选择项。本文将深入探讨`Android-Dialog`对话框的相关知识点,并结合源码分析,以帮助...
透明对话框的实现涉及到图形用户界面(GUI)编程的技术,如Windows API、Qt、JavaFX、WPF或是Android的DialogFragment等。实现的关键在于调整对话框的透明度属性。在Windows平台上,可以使用SetWindowLong和...
在Android开发中,进度条对话框(ProgressDialog)是一种常见的用户界面元素,用于向用户展示一个操作的进度,比如数据...通过这个Demo,开发者可以学习如何在实际项目中正确地集成和使用进度条对话框,提升用户体验。
PopupWindow是Android开发中一种非常实用的组件,它允许开发者创建弹出式...通过深入学习和实践“探索PopupWindow-对话框风格的窗口(一)”的相关知识,开发者可以更好地理解和运用PopupWindow,提升应用的用户体验。
这个"Android代码-半透明对话框Demo源码.zip"应该包含了完整的代码示例,包括styles.xml、CustomDialogFragment.java和dialog_custom.xml,你可以下载后进行学习和实践。通过深入理解并应用这些知识,你将能够为自己...
在Android开发中,Android Studio是官方推荐的集成开发环境(IDE),它提供了丰富的功能和工具,使得开发者可以高效地创建Android应用程序。...通过实践和不断学习,开发者可以创建出更加直观、友好的Android应用。
在Android应用开发中,对话框(Dialog)是一种重要的交互元素,用于向用户显示临时信息或者进行简单的用户交互。本文将深入探讨Android对话框的使用、种类及其相关知识点。 1. 对话框的基本类型: - AlertDialog:...
在Android开发中,对话框(Dialog)是一种非常重要的组件,它用于向用户显示临时信息或者进行简单的交互。...通过学习和实践这些代码,开发者可以更好地掌握在Android应用中创建和管理对话框的方法。
### Android UI篇——Dialog(对话框) 在Android应用开发中,对话框(Dialog)作为用户交互的重要组成部分之一,被广泛应用于各种场景下,比如提示信息、请求确认操作、登录界面等。本文将深入探讨Android中Dialog的...
在Android开发中,列表对话框(List ...对于初学者来说,这是一个很好的学习和实践平台,可以加深对Android UI组件和事件处理的理解。对于有经验的开发者,源码可以作为快速实现列表对话框功能的起点,进行二次开发。
在Android开发中,对话框(Dialog)是一种非常重要的组件,用于与用户进行交互,提供临时信息或者需要用户做出选择的情况。本实例将带你深入了解如何在Android应用中使用Dialog,并通过实际操作来提升你的编程技能。...
通过对“Android 普通对话框源码”的学习和理解,开发者可以更好地掌握如何在自己的应用中有效地使用对话框,提升用户体验。记得查看源码中的注释和逻辑,这将有助于深入理解对话框的工作原理和使用方法。
在Android开发中,Dialog对话框是一种非常常见的组件,它用于向用户展示临时信息或进行简单的交互操作。在本文中,我们将深入探讨Android源码中Dialog类的实现,并通过8个实例来理解其工作原理和使用方式。 首先,...
通过学习和利用如“sweet-alert-dialog-eclipse”这样的库,开发者可以轻松地创建出美观、功能丰富的对话框,为用户带来更佳的交互体验。同时,这也体现了Android平台的灵活性和可扩展性,鼓励开发者根据自己的需求...
在Android应用开发中,对话框(Dialog)是一种重要的交互元素,用于向用户显示临时信息或进行简单的用户交互。...通过学习和实践这些对话框的用法,开发者能够创建更加丰富和友好的用户界面,提高应用的用户体验。
在Android应用开发中,自定义对话框(Custom Dialog)与拨打电话功能是常见的需求,尤其在构建实用工具类的应用如“手机卫士”时。在这个项目实战中,我们将深入探讨如何实现这两个特性。 首先,自定义对话框在...
在Android应用开发中,对话框(Dialog)是一种重要的交互元素,用于向用户显示临时信息或进行简单的用户交互。..."Android对话框精粹1"中的资源和示例,无论是对初学者还是有经验的开发者,都是很好的学习和参考材料。
在Android开发中,对话框(Dialog)是一种常见的用户...总之,这个资源提供了一个关于如何在Android中创建普通对话框的实例,通过学习源码,开发者可以更深入地理解对话框的工作原理,并根据项目需求进行自定义和扩展。