一、普通对话框
- 创建步骤:
- 使用 AlertDialog.Builder 类创建一个对话框对象
- 调用 setTitle() 方法设置标题
- 调用 setMessage() 方法设置显示的内容
- 调用 setPositiveButton() 方法设置确定按钮
- 调用 setNegativeButton() 方法设置取消按钮
- 调用 show() 方法将对话框显示出来
- 代码实现:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 创建一个对话框对象 AlertDialog.Builder builder = new AlertDialog.Builder(this); // 设置对话框标题 builder.setTitle("警告"); // 设置对话框内容 builder.setMessage("您现在没有联网"); // 设置对话框确认按钮事件 builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Log.i("MainActivity","aaa"); } }); // 设置对话框取消按钮事件 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Log.i("MainActivity","bbb"); } }); // 将对话框显示出来 builder.show(); } }
二、单选对话框
- 创建步骤:
- 使用 AlertDialog.Builder 类创建一个对话框对象
- 调用 setTitle() 方法设置标题
- 调用 setSingleChoiceItems() 方法,为对话框添加单选事件
- 调用 show() 方法将对话框显示出来
- 代码实现:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("你喜欢的编程语言"); final String[] items = new String[]{"Java","C#","C","C++"}; /* * 参数一:字符串类型数组,代表选择项目数组 * 参数二:整数类型,代表默认选中哪一个项目,如果为-1则不选中任何项目 * 参数三:引用数据类型,为选择的项目添加一个点击事件 * */ builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 取出选择的内容 ---> 遵循数据从哪里来的就从哪里取原则 String item = items[which]; // 对得到的内容进行操作 Toast.makeText(getApplicationContext(),item,Toast.LENGTH_LONG).show(); // 关闭对话框 dialog.dismiss(); } }); builder.show(); } }
三、多选对话框
- 创建步骤:
- 使用 AlertDialog.Builder 类创建一个对话框对象
- 调用 setTitle() 方法设置标题
- 调用 setMultiChoiceItems() 方法为对话框添加多选事件
- 调用 show() 方法将对话框显示出来
- 代码实现:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("选择你喜欢的水果"); final String[] fruit = {"西瓜", "草莓", "香蕉", "火龙果"}; final boolean[] fruitIsChecked = {true, false, false, true}; /* * 参数一:字符串类型数组,代表选择项目数组 * 参数二:Boolean类型数组,为上面的选择项目数组设置是否被默认选中,true代表默认被选中,false代表默认不被选中 * 参数三:引用数据类型,为选择的项目添加一个点击事件。一般不用这个进行点击 * */ builder.setMultiChoiceItems(fruit, fruitIsChecked, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { } }); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { StringBuffer sb = new StringBuffer(); // 取出选择的数据 for (int i = 0; i < fruit.length; i++) { // 判断项目是否被选中 if (fruitIsChecked[i]) { String item = fruit[i]; sb.append(item + " "); } } // 将获取到的数据显示出来 Toast.makeText(getApplicationContext(),sb.toString(),Toast.LENGTH_LONG).show(); // 关闭对话框 dialog.dismiss(); } }); builder.show(); } }
四、进度条对话框
- 创建步骤:
- 使用 ProgressDialog 类创建一个进度条对话框对象
- 调用 setTitle() 方法设置标题
- 开启一个线程,让进度条动起来
- 注意:所有关于进度的控件,都可以在子线程中去更新
- 调用 show() 方法将对话框显示出来
- 代码实现:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ProgressDialog progressDialog = new ProgressDialog(this); // 设置进度对话框样式为水平样式 progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); // 设置进度对话框标题 progressDialog.setTitle("正在加载中"); new Thread() { @Override public void run() { progressDialog.setMax(100); for (int i = 0; i < 100; i++) { progressDialog.setProgress(i); /* * SystemClock.sleep()与Thread.sleep()之间的不同点 * SystemClock.sleep()不用捕获异常 * Thread.sleep()需要捕获异常 * */ SystemClock.sleep(50); } progressDialog.dismiss(); } }.start(); // 将进度对话框展示出来 progressDialog.show(); }