Android UI总结三 弹出框的设计

一.弹出框实现的几种形式

1.Dialog和AlertDialog

在Android3.0之前系统提供的控件。注:官方不推荐直接使用Dialog创建对话框。传统的new AlertDialog在屏幕旋转时,第一不会保存用户输入的值,第二还会报异常,因为Activity销毁前不允许对话框未关闭。而通过DialogFragment实现的对话框则可以完全不必考虑旋转的问题。

AlertDialog是非阻塞式对话框:AlertDialog弹出时,后台还可以做事情;AlertDialog弹出时,背景是黑色的,但是当我们点击背景,AlertDialog会消失,证明程序不仅响应AlertDialog的操作,还响应其他操作,其他程序没有被阻塞,这说明了AlertDialog是非阻塞式对话框;

1.Dialog在显示之前不需要设置宽高。

2.Dialog响应系统的back事件,在点击back的时候dialog会消失

3.Dialog会给弹出的背景加蒙层

4.Dialog默认设有标题,可以通过dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)取消标题

5.Dialog显示需要加grarity,如果不设置,Dialog默认是Gravity.CENTER。

6.Dialog显示有默认背景,可以通过setBackgroundDrawable(new ColorDrawable(android.R.color.transparent));去掉。

2.PopUpWindow

1.PopupWindow是阻塞式对话框:PopupWindow弹出时,程序会等待,在PopupWindow退出前,程序一直等待,只有当我们调用了dismiss方法的后,PopupWindow退出,程序才会向下执行。PopupWindow弹出时,背景没有什么变化,但是当我们点击背景的时候,程序没有响应,只允许我们操作PopupWindow,其他操作被阻塞。

2.PopupWindow有默认背景,可以通过setBackgroundDrawable(new ColorDrawable(android.R.color.transparent))去掉。

3.PopupWindow显示的时候需要设置Gravity

4.PopupWindow没有标题

5.PopupWindow不会添加蒙层

6.PopupWindow显示前需要设置宽和高

7.Popupwindow默认不会响应物理键盘的back,除非显示设置了popup.setFocusable(true);

 

2.DialogFragment

DialogFragment在android 3.0时被引入。是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框。典型的用于:展示警告框,输入框,确认框等等。

使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好的管理其声明周期,它和Fragment有着基本一致的声明周期。且DialogFragment也允许开发者把Dialog作为内嵌的组件进行重用,类似Fragment(可以在大屏幕和小屏幕显示出不同的效果)。

 

4.基于R.id.content的添加view

 

5.基于Window Manager实现

 

二.下载地址

 

三.视频地址

 

四.弹出框的实现

 

五.通用弹框的实现

1.使用到的设计模式

builder模式 对于参数传递的封装

2.一般需要考虑的参数

title

显示位置

显示框大小

是否需要背景

是否需要左右按钮 左右按钮的事件回传

我们自己的view的传递

圆角的适配问题

是否相应点击back键 

是否响应点击背景等

3.参数的传递方式

builder设计模式有利于清晰明了的知道传递的参数

4.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatrixData

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值