(1)用于提示信息 如:是否退出系统?是 OR 否
第一步:实例化AlertDialog.Builder对象
AlertDialog.Builder builder=new AlertDialog.Builder(this);
ps:AlertDialog的构造方法是protected,所以无法实例化,通过Builder完成操作。
Builder是AlertDialog的一个静态内部类。
第二步:通过Builder对象,设置对话框相关信息(标题,内容,按钮)
按钮有三个PositiveButton(积极的)、NegativeButton(消极的)、NeutralButton(中立的)
三个按钮 首先展示NegativeButton,接着展示NeutralButton,最后展示PositiveButton。
ps:setCancelable(false) //禁止点击对话框之外的区域 取消或关闭 也禁止了返回键
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.Toast;
public class AlertDialogActivity extends Activity {
AlertDialog.Builder alert;
long beginTime = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initDialog();
}
private void initDialog(){
alert = new AlertDialog.Builder(this);
alert.setTitle("温馨提示").setIcon(R.drawable.ic_launcher).setMessage("是否确定退出").setPositiveButton("确定",
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
finish();
}
}).setNegativeButton("取消", null).setNeutralButton("等一会", null);
alert.create();
alert.show();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
exit();
return false;
}
return super.onKeyDown(keyCode, event);
}
public void exit() {
//实现两次点击退出系统;
if (System.currentTimeMillis() - beginTime > 2000) {
Toast.makeText(this, "再点击一次退出系统", Toast.LENGTH_SHORT).show();
beginTime = System.currentTimeMillis();
}else {
finish();
System.exit(0);
}
}
}
(2)AlertDialog除了有信息提示的作用外,还有展示列表的功能
<1> setItems 设置普通列表
<2> setSingleChoiceItems设置单选按钮列表
<3> setMultiChoiceItems设置多选复选列表
<4> 还可以通过 setView 添加一个自定义布局,实现编辑信息的目的;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.graphics.Color;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class AlertDialogToolsActivity extends Activity {
TextView textView;
AlertDialog.Builder alert;
long beginTime = 0;
private int defaultItem = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.alter_tools);
initView();
}
private void initView() {
textView = (TextView) findViewById(R.id.text_popup);
}
//在xml文件中绑定click,可以简化java代码,不用实例化控件,可以直接通过控件ID进行监听;
public void click(View view) {
switch (view.getId()) {
case R.id.button_textcolor:
showCommonListDialog();
break;
case R.id.button_textsize:
showSingleListDialog();
break;
case R.id.button_textcontent:
showMultiListDialog();
break;
default:
break;
}
}
<strong>//<span style="color:#ff0000;">设置多选复选列表</span></strong>
private void showMultiListDialog() {
// TODO Auto-generated method stub
alert = new AlertDialog.Builder(this);
alert.setIcon(R.drawable.ic_launcher);
alert.setTitle("请选择个人爱好:");
//复选样式Item:需要设置显示的数据,需要监听选择的Item状态的初始化(方便得到指定的被选择的信息文本并处理),
//监听Item的选择事件(方便不同类型信息的获取);
final String[] hobits = getResources().getStringArray(R.array.text_size_hobit);
final boolean[] checkedItems = new boolean[hobits.length];
alert.setMultiChoiceItems(R.array.text_size_hobit, checkedItems, new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// TODO Auto-generated method stub
checkedItems[which] = isChecked;
}
}).setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
textView.setText("您选择的爱好是:\n");
for (int i = 0; i < checkedItems.length; i++) {
if (checkedItems[i]) {
textView.append(hobits[i]+"\n");
}
}
}
}).create();
alert.show();
}
//<strong><span style="color:#ff0000;">设置单选按钮列表</span></strong>
private void showSingleListDialog() {
alert = new AlertDialog.Builder(this);
alert.setIcon(R.drawable.ic_launcher);
alert.setTitle("设置字体大小");
//单选样式的Item:需要传递的内容有,显示内容(数组),和设定点击的Item的位置Position,设置每个Item的点击监听;
alert.setSingleChoiceItems(R.array.text_size_name, defaultItem, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
defaultItem = which;
textView.setTextSize(getResources().getIntArray(R.array.text_size)[which]);
dialog.dismiss();
}
}).create();
alert.show();
}
//<span style="font-weight: bold;"><span style="color:#ff0000;">设置普通列表</span></span>
private void showCommonListDialog() {
alert = new AlertDialog.Builder(this);
alert.setIcon(R.drawable.ic_launcher);
alert.setTitle("设置字体颜色");
//设置普通文本格式的对话框,设置的是普通的Item;
alert.setItems(R.array.text_color, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
textView.setTextColor(Color.RED);
break;
case 1:
textView.setTextColor(Color.BLUE);
break;
case 2:
textView.setTextColor(Color.GREEN);
break;
default:
break;
}
}
}).create();
alert.show();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
exit();
return false;
}
return super.onKeyDown(keyCode, event);
}
public void exit() {
//实现两次点击退出系统;
if (System.currentTimeMillis() - beginTime > 2000) {
Toast.makeText(this, "再点击一次退出系统", Toast.LENGTH_SHORT).show();
beginTime = System.currentTimeMillis();
}else {
finish();
System.exit(0);
}
}
}<strong>
</strong>