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(){...});
分享到:
相关推荐
Android源码-Dialog对话框类源代码(8例),可供学习及设计参考。
NULL 博文链接:https://homelink.iteye.com/blog/698010
这个文件总工提供了8种常用Android的对话框示例,可以供大家学习参考。
Android Dialog对话框用法演示实例,通过...所以我们要学习好Android 中的dialog生成各种对话框的用法,并在适当的地方灵活运用。比如一些常用的场景就是:用户登录提示、网络正在下载提示、下载成功与失败的提示等。
Android应用源码开发Demo,主要用于毕业设计学习。
050集-列表对话框和自定义对话框视频教程,很是不错哦,有兴趣的可以学习下。
当用户运行某一应用程序而等待时,显示一个简单的进度对话框~
自己学习android 对话框的例子。初学者可以自己参考学习!
android 自定义对话框.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android 半透明对话框Demo源码.zip项目安卓应用源码下载Android 半透明对话框Demo源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
049集-标准对话框视频教程,可以学习下哦。
仿腾讯动画的android下载对话框,波浪型下载进度条对话框.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
android-styled-dialogs 可自定义样式的dialog.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android中实现Iphone样式的AlertDialog.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android应用源码开发Demo,主要用于毕业设计学习。
前几年的Android应用源码Demo,主要面向的是学生毕业设计学习。
Android应用源码开发Demo,主要用于毕业设计学习。
前几年的Android应用源码Demo,主要面向的是学生毕业设计学习。
Android学习笔记(九)——更复杂的进度对话框 完整代码,显示操作进度的进度对话框~
Android例子源码仿QQ的头像选择弹出的对话框 Android例子源码仿多看阅读的左右平移翻页效果小例子 Android例子源码可以通过网络请求内容的自定义列表选择Dialog Android例子源码图片旋转缩放加盖水印透明倾斜扭曲...