Popwindow与Dialog不同方式展示底部动画弹起弹窗
2016-10-19 10:56
232 查看
一 先看效果吧
1 Popwindow 方式
2 Dialog 方式
二 Popwindow 与Dialog的区别
1 相同点 :
a:都是Android中的对话框 实现弹窗功能 可显示在页面的大部分位置
b:都可以根据setContentView来设置窗体的自定义内容
c:都可以触摸控件以外的区域关闭控件
Popwindow : popwindow.setOutsideTouchable(true);
Dialog: dialog.setCanceledOnTouchOutside(true);
2 不同点:
a :最重要一点 ,Dialog是非阻塞式对话框:AlertDialog弹出时,后台还可以做事情;而PopupWindow是阻塞式对话框 PopupWindow 弹出时,程序会等待在 PopupWindow退出前,程序一直等待,只有当我们调用了dismiss方法的后,PopupWindow退出,程序才会向下执行。这两种区别的表现是:Dialog弹出时,背景是黑色的,但是当我们点击背景,Dialog会消失,证明程序不仅响应Dialog的操作,还响应其他操作,其他程序没有被阻塞,这说明了Dialog是非阻塞式对话框;PopupWindow弹出时,背景没有什么变化,但是当我们点击背景的时候,程序没有响应,只允许我们操作PopupWindow,其他操作被阻塞。
b: 设置Popwindow 和 Dialog 的宽高
1动态设置Popwindow的宽高WindowManager m =context.getWindowManager();//获得屏幕管理器 Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用 WindowManager.LayoutParams p =context.getWindow().getAttributes(); // 获取对话框当前的参数值 p.height = (int) (d.getHeight() * 1); // 高度设置为屏幕的0.6 p.width = (int) (d.getWidth() * 1); // 宽度设置为屏幕的0.5 context.getWindow().setAttributes(p); 如果想使Popwindow弹出时也出现背景变暗 可使用一下方案 将透明度和出现弹窗的Activity 传进去 即可
2动态设置Dialog的宽高
WindowManager m =dialogWindow.getWindowManager();//获得屏幕管理器 Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用 WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值 p.height = (int) (d.getHeight() * 0.6); // 高度设置为屏幕的0.6 p.width = (int) (d.getWidth() * 1); // 宽度设置为屏幕的0.5 dialogWindow.setAttributes(p);
c:当弹出 Popwindow时背景不会变灰色 而弹出Dialog时背景会自动变灰色
所以要让Popwindow也变灰色 需要使用两种方法方法
第一种 :传入透明度 和 弹出Popwindow的的Activity /** * 设置添加屏幕的背景透明度 * * @param bgAlpha */ public void backgroundAlpha(float bgAlpha, Activity context) { WindowManager.LayoutParams lp = context.getWindow().getAttributes(); lp.alpha = bgAlpha; //0.0-1.0 context.getWindow().setAttributes(lp); } 第二种 :给Popwindow 设置背景 <pre name="code" class="java"> // 实例化一个ColorDrawable颜色为半透明 ColorDrawable dw = new ColorDrawable(0xb0000000); // 设置SelectPicPopupWindow弹出窗体的背景 popupWindow.setBackgroundDrawable(dw);
d:在使用 样式 Style时的不同
Popwindow :this.setAnimationStyle(R.style.mypopwindow_anim_style
Dialog: // 定义Dialog布局和参数 dialog = new Dialog(context, R.style.custom_dialog);
三 Popwindow 和 Dialog的使用
1 使用之前的思考 : 在项目中需要使用 对话框 的需求 。
如果 需要让窗口出现一个具体的位置 比如一个控件的相对位置 此时建议使用 Popwindow具体方法为 popwindow.showAsDropDown(view); popwindow.showAsDropDown(view,intx,inty);
如果 对于窗口弹出时,程序还在执行其他操作 需要使用Dialog 或者没有特别的要求时 使用Dialog
例子上面有
2 Dialog和Popwindow在使用底部弹起时 需要使用的到特定的 Style 样式
还是直接下载源码看吧
源码效果
源码地址 :http://download.csdn.net/download/qq_33553515/9659012
相关文章推荐
- 用PopupWindow,Activity以及Dialog不同方式实现从底部弹出对话框
- BottomDialog 是一个通过 DialogFragment 实现的底部弹窗布局,并且支持弹出动画,支持任意布局http://shaohui.me
- 使用PopupWindow和Activity两种不同的方式实现弹窗效果
- 【多级树形菜单-dialog自定义动画弹出方式-手势监听】android实现treeView
- 动画Animation两种实现方式的不同效果
- Android底部dialog的几种实现方式
- 单击Button弹出和双击Grid弹出,获取动画焦点的方式不同
- 218_底部Dialog的动画
- 安卓 Dialog底部动画向上显示
- Android自定义Dialog样式,从屏幕底部滑出动画
- 自定义 Dialog方式的加载动画
- 【多级树形菜单-dialog自定义动画弹出方式-手势监听】手势监听
- 【学习笔记】android动画的不同实现方式以及要点
- 底部弹出popWindow的动画
- dialog使用方法(同一页面,调用一个js代码,实现多个不同样式的弹窗)
- android动画 底部弹窗 效果
- dialog 透明度及动画从底部进入出来
- android开发(31) 动画演示 - 从页面底部向上弹出dialog,消失时逐渐向下
- Android自定义底部带有动画的Dialog
- 217_把充满屏幕的底部dialog弹窗封装起来