Android-UI开发之对话框
程序员文章站
2024-01-31 12:42:16
...
内容概述
- AlertDialog:功能最为丰富,实际应用最为广泛的对话框
- ProgressDialog:进度对话框,是对简单进度条的封装
- DatePickerDialog:日期选择对话框
- TimePickerDialog:时间选择对话框
- 自定义对话框:对话框布局自定义,并设置监听事件
一.AlertDialog对话框
- AlertDialog生成的对话框分为4个区域:图标区、标题区、内容区和按钮区
1.创建对话框的步骤
- 使用AlertDialog.Builder创建对象
- 调用AlertDialog.Builder的setTitle()或setCustomTitle()方法设置标题
- 调用AlertDialog.Builder的setIcon()方法设置图标
- 调用AlertDialog.Builder的相关设置方法设置对话框内容
- 调用AlertDialog.Builder的setPositiveButton、setNegativeButton()或setNeutralButton()方法添加多个按钮
- 调用AlertDialog.Builder的create()方法创建AlertDialog对象,再调用AlertDialog对象的show()方法将该对话框显示出来
2.例子一
new AlertDialog.Builder(MainActivity.this)
.setTitle("提示")
.setMessage("你喜欢学安卓嘛?")
.setPositiveButton("喜欢",null)//null处添加点击事件的监听器
.setNegativeButton("一般吧",null)
.setNeutralButton("不喜欢",null)
.create()
.show();
- 设置单选列表
setSingleChoiceItems(CharSquerence[] a, int b, new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) { ..}});
- 设置多选列表
setMultiChoiceItems(CharSquerence[] a, boolean[]
b,OnClickListener listener)
- 设置普通列表
setItems(CharSquerence[] a,OnClickListener listener)
- 设置自定义视图
setView(View v)
3.例子二(单选)
new AlertDialog.Builder(MainActivity.this)
.setIcon(android.R.drawable.sym_def_app_icon)
.setTitle("单选框")
.setSingleChoiceItems(new String [] {"成都","武汉","北京"},0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setNegativeButton("取消",null)
.create()
.show();
4.例子三(多选)
String [] items={"javaweb开发","Android开发","大数据","操作系统"};
boolean[] defaultChoices = {false , true ,false ,true};//记录是否选中
new AlertDialog.Builder(MainActivity.this)
.setIcon(android.R.drawable.sym_def_app_icon)
.setTitle("多选框")
.setMultiChoiceItems(items,defaultChoices,new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
}
})
.setPositiveButton("确定",null)
.create()
.show();
5.例子四(列表)
String [] items={"javaweb开发","Android开发","大数据","操作系统"};
new AlertDialog.Builder(MainActivity.this)
.setIcon(android.R.drawable.sym_def_app_icon)
.setTitle("列表对话框")
.setItems(items,new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.create()
.show();
6.自定义视图步骤
- 自定义布局文件login.xml
- 获取布局实例xxxLayout
- 设置setView(xxxLayout)
具体在后文我们会具体来做解释,这里先点一下
7.拖动条对话框
View view=getLayoutInflater().inflate(R.layout.layout,null);//获取这个视图 自定义对话框基本就是这样获取的
new AlertDialog.Builder(MainActivity.this)
.setIcon(android.R.drawable.sym_def_app_icon)
.setTitle("自定义对话框")
.setView(view)
.setPositiveButton("确定",null)
.create()
.show();
二.ProgressDialog进度条对话框
- ProgressDialog
- 将进度条简单包裹起来,可以设置进度条的各种式样
- 启动线程,模拟耗时任务的进行,下载完成后,自动消失
- setMax:设置最大值
- setCancelable:设置可以被取消
- setProgressStyle:设置进度条风格
1.例子一
ProgressDialog progressDialog=new ProgressDialog(MainActivity.this);
progressDialog.setMax(100);
progressDialog.setCancelable(true);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setTitle("下载文件");
progressDialog.setMessage("已经下载文件");
progressDialog.show();
三.日期/时间选择对话框
1.DatePickerDialog-日期选择对话框
Calendar c=Calendar.getInstance();//日期
DatePickerDialog datepickerDialog=new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
}
},c.get(Calendar.YEAR)
,c.get(Calendar.MONTH)
,c.get(Calendar.DATE));
datepickerDialog.setIcon(android.R.drawable.sym_def_app_icon);
datepickerDialog.setTitle("日期对话框");
datepickerDialog.show();
2.TimePickerDialog-时间选择对话框
Calendar c=Calendar.getInstance();//日期
TimePickerDialog timePickerDialog=new TimePickerDialog(MainActivity.this,new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
}
},c.get(Calendar.HOUR_OF_DAY)
,c.get(Calendar.MINUTE),true);
timePickerDialog.setIcon(android.R.drawable.alert_dark_frame);
timePickerDialog.setTitle("时间选择框");
timePickerDialog.show();
四.自定义选择对话框
1.自定义选择对话框步骤
- 继承Dialog类
- 实现
- 构造方法和onCreate
- 在styles.xml中自定义style
- 自定义布局
- 事件监听
- View.OnClickListener
- 传值
- 自定义并实现接口(传出)
- 类成员变量(传入)
public class MyDialog extends AlertDialog {
protected MyDialog(Context context) {
super(context);
}
public MyDialog(Context context, int theme) {//这里的第二个参数是你指定的style
super(context, theme);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
View mView = LayoutInflater.from(getContext()).inflate(R.layout.layout, null);
super.setContentView(mView);
}
}
MyDialog myDialog=new MyDialog(MainActivity.this,android.R.style.Theme_Dialog);//指定提供的style
myDialog.setIcon(android.R.drawable.sym_def_app_icon);
myDialog.setTitle("自定义对话框");
myDialog.show();
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入你的用户名"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密 码"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入你的密码"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="确定" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="取消" />
</LinearLayout>
</LinearLayout>
END!!!!!!!!!!!!!!!!