博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android popupWindow打造一个扩展性强的的抽象BasePopup类
阅读量:6148 次
发布时间:2019-06-21

本文共 685 字,大约阅读时间需要 2 分钟。

首先献上github地址~

  其实原理很简单,因为popupWindow支持我们添加一个View作为内容,但是关于popup的动画控制不太方便,所以我们可以这么想——

1 - 我们弄一个全屏的popup,添加一个全屏的view(ViewGroup)

2 - 这个全屏的view有一个灰色半透明的背景色(自己喜欢-V-)

3 - 这个viewGroup里面有我们需要展示的view,比如选择菜单,listView什么的,甚至来个viewPager都可以

4 - popup我们就不弄动画了,直接让它展示,我们的动画针对的是我们需要展示的view

5 - 实际效果就是:我们show出来,于是先出现一个灰色半透明的浮层,然后我们需要展示的view开始播放动画~

6 - 因为这个view是我们自定的,所以可定制性很高,而且动画可以我们自己控制哦

7 - 继承我们的BasePopup,再也不用这么麻烦弄那么多代码了。

想要优化的地方:

1 - 在dismiss()时也弄个退出的动画。我曾经试过在onDismissListener里面弄,但效果不太好。

最近想到这么一个方法:

  在dismiss前先播放动画,给动画弄个AnimationListener,在onAnimationEnd里真正的dismiss掉

感觉这个方法可以,但我暂时还没试验。

这个gitHub我会维护到我见过的Popup都能通过这个BasePopup简单的扩展出来为止,如果不能扩展,就意味着还有进步的地方哈哈-V- 

目前实现了这三个效果图:

从底部上滑:

仿微信朋友圈的评论弹窗:

比较常见的放大缩小:

转载地址:http://zeqya.baihongyu.com/

你可能感兴趣的文章
职业经理人的弊和利
查看>>
思科旗舰无线EA4500图赏
查看>>
测试jdk是否安装完成
查看>>
SCOM 2007 R2监控系统安装部署(一)SCOM简介及安装SQL Server 2008 R2 数据库
查看>>
Java小应用目录快速变网站
查看>>
R 操作矩阵和计算SVD的基本操作记录
查看>>
Pointer 指针
查看>>
adb 功能大全
查看>>
Ubuntu Linux系统环境变量配置文件【转】
查看>>
vs2015如何设置类或函数前不显示引用的数量
查看>>
Linux下比较常用的svn命令
查看>>
bootstrap模态框input不能获取焦点并编辑【转】
查看>>
iphone three20 How to Start Three20 Photo Viewer in Thumbnail view?
查看>>
python 使用pymssql连接sql server数据库
查看>>
VC Windows 服务开发(转)
查看>>
工厂方法模式【设计模式学习-05】
查看>>
修改作业执行时间
查看>>
gsoap 使用
查看>>
HTML5移动开发即学即用(双色)
查看>>
Flume日志收集
查看>>