现在的位置: 首页 > 综合 > 正文

常见分享自下而上的弹出窗实现

2018年05月16日 ⁄ 综合 ⁄ 共 1039字 ⁄ 字号 评论关闭

先来剖析一下PopupWindow的一些东西
1、它是一个Window,与Dialog最大的不同是它不依赖于Activity,可以在一个应用的任何地方弹出来 ,但是它需要本应用的一个Context。
2、在重写它时间,必须要调用super(Context context)这个构造方法,否则在低版本一定会出现异常
3、简单布局的PopWindow弹出不会出现占满全屏的现象,因为它在写XML时间它的宽高已经计算好了,但是如果它是各个布局和ListView,GridView混合来做的话,那就一定会有问题,因为它事先无法计算出来,只有等到绘制结束之后才能绘制出来,这是一个很大的问题。
解决方案有两个:
     1>如果这个listview,gridview比较固定可以写成固定布局
     2>根据主流分辨率,作判断,它的高度用屏幕的比例来算出。
4、主流应用如何应用PopupWindow。
     1>、像微博那样,宽度和高度是一个固定的值,可以去滑动,很显然 它用的是一个listview,它不需要在代码中考虑它的真实高度和宽度。
     2>、像微信或者其实应用那样,弹出的PopupWindow特别整洁,高度,宽度非常一致,那么它没有用到listView和GridView这种事件不知道高度和宽度的组件 ,它是直接写死在里面的,事件都知道了宽高,所以不会出现我遇见的那个问题。
     所以,要么是可滑动,要么是写死。
     所以,我的项目里面的方法是比较奇葩,它是GridView,但是我把它设置为了全屏,背景是一个半透明的,可以看到后面,屏幕下面显示具体内容,要显示的那一部分用Wrap_content。




PopupWindow的应用之一是分享弹出。
1、用一个popupwindow,但是在实现背后透明窗口的时间,会出现半透明的的背景是和分享这一块一起弹出来的,看着会比较难受。

2、用一个Dialog,可以直接用它那种渐变的背景,但是,当用从下而上弹出的时间,又做为一个整体弹出来,它的最好的用法是淡入淡出,用Dialog的默认动画,
给Dialog加动画,其实是给它所属的Window加动画,会是一个整体的动画。

3、用两个PopupWindow实现,最好的方案,一个负责从下而上弹出,一个负责渐变。








http://download.csdn.net/detail/dacainiao007/7214651

http://download.csdn.net/detail/dacainiao007/7227163

抱歉!评论已关闭.