Android popupWindow打造一个扩展性强的的抽象BasePopup类

首先献上github地址~

https://github.com/razerdp/BasePopup

  其实原理很简单,因为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- 

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

从底部上滑:

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

比较常见的放大缩小:

时间: 2024-09-21 16:51:24

Android popupWindow打造一个扩展性强的的抽象BasePopup类的相关文章

PreloadDataCache支持预取的数据缓存,使用简单,支持多种缓存算法,支持不同网络类型,扩展性强

主要特性:(1).使用简单 (2).可自动预取新数据 (3).可选择多种缓存算法(包括FIFO.LIFO.LRU.MRU.LFU.MFU等15种)或自定义缓存算法 (4).省流量性能佳(有且仅有一个线程获取数据) (5).支持不同类型网络处理 (6)缓存可序列化到本地 缓存可从文件中恢复 (7).扩展性强 (8). 包含map的大多数接口 适用:Java和Android开发中获取数据较耗时的应用,如网络通讯.响应慢数据获取,在类似网易新闻.花瓣这类应用中可以起到很好的效果.对于图片缓存可直接使用

php弹出错误警告函数扩展性强

利用php弹出警告的函数,整理到自己的代码库中去在遇到错误的地方可用到此函数,扩展性强,喜欢的朋友可以收藏下 分享一个非常实用,本人一直在用的利用php弹出警告的函数,整理到自己的代码库中去在遇到错误的地方可用到此函数,扩展性强,完整代码如下  代码如下: //********弹出alert框并跳转到指定页面******//  function alert($message,$url='',$isAlert=true,$title='提示'){  echo '<html><head>

非常实用的php弹出错误警告函数扩展性强_php技巧

分享一个非常实用,本人一直在用的利用php弹出警告的函数,整理到自己的代码库中去在遇到错误的地方可用到此函数,扩展性强,完整代码如下 复制代码 代码如下: //********弹出alert框并跳转到指定页面******// function alert($message,$url='',$isAlert=true,$title='提示'){ echo '<html><head><meta http-equiv="Content-Type" content

一个扩展性的自下而上的编程方法

asyncfp是一个扩展性的自下而上的编程方法.引入了一种新的角色能够与其他角色的同步或异步进行交互操作,以及支持组件的相互依存关系,和复杂的生命周期问题. asyncfp 0.4版本修复了注册表的错误. 下载地址:http://sourceforge.net/projects/asyncfp/files/blip/blip-0.4.zip/download  

请高人指点,VB.net动态对象创建与删除,并且该对象拥有很强的扩展性,我的代码,就是无法实现删除功能!

问题描述 PublicClassForm2PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickForm1.Button2=NewSystem.Windows.Forms.ButtonForm1.TabPage1.Controls.Add(Form1.Button2)Form1.Button2.Location=NewPoint(Form1.Label1.Te

最强DIY扩展性 易迅人气游戏机箱导购

[天极网华南朱伟]机箱是一台主机的关键组建,对于系统的稳定至关重要.但要选购一款合适的机箱并不容易,尤其是对http://www.aliyun.com/zixun/aggregation/18699.html">游戏玩家来说,更是如此.相比以前的机箱,现在的机箱各项性能都有较大的提升,一般来讲都能满足大众用户需求.编辑就从易迅网推荐一些强大DIY扩展性的机箱,供大家选购. 先马 夜鹰2 USB3.0 中塔式机箱 主要特点:200mm超宽大五金结构 易迅报价:289元 购买链接:http:/

Android高级控件(五)——如何打造一个企业级应用对话列表,以QQ,微信为例

Android高级控件(五)--如何打造一个企业级应用对话列表,以QQ,微信为例 看标题这么高大上,实际上,还是运用我么拿到listview去扩展,我们讲什么呢,就是研究一下QQ,微信的这种对话列表,我们先看一个传统的ListView是怎么样的,我们做一个通讯录吧,通讯录的组成就是一个头像,一个名字,一个电话号码,一个点击拨打的按钮,既然这样,那我们的item就出来了 call_list_item.xml <?xml version="1.0" encoding="ut

Class撑起了OOP世界的天。Class类是OO的基本单元,OO的世界都是通过一个一个的类协作完成的,提高软件的重用性、灵活性和扩展性(转)

引言 在OO的工作中,我们一定会涉及到类,抽象类和接口.那么类和抽象类以及接口到底扮演的什么角色? 本文主要是从人类社会的角度阐述类与抽象类以及接口的"社会"关系,从而让我们抛弃书上的那些死记硬背的概念,快速理解他们的区别与联系?   如果大家觉得还有必要把这块更新的更好,还请多多反馈. 如果觉的对您有用还请点击 "推荐"下,我会持续更新更多新的内容. 古老的传说 相传盘古开天劈地后,女娲一天在黄河边梳头时,突发奇想以泥土仿照自己抟土造人,创造并构建人类社会.后来又

优秀开源项目之三:高性能、高并发、高扩展性和可读性的网络服务器架构State Threads

译文在后面. State Threads for Internet Applications Introduction State Threads is an application library which provides a foundation for writing fast and highly scalable Internet Applications on UNIX-like platforms. It combines the simplicity of the multi