一.对话框
对话框:就是在当前Activity之上显示的小窗口,用于和用户间进行信息交互。对话框通常用来作为提示或直接与程序运行相关的短暂停留界面。
**
二、AlertDialog可以实现大部分和用户交互的对话框
**
为了创建一个AlertDialog,可以使用AlertDialog.Builder子类。使用AlertDialog.Builder(Context)得到一个对话框构造器,然后使用该类的共有方法来定义AlertDialog对话框的所有属性。在你使用对话框构造器设置完属性之后,调用create()方法即可得到一个AlertDialog的对象。
1.确定取消基本对话框
//创建AlertDialog对话框构造器
AlertDialog.Builder builder=new Builder(this);
//设置对话框标题
builder.setTitle("警告");
//设置对话框内容
builder.setMessage("确定要删除该信息?");
//设置对话框不能被取消
builder.setCancelable(false);
//设置第一个按钮的标签及其事件监听器
builder.setPositiveButton("确定", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
//设置第二个按钮的标签及其事件监听器
builder.setNegativeButton("取消", null);
//创建对话框
AlertDialog alter=builder.create();
//显示对话框
builder.show();
2.单选对话框
AlertDialog.Builder builder=new Builder(this);
builder.setTitle("请选择性别:");
final String[] items={"男","女"};
builder.setSingleChoiceItems(items, -1, new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setPositiveButton("确定",null);
builder.setNegativeButton("取消选择", null);
builder.show();
3.多选对话框
AlertDialog.Builder builder=new Builder(this);
builder.setTitle("请选择爱好:");
final String[] items={"篮球","足球","乒乓球","羽毛球"};
final boolean[] checkedItems={false,false,false,false};
builder.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener(){
@Override
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
}});
builder.setPositiveButton("确定",null);
builder.setNegativeButton("取消选择", null);
builder.show();
4.输入对话框
new AlertDialog.Builder(this).setTitle("警告").setView(new EditText(this)).setCancelable(false)
.setPositiveButton("确定",new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).setNegativeButton("取消", null).show();
}
三:进度条:
为了避免加载过慢造成的不太好的用户体验,可以设置进度条对话框给用户提醒加载进度。
1.进度对话框
final ProgressDialog progress=new ProgressDialog(this);
progress.setTitle("提醒");
progress.setMessage("正在加载数据...");
progress.show();
new Thread(){
public void run(){
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//进度对话框关闭
progress.dismiss();
}
}.start();
2.进度条对话框
final ProgressDialog progress=new ProgressDialog(this);
progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progress.setMax(100);
progress.setTitle("提醒");
progress.setMessage("正在加载数据...");
progress.show();
new Thread(){
public void run(){
for(int i=1;i<100;i++){
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
progress.setProgress(i);
}
//进度对话框关闭
progress.dismiss();
}
}.start();
四.自定义对话框:
在对话框中设置自己想要的任何效果。
1.先定义自定义对话框的布局
<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="65dp"
android:gravity="center_vertical"
>
<ImageView
android:layout_width="35dp"
android:layout_height="35dp"
android:id="@+id/iv"
/>
<TextView
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/iv"
android:layout_marginLeft="12dp"
android:id="@+id/tv"
android:textSize="22sp"
/>
2.使用setContentView(int)来设置对话框的布局为自定义的布局
Dialog dialog=new Dialog(MainActivity.this);
dialog.setTitle("自定义");
dialog.setContentView(R.layout.item);
ImageView image=(ImageView)dialog.findViewById(R.id.iv);
image.setImageResource(R.drawable.ic_launcher);
TextView text=(TextView)dialog.findViewById(R.id.tv);
text.setText("this is a dialog");
dialog.show();