欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android PopWindow的替代品BasePopup

程序员文章站 2022-03-22 11:34:07
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/109 背景描述 最近一段时间,又看到了这个开源项目BasePopup,记得最早关注这个项目还是17年,看了下commit的提交记录,作者从16年开始维护到19 ......

版权声明:本文为xing_star原创文章,转载请注明出处!

本文同步自

背景描述

最近一段时间,又看到了这个开源项目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显示有问题,以及存在阴影覆盖问题等,这种看这篇描述的

3.使用window测量,控制大小,测量的宽高都是0

4. 以及诸多更多的细节点,不一一举例了

basepopup的demo效果

依次是底部弹窗,popwindow支持输入法输入文本,仿朋友圈点赞评论效果

Android PopWindow的替代品BasePopup

Android PopWindow的替代品BasePopup

Android PopWindow的替代品BasePopup

demo apk体验地址为

项目使用

想要使用basepopup直接到对应的github上按照对应的文档接入,教程写的很详细,有问题也可以在issue里面查找,再贴一下项目地址https://github.com/razerdp/basepopup

参考资料

popupwindow使用常见的错误 

basepopup项目地址 https://github.com/razerdp/basepopup