Android PopWindow的替代品BasePopup
版权声明:本文为xing_star原创文章,转载请注明出处!
本文同步自http://javaexception.com/archives/109
背景描述
最近一段时间,又看到了这个开源项目BasePopup,记得最早关注这个项目还是17年,看了下commit的提交记录,作者从16年开始维护到19年,还是很有毅力的,看issue以及文档觉得作者挺用心的,为作者点赞。做Android开发很多年了,貌似关于PopWindow的使用倒是不是特别的多,以前弹窗的技术实现基本上用的是DialogFragment,自定义一个BaseDialogFragment,约定一些方法,最终子类扩展实现,基本上满足了绝大多数的弹窗需求,无论是底部弹窗,中间弹窗,全屏弹窗还是什么其他的,有些可以使用AlertDialog等之类的实现,popWindow的使用真的很少碰到,最近接触的几个项目,倒是使用Popwindow的地方比较多,当然按理说这些弹窗也可以用Dialog或者是DialogFragment实现,不过项目已经采用了PopWindow的方式,那就尽量保持统一的技术实现。
PopWindow的使用场景
一般来说,包含用来做条件筛选,比如美团上的多级条件筛选,或者是其他app上的条件筛选,仿BootomSheet底部弹出的效果(用Dialog,PopWindow都可以实现),仿朋友圈评论点赞的PopWindow效果,仿AlertDialog弹出类的PopWindow(这种既然系统提供了,那就用系统的,就不需要自己在自定义PopWindow实现这种效果),以及有动画渐变渐进式效果的弹窗效果,比如QQ空间里面的那个点击弹框,基本上用PopWindow也可以实现绝大多数的弹窗需求(可能你会碰到很多坑,所以这里还是得借助下BasePopup),PopWindow有一大优势,就是可以细粒度的控制弹窗的显示位置,比如当前view的上下左右方位等,或者是稍微偏移点,都是可行的。这一点是Dialog,或者是DialogFragment无法比的。
使用默认的PopWindow会碰到的问题
相信你在用PopWindow过程中碰到了不少问题,这里我们列举几个常见的问题。
1. 设置主布局根节点大小无效(layout_width, layout_height),这种情况下我们需要给根节点再加一层父容器,让父容器成为xml根节点
2.Android N以上设备popWindow显示有问题,以及存在阴影覆盖问题等,这种看这篇描述的http://javaexception.com/archives/108
3.使用window测量,控制大小,测量的宽高都是0
4. 以及诸多更多的细节点,不一一举例了
BasePopup的demo效果
依次是底部弹窗,popWindow支持输入法输入文本,仿朋友圈点赞评论效果



demo apk体验地址为https://fir.im/pfc9
项目使用
想要使用BasePopup直接到对应的github上按照对应的文档接入,教程写的很详细,有问题也可以在issue里面查找,再贴一下项目地址https://github.com/razerdp/BasePopup。
参考资料
popupWindow使用常见的错误 https://www.jianshu.com/p/d352847cc08b
BasePopup项目地址 https://github.com/razerdp/BasePopup
Android PopWindow的替代品BasePopup的更多相关文章
- Android Popwindow使用总结
Android Popwindow使用总结 转 https://www.jianshu.com/p/3812ff5ef272 1.基本使用方法 View view = getLayoutInflate ...
- Android popwindow 消失监听
LisviewPop.setOnDismissListener(new OnDismissListener() { @Override public void onDismiss() { //改变显示 ...
- android愤怒小鸟游戏、自定义View、掌上餐厅App、OpenGL自定义气泡、抖音电影滤镜效果等源码
Android精选源码 精练的范围选择器,范围和单位可以自定义 自定义View做的小鸟游戏 android popwindow选择商品规格颜色尺寸效果源码 实现Android带有锯齿背景的优惠样式源码 ...
- C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码
前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 嗯,前面讲 ...
- Android的PopWindow动画实现
转载博客:http://www.open-open.com/lib/view/open1423626956186.html 1.实现步骤 1.主布局activity_main.xml <Rela ...
- [转]Android在初始化时弹出popwindow的方法 .
转自:http://blog.csdn.net/sxsboat/article/details/7340759 留个人备用0.0 Android中在onCreate()时弹出popwindow,很多人 ...
- android listview 替代品recyclerview详解
安卓v7支持包下的ListView替代品————RecyclerView RecyclerView这个控件也出来很久了,相信大家也学习的差不多了,如果还没学习的,或许我可以带领大家体验一把这个艺术 ...
- Android应用Activity、Dialog、PopWindow、Toast窗体加入机制及源代码分析
[工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处.尊重劳动成果] 1 背景 之所以写这一篇博客的原因是由于之前有写过一篇<Android应用setCont ...
- Android中在activity中弹出一个popwindow
//-----在onCreate方法--中------创建popwindow布局 --pop_item-------------------------- View view=Lay ...
随机推荐
- Codeforces_731F_(前缀和)
F. Video Cards time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- 创建全局函数 匹配查找 std::map
std::map<CString, CString> m_NameToType; 所有文件之外声明一个函数 在要用到的地方 加入存储的东西 extern std::map<CStr ...
- mstsc windows7/10远程桌面身份验证错误 要求的函数不受支持
之前好好的能远程桌面连接到服务器,但是今天来就不能连接上了,并提示:身份验证错误.要求的函数不受支持. 猜想可能是Windows又更新了什么鬼,后面查询资料知道是由于CredSSP加密Oracle修正 ...
- Idea 创建maven web项目(手工创建)
参考链接:https://www.cnblogs.com/justuntil/p/7511787.html 话不多说,直接上图: 1.创建maven项目 创建项目完成,项目结构如下: 2.项目部署配置 ...
- Attention-based Model
一.Attention与其他模型 1.LSTM.RNN的缺点:输入的Memory长度不能太长,否则参数会很多. 采用attention可以输入长Memory,参数不会变多. 2.Sequence to ...
- 第一节:numpy之ndarray对象数据类型及属性
- [国家集训队2012]tree(陈立杰)
[国家集训队2012]tree(陈立杰) 题目 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树.题目保证有解. INPUT 第一行V,E,need分别表示 ...
- 当前,我们的DJANGO项目的requirements.txt文件
晒一晒,看用得多不多..:) amqp==1.4.7 anyjson==0.3.3 billiard==3.3.0.21 celery==3.1.19 celery-with-redis==3.0 c ...
- ddl in PL/SQL
If you write DDL directly in PL/SQL. You will hit error. 1 DECLARE 2 str_sql varchar2(500); 3 begin ...
- 2015 测试赛 同构 hihoCoder
题目1 : 同构 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定2个树A和B,保证A的节点个数>=B的节点个数. 现在你需要对树A的边进行二染色. 一个好的染色 ...