2.10对话框
AletDialog:功能最为丰富,实际应用最广泛的对话框。
ProgressDialog:进度对话框,是对简单进度条的封装。
DataPickerDialog:日期选择对话框。
TimePickerDialog:时间选择对话框。
自定义对话框:对话框布局自定义,并设置监听事件。
2.10.1自定义对话框
1.创建一个自定义样式文件
2.
View view=getLayoutInflater().inflater(R.layout.test,null);//获取布局文件
builder.setView(view);//设置的自定义样式布局文件,直接使用布局文件id设置视图
Button.btn=view.findViewById(R.id.login);
btn.setText("测试登录");//获取自定义组件id
注:dismiss()和cancel()功能效果一样,cancel能回调setOnCancelListener()事件
2.10.2ProgressDialog进度条对话框(API 26不建议使用)
作用:显示加载进度,以弹出形式显示,将进度条简单包裹起来,可以设置进度条的各种样式,启动线程,模拟耗时任务的进行,下载完成后自动消失。
用法:结合Dialog与ProgressBar的用法
1.创建
ProgressDialog dialog=new ProgressDialog(comtext MainActivity.this());
2.属性设置:如:进度样式、进度条最大值、进度条的显示精确进度等、标题、图标
3.相关事件
设置基本样式属性:
1.获取窗口
Window window=getWindow();
2.窗口管理器
WindowManager manager=get WindowManager();
3.手机屏幕分辨率
Display d=manager.getDefaultDisplay();
4.参数值对象
WindowManager.LayoutParams p=Windows.getAttributes();
5.设置值
p.height=(int)(d.getHeight()*0.4);
p.width=(int)(d.getWidth()*0.8);
p.alpha=0.8f;//透明度
6.加载参数值
Window.setAttributes(p);
示例
//this表示该对话框是针对当前Activity的
ProgressDialog progressDialog=new ProgressDialog(Dialog Activity.this);
//设置最大值为100
ProgressDialog.setMax(100);
//设置可以被取消
ProgressDialog.setCancelable(true);
ProgressDialog.setCanceledOnTouchOutside(true);//点击外部返回
ProgressDialog.setProgress(100);//设置进度条
//设置进度条风格STYLE_HORIZONTAL
ProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//精确水平圆圈
ProgressDialog.setTitle("任务进度");
ProgressDialog.setMessage("耗时任务完成百分比");
ProgressDialog.setIndeterminate(flase);//精确显示
ProgressDialog.show()://显示
//放在show()之后,不然有些属性是没有效果的,比如height和width
Window dialogWindow=dialog.getWindow();
WindowManager m=getWindowManager();
Display d=m.getDefaultDisplay();//获取屏幕宽高用
WindowManager.LayoutParams p=dialogWindow.getAttributes();//获取对话框当前的参数值
//设置高度和宽度
p.height=(int)(d.getHeight()*0.4);//高度设置为屏幕的0.4
p.width=(int)(d.getWidth()*0.6);//宽度设置为屏幕的0.6
p.gravity=Gravity.Top;//设置位置
p.alpha=0.8f;//设置透明度
dialogWindow.setAttributes(p);
2.10.3DateDialog日期Dialog
作用:用于显示日期设置
public DatePickerDialog(Context context,
OnDateSetListener callBack,//点击确定的回调监听
int year,//显示年份
int monthOfYear,//显示月份
int dayOfMonth)//显示日
构造方法初始化:month 0-11;比实际月份小1
DatePickerDialog:OnDateSetListener();事件处理
onDateSet(DatePicker view,int year,int month,int dayOfMonth);获取用户选择日期
2.10.4TimeDialog时间Dialog
public TimePickerDialog(Context context,
OnTimeSetListener callBack,//点击确定的回调监听
int hourOfDay,//几点
int minute,//几分
boolean is 24 HourView)//是否是24小时制
2.10.5自定义Dialog
继承Dialog类
实现:
1.构造方法和onCreate
2.在styles.xml中自定义style
3.自定义布局
事件监听:View.OnClickListener
传值:
自定义并实现接口(传出)
类成员变量(传入)