一:AlertDialog
AlertDialog的构造方法全部是Protected的,所以不能直接通过new一个AlertDialog来创建出一个AlertDialog。
要创建一个AlertDialog,就要用到AlertDialog.Builder中的create()方法。
AlertDialog.Builder常用方法
setTitle :为对话框设置标题
setIcon :为对话框设置图标
setMessage:为对话框设置内容
setView : 给对话框设置自定义样式
setItems :设置对话框要显示的一个list,一般用于显示几个命令时
setMultiChoiceItems :用来设置对话框显示一系列的复选框
setNeutralButton :普通按钮setPositiveButton :给对话框添加"Yes"按钮
setNegativeButton :对话框添加"No"按钮
create : 创建对话框
show :显示对话框
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog.Builder;
import android.app.AlertDialog;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)this.findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Builder adInfo=new AlertDialog.Builder(MainActivity.this);
adInfo.setTitle("简单对话框"); //设置标题
adInfo.setMessage("test"); //设置内容
adInfo.setIcon(R.drawable.ic_launcher); //设置图标
adInfo.create();
adInfo.show();
}
});
}
1.AlertDialog可以显示3个按钮,现在我们增加显示按钮
1. dialog.setPositiveButton按钮显示在右边,2. dialog.setNegativeButton显示在左边3.dialog.setNeutralButton按钮显示在正中
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)this.findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Builder adInfo=new AlertDialog.Builder(MainActivity.this);
adInfo.setTitle("简单对话框"); //设置标题
adInfo.setMessage("test"); //设置内容
adInfo.setIcon(R.drawable.ic_launcher);
adInfo.setPositiveButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 根据实际情况编写相应代码。
}
});
//为“取消”按钮注册监听事件
adInfo.setNegativeButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 根据实际情况编写相应代码。
}
});
adInfo.create();
adInfo.show();
}
});
}
2.AlertDialog+按钮和复选框
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)this.findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String[] choices={"Facebook","Twitter"};
//Check判断数组,与选项对应
boolean[] chsBool = {true,false};
//包含多个选项及复选框的对话框
AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
.setIcon(android.R.drawable.btn_star_big_on)
.setTitle("调查")
.setMultiChoiceItems(choices, chsBool, multiClick)
.setPositiveButton("yes", onclick)
.setNegativeButton("No", onclick).create();
dialog.show();
}
});
}
OnMultiChoiceClickListener multiClick = new OnMultiChoiceClickListener(){
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
Toast.makeText(MainActivity.this, "第"+(which+1)+"项,选中结果:"+isChecked,Toast.LENGTH_SHORT).show();
}
};
OnClickListener onclick = new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
switch (which) {
case Dialog.BUTTON_NEGATIVE:
Toast.makeText(MainActivity.this, "No..",
Toast.LENGTH_LONG).show();
break;
case Dialog.BUTTON_NEUTRAL:
Toast.makeText(MainActivity.this, "I don't know.",
Toast.LENGTH_LONG).show();
break;
case Dialog.BUTTON_POSITIVE:
Toast.makeText(MainActivity.this, "Yes!!",
Toast.LENGTH_LONG).show();
break;
}
}
};
二、自定义AlertDialog
如何自定义一个对话框呢?
(1)修改系统默认的Dialog样式(风格、主题)
(2)自定义Dialog布局文件
(3)可以自己封装一个类,继承自Dialog或者直接使用Dialog类来实现,为了方便以后重复使用,建议自己封装一个Dialog类。
待续。。。。
三、ProgressDialog
1.圆形进度条的使用
public class MainActivity extends Activity {
private Button button1,button2;
//声明进度条对话框
private ProgressDialog pdDialog=null;
//进度计数
int iCount = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1=(Button)this.findViewById(R.id.progress);
button2=(Button)this.findViewById(R.id.circle);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
iCount = 0;
pdDialog=new ProgressDialog(MainActivity.this);
//设置进度条风格,风格为圆形,旋转的
pdDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
// 设置ProgressDialog 标题
pdDialog.setTitle("圆形进度条");
// 设置ProgressDialog 提示信息
pdDialog.setMessage("正在下载中……");
// 设置ProgressDialog 标题图标
pdDialog.setIcon(R.drawable.ic_launcher);
// 设置ProgressDialog 进度条进度
pdDialog.setProgress(100);
// 设置ProgressDialog 的进度条是否不明确
pdDialog.setIndeterminate(false);
// 设置ProgressDialog 是否可以按退回按键取消
pdDialog.setCancelable(true);
// 设置ProgressDialog 的一个Button
pdDialog.setButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int i)
{
//点击“取消”按钮取消对话框
dialog.cancel();
}
});
pdDialog.show();
//创建线程实例
new Thread(){
public void run(){
try{
while (iCount <= 100) {
// 由线程来控制进度。
pdDialog.setProgress(iCount ++);
Thread.sleep(50);
}
pdDialog.cancel();
}
catch (InterruptedException e){
pdDialog.cancel();
}
}
}.start();
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
}
});
}
2、环形进度条的使用
将其类型改成
pdDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);