学习Android三四天了,今天给大家分享一下我的dialog对话空间的实现。想实现四种形式,如下图所示。
上面是第一个按钮实现的单选对话框,那么如何实现全部功能呢。
首先需要在布局文件(activity_main.xml)中添加布局,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="@string/hello_world" />
<!-- 单选对话框 -->
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/text"
android:text="@string/dialog"/>
<!-- 多选对话框 -->
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/button"
android:text="@string/dialogs"/>
<!-- 按键选择对话框 -->
<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/button2"
android:text="@string/paly_button"/>
<!-- 三个按键选择对话框 -->
<Button
android:id="@+id/button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/button3"
android:text="@string/palys_button"/>
</RelativeLayout>
布局完成后,需要实现主活动的Java代码,代码实现如下:
package com.open_open.myapplication;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity implements
android.view.View.OnClickListener {
//实现监听方法
private Button button,button2,button3,button4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)findViewById(R.id.button);
button2=(Button)findViewById(R.id.button2);
button3=(Button)findViewById(R.id.button3);
button4=(Button)findViewById(R.id.button4);
button.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
button4.setOnClickListener(this);
}
private int m=-1;
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
switch(v.getId())
{
case R.id.button:
dialog1();//单选对话框
break;
case R.id.button2:
dialog2();//多选对话框
break;
case R.id.button3:
dialog3();//两个按键对话框
break;
case R.id.button4:
dialog4();//三个按键对话框
break;
}
}
//单选对话框
public void dialog1()
{
Builder Diy_Dialog = new AlertDialog.Builder(MainActivity.this);
//在这个MainActivity中创建一个提示新的对话框,创建为一个对象Diy_Dialog
Diy_Dialog.setTitle("国家");//标题
String[] lg_item = { "中国", "韩国","日本" ,"美国"};
Diy_Dialog.setSingleChoiceItems(lg_item, m,new DialogInterface.OnClickListener() {
//放置一个单选对话框
//在setSingleChoiceItems(指定对话框选择项的字符,一个选择项的序号,对这个单选对话框创建监听 )
@Override
public void onClick(DialogInterface dialog1, int which)
{
//
}
});
Diy_Dialog.setPositiveButton("确认",new DialogInterface.OnClickListener() {
//放置一个Dialog按键 (按键字符,对这个按键dialog实现监听)
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO 自动生成的方法存根
dialog.dismiss();//释放dialog对话框
//MainActivity.this.finish();//结束这个主活动
}
});
Diy_Dialog.create().show();//创建并显示对话框
}
//多选对话框
private void dialog2()
{
final Builder Diy_Dialogs = new AlertDialog.Builder(MainActivity.this);
//在这个MainActivity中创建一个提示新的对话框,创建为一个对象Diy_Dialog
Diy_Dialogs.setTitle("国家");//标题
// Diy_Dialog2.setMessage("你喜欢的国家");
String[] lg_item = { "中国", "美国","韩国","日本" };
final boolean[] lg_size = {false,false,false,false};
Diy_Dialogs.setMultiChoiceItems(lg_item, lg_size,new DialogInterface.OnMultiChoiceClickListener(){
//放置一个多选选对话框
//在setSingleChoiceItems(指定对话框选择项的字符,一个选择项的序号,对这个单选对话框创建监听 )
@Override
public void onClick(DialogInterface dialog, int which,boolean isChecked) {
//()
// TODO 自动生成的方法存根
//lg_size[which]=isChecked;
}
});
Diy_Dialogs.setPositiveButton("确认",new DialogInterface.OnClickListener() {
//放置一个Dialog按键 (按键字符,对这个按键dialog实现监听)
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO 自动生成的方法存根
dialog.dismiss();//释放dialog对话框
//MainActivity.this.finish();//结束这个主活动
}
});
Diy_Dialogs.create().show();//创建并显示对话框
}
//选择对话框两个按键
private void dialog3()
{
Builder two_dialog= new AlertDialog.Builder(this);
//构建dialog对象
two_dialog.setTitle("提示");//标题
two_dialog.setMessage("确认退出吗?");//内容
two_dialog.setPositiveButton("确认",new DialogInterface.OnClickListener() {
//放置一个Dialog按键 (按键字符,对这个按键dialog实现监听)
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO 自动生成的方法存根
dialog.dismiss();//释放dialog对话框
MainActivity.this.finish();//结束这个主活动
}
});
two_dialog.setNeutralButton("取消",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO 自动生成的方法存根
dialog.dismiss();//释放dialog对话框
// MainActivity.this.finish();//结束这个主活动
}
});
two_dialog.create().show();//创建并显示对话框
}
//选择对话框三个按键
private void dialog4(){
Builder three_dialog = new AlertDialog.Builder(this);
//创建对象
three_dialog.setTitle("提示"); //设置标题
three_dialog.setMessage("是否确认退出?"); //设置内容
//builder.setIcon(R.mipmap.ic_launcher);//设置图标,图片id即可
three_dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() { //设置确定按钮
//创建一个"确定"对话框dialog 并实现监听
@Override
// public void onClick(DialogInterface dialog, int which) {
// dialog.dismiss(); //关闭dialog
//
// }
public void onClick(DialogInterface dialog, int which) {
// TODO 自动生成的方法存根
dialog.dismiss();//释放dialog对话框
MainActivity.this.finish();//结束这个主活动
}
});
three_dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() { //设置取消按钮
//创建一个"取消"对话框dialog 并实现监听
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();//关闭dialog
}
});
three_dialog.setNeutralButton("忽略", new DialogInterface.OnClickListener() {//设置忽略按钮
//创建一个"忽略"对话框dialog 并实现监听
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();//关闭dialog
}
});
//参数都设置完成,创建并显示出来
three_dialog.create().show();
}
}
这个几个按钮的代码有很强的相似度,大家只要理解其中一个或两个即可掌握dialog的简单使用。
下面是部分效果图:
持之以恒,方得始终