一、AlertDialog简介
AlertDialog的构造方法被声明为protected,因此不能直接使用new关键字来创建AlertDialog类的对象实例。要创建AlertDialog对话框,需要使用Builder类,该类是AlertDialog类中定义的一个内嵌类。因此,首先需要创建AlertDialog.Builder类的对象实例,然后再调用show()方法来显示对话框。以下是一个示例:
```java
AlertDialog.Builder builder = new Builder(this);
builder.create().show();
```
二、属性介绍
1. AlertDialog.Builder属性
- setTitle: 为对话框设置标题;
- setIcon: 为对话框设置图标;
- setMessage: 为对话框设置内容;
- setView: 给对话框设置自定义样式;
- setItems: 设置对话框要显示的一个list,一般用于显示几个命令时;
- setMultiChoiceItems: 用来设置对话框显示一系列的复选框;
- setNeutralButton: 响应中立行为的点击;
- setPositiveButton: 响应Yes/Ok的点击;
- setNegativeButton: 响应No/Cancel的点击;
- create: 创建对话框;
- show: 显示对话框。
2. ProgressDialog属性
- setProgressStyle: 设置进度条风格,风格为圆形,旋转的;
- setTitle: 设置ProgressDialog标题;
- setMessage: 设置ProgressDialog提示信息;
- setIcon: 设置ProgressDialog标题图标;
- setIndeterminate: 设置ProgressDialog的进度条是否不明确;
- setCancelable: 设置ProgressDialog是否可以按返回键取消;
- setButton: 设置ProgressDialog的一个Button(需要监听Button事件);
- show: 显示ProgressDialog。
对话框是一种常用的用户界面元素,可以提供各种类型和样式的对话框以满足不同的需求。以下是一些常见类型的对话框及其特点:
1. 带按钮的对话框:这种对话框通常包含一个或多个按钮,用户可以通过点击按钮来执行相应的操作。例如,确认操作、取消操作等。
2. 简单列表的对话框:这种对话框以水平滚动条的形式展示一系列选项,用户可以从中选择一个或多个选项。例如,选择器对话框、下拉列表等。
3. 单选列表的对话框:这种对话框只包含一组单选按钮,用户只能从中选择一个选项。例如,设置对话框、选项卡切换等。
4. 多选列表的对话框:这种对话框包含一组多选按钮,用户可以选择一个或多个选项。例如,文件管理器中的文件夹选项、批量重命名等。
5. 水平进度或圆形对话框(默认是圆形):这种对话框以水平滚动条的形式展示一个进度条,用于表示任务的完成进度。同时,也可以将对话框设置为圆形,使其看起来更加简洁和美观。
6. 悬浮对话框:这种对话框会始终显示在屏幕上方,即使用户正在进行其他操作。例如,系统警告、提示信息等。
7. 触摸任何位置都可以关闭的对话框:这种对话框具有自适应性,用户只需轻触屏幕上的任意位置,即可关闭对话框。这对于需要短暂显示的信息非常有用,避免了用户需要手动关闭的麻烦。
此外,还可以根据实际需求自定义对话框的内容和样式。例如,可以在自定义登录示例中调整输入框的大小、颜色等属性,以适应不同的应用场景。自定义对话框可以根据具体需求进行设计和实现,为用户提供更加便捷和个性化的使用体验。
以下是重构后的代码:
```java
public class MainActivity extends AppCompatActivity {
private AlertDialog.Builder mSimpleDialogBuilder;
private AlertDialog.Builder mSingleChoiceDialogBuilder;
private AlertDialog.Builder mMultiChoiceDialogBuilder;
private AlertDialog.Builder mListDialogBuilder;
private AlertDialog.Builder mCustomDialogBuilder;
private ProgressDialog mProgressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
initListeners();
}
private void initViews() {
// ...初始化视图的代码...
}
private void initListeners() {
Button btn1 = (Button) findViewById(R.id.dialg_demo_btn01);
btn1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
new AlertDialog.Builder(MainActivity.this).setTitle("简单提示对话框").setMessage("这是提示信息")
.show();
}
});
// ...其他按钮的监听器代码...
}
}
```