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 ...
随机推荐
- Escaping Closures 两点:本质是生命周期标示符
1.block需要(拷贝)保存: 2.block引用的环境变量需要处理. 相当于oc中的copy block. Escaping Closures A closure is said to escap ...
- 关于在win7旗舰版32位上 安装 net4.0 的闪退问题研究 和安装sqlserver2008问题
1.配置文件客户端[目标x86x64]的 可以安装 2.配置文件完全的目标x86x64的 出现闪退. 3.服务器核心的出现无法安装 安装 sqlserver 2008R2数据库 报错 \最后留下了它, ...
- python 模块学习——time模块
Python语言中与时间有关的模块主要是:time,datetime,calendar time模块中的大多数函数是调用了所在平台C library的同名函数, 所以要特别注意有些函数是平台相关的,可 ...
- Django - 创建多对多及增加示例
创建多对多: 方式一: 自定义关系表 备注:自定义表Host.Application,通过自定义表,将表Host和Application进行关联(通过外键方式工): 执行语句:python manag ...
- HDU 3152 Obstacle Course(优先队列,广搜)
题目 用优先队列优化普通的广搜就可以过了. #include<stdio.h> #include<string.h> #include<algorithm> usi ...
- POJ——3169Layout(差分约束)
POJ——3169Layout Layout Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14702 Accepted ...
- Linux之iptables(一、防火墙的概念)
防火墙的概念 一.安全技术 入侵检测与管理系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化.定位来自内外网络的威胁情况,主要以提供报告和事后监督为主,提供 ...
- zk strom 本地环境启动命令
bin/zkServer.sh statusbin/zkServer.sh startbin/storm nimbus &bin/storm ui &bin/storm drpc &a ...
- 一篇入门Node.js
目录 1.Node.js 简介 2.Node.js NPM 3.Node.js 模块 4.Node.js 事件 5.Node.js Buffer 6.Node.js 文件系统 7.Node.js St ...
- webstorm+nodejs环境中安装淘宝镜像
用过nodejs的人都知道,从node的官方模板库下载依赖包的时候,经常会遇到“假死”(页面静止不动)的状态,这种速度简直要逼死焦急地等待下班的人.还好咱们万能的淘宝提供了淘宝镜像这么一个不要更好用的 ...