1.回顾
上篇 学习了 Toast的使用,包括其自定义
2.重点
(1)对话框的实现
(2)普通对话框
(3)单选对话框
(4)多选对话框
(5)列表对话框
(6)自定义布局对话框
(7)Activity实现 对话框
(8)DialogInterface.OnClickListener 处理返回值
3.普通对话框
3.1 效果图
3.2 实现
(1)实现确定按钮监听(DialogInterface.OnClickListener )
//两个事件 : 确定监听
class DialogSureClickListener implements DialogInterface.OnClickListener{
@Override
public void onClick(DialogInterface dialog, int which) {
// 判断 点击的是什么按钮
dialog.dismiss();
Toast.makeText(MainActivity.this,"点击了确定按钮",Toast.LENGTH_SHORT).show();
tv_result.setText("点击了确定按钮");
}
}
(2)实现取消按钮监听(DialogInterface.OnClickListener )
//取消监听
class DialogCanelClickListener implements DialogInterface.OnClickListener{
@Override
public void onClick(DialogInterface dialog, int which) {
// 判断 点击的是什么按钮
dialog.dismiss();
Toast.makeText(MainActivity.this,"点击了取消按钮",Toast.LENGTH_SHORT).show();
tv_result.setText("点击了取消按钮");
}
}
(3)dialog 实现
/**
* 普通的dialog
*/
private void ShowPuTongDialog(){
AlertDialog.Builder builder=new Builder(this);
builder.setTitle("普通Dialog");
builder.setIcon(R.drawable.img);
builder.setMessage("Hi,我是 普通 Dialog");
builder.setPositiveButton("确定",new DialogSureClickListener());
builder.setNegativeButton("取消",new DialogCanelClickListener());
AlertDialog dialog= builder.create();
dialog.show();
}
4.单选按钮对话框
4.1 效果图
4.2实现
(1)准备数据源
//准备数据源
private String[] items={"儿童","少年","青年","成年","大叔","老头"};
(2)实现点击监听(DialogInterface.OnClickListener )
//监听事件
class DialogsingleClickListener implements DialogInterface.OnClickListener{
@Override
public void onClick(DialogInterface dialog, int which) {
// 判断 单选按钮
Toast.makeText(MainActivity.this,items[which],Toast.LENGTH_SHORT).show();
tv_result.setText(items[which]);
dialog.dismiss();
}
}
(3)dialog实现
/**
* 单选按钮对话框
*/
private void ShowSingleDialog(){
AlertDialog.Builder builder=new Builder(this);
builder.setTitle("单选按钮对话框");
builder.setIcon(R.drawable.ic_launcher);
builder.setSingleChoiceItems(items,0,new DialogsingleClickListener());
AlertDialog dialog=builder.create();
dialog.show();
}
5.多选按钮对话框
5.1 效果图
5.2 实现
(1)准备数据源
//数据源
private String[] items1={"儿童","少年","青年","成年","大叔","老头"};
(2)多选监听事件(DialogInterface.OnMultiChoiceClickListener)
//多选监听事件
class DialogMuitlClickListener implements DialogInterface.OnMultiChoiceClickListener{
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// OnMultiChoiceClickListener
if(isChecked){
Toast.makeText(MainActivity.this,items1[which],Toast.LENGTH_SHORT).show();
tv_result.setText(tv_result.getText().toString()+items1[which]);
}
}
}
(3)按钮监听事件(DialogInterface.OnClickListener)
// 确定 监听事件
class DialogMuitlSureClickListener implements DialogInterface.OnClickListener{
@Override
public void onClick(DialogInterface dialog, int which) {
// 关闭 Dialog
dialog.dismiss();
}
}
(4)Dialog 实现
/**
* 多选按钮 对话框
*/
private void ShowMuitlDialog(){
AlertDialog.Builder builder=new Builder(this);
builder.setTitle("多选按钮对话框");
builder.setIcon(R.drawable.ic_launcher);
builder.setMultiChoiceItems(items, null,new DialogMuitlClickListener());
builder.setPositiveButton("确定",new DialogMuitlSureClickListener());
AlertDialog dialog=builder.create();
dialog.show();
}
6.列表对话框
6.1 效果图
6.2 实现
(1)准备数据源
//设置数据源
private String[] items2={"儿童","少年","青年","成年","大叔","老头"};
(2)设置监听事件(DialogInterface.OnClickListener)
// list 监听事件
class DialoglistClickListener implements DialogInterface.OnClickListener{
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,items2[which],Toast.LENGTH_SHORT).show();
tv_result.setText(items2[which]);
// 关闭 Dialog
dialog.dismiss();
}
}
(3)Dialog实现
/**
* list 对话框实现
*/
private void ShowListDialog(){
AlertDialog.Builder builder=new Builder(this);
builder.setTitle("list对话框");
builder.setIcon(R.drawable.ic_launcher);
builder.setItems(items2, new DialoglistClickListener());
AlertDialog dialog=builder.create();
dialog.show();
}
7.自定义对话框
7.1效果图
7.2 实现
(1)新建Layout布局
实现 一个图片,一个输入框,一个按钮
这里也使用到了 将布局 转为 view对象 ,目前 有两种方法 可以将 Layout布局转 View对象;
private EditText editText1;
private AlertDialog selfdialog;
/**
* 自定义布局 的dialog 包括 取代 dialog中的值
*/
private void ShowSelfDialog(){
//将 layout布局 转为 view对象
LayoutInflater inflater=getLayoutInflater().from(this);
View view=inflater.inflate(R.layout.dialog_layout,null);
AlertDialog.Builder builder=new Builder(this);
builder.setTitle("自定义对话框");
builder.setIcon(R.drawable.ic_launcher);
builder.setView(view);
selfdialog=builder.create();
selfdialog.show();
//取得 dialog中的值
Button btn_tijiao=(Button) view.findViewById(R.id.btn_tijiao);
editText1=(EditText) view.findViewById(R.id.editText1);
btn_tijiao.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 取得 dialog 中的值
tv_result.setText("自定义 Dialog中取得值:"+editText1.getText().toString());
selfdialog.dismiss();
}
});
}
8.Activity 对话框
8.1效果图
没有优化,就这样了!
8.2 实现
(1)新建Activity
(2)设置主题
打开 Androidmainfest.xml ,找到刚刚新建的Activity 设置主题 theme
(3)设置布局 和 上面 自定义布局一样 (可以直接使用)
(4)初始化控件 实现 按钮点击事件
这里说明一下,因为需要 回调 传值,故使用了 setResult ;
class btn_tijiaoClickListener implements OnClickListener{
@Override
public void onClick(View v) {
// 按钮点击事件 ,给 mainActivity 回传输入的值
Intent intent=new Intent();
intent.putExtra("data",edittext1.getText().toString());
setResult(1,intent);
//结束 Activity dialog
finish();
}
}
(5)MainActivity 重写 onActivityResult 回调 拿值
/**
* 重写 onActivityResult 方法 拿到 回调的值
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//回调拿值
if(resultCode==1&&requestCode==2){
tv_result.setText(data.getStringExtra("data"));
}
}
(6)启动使用 startActivityforResult () 方法
Intent intent=new Intent(MainActivity.this,DialogActivity.class);
startActivityForResult(intent, 2);
8.3 不懂得 可以看我的博客
Activity 跳转 全解 Intent : http://blog.csdn.net/lablenet/article/details/47866761
9.demo 免积分下载
http://download.csdn.net/detail/lablenet/9048643