第二章:常用UI组件(3)

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
传值:
自定义并实现接口(传出)
类成员变量(传入)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值