版权声明:本文为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的更多相关文章

  1. Android Popwindow使用总结

    Android Popwindow使用总结 转 https://www.jianshu.com/p/3812ff5ef272 1.基本使用方法 View view = getLayoutInflate ...

  2. Android popwindow 消失监听

    LisviewPop.setOnDismissListener(new OnDismissListener() { @Override public void onDismiss() { //改变显示 ...

  3. android愤怒小鸟游戏、自定义View、掌上餐厅App、OpenGL自定义气泡、抖音电影滤镜效果等源码

    Android精选源码 精练的范围选择器,范围和单位可以自定义 自定义View做的小鸟游戏 android popwindow选择商品规格颜色尺寸效果源码 实现Android带有锯齿背景的优惠样式源码 ...

  4. C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 嗯,前面讲 ...

  5. Android的PopWindow动画实现

    转载博客:http://www.open-open.com/lib/view/open1423626956186.html 1.实现步骤 1.主布局activity_main.xml <Rela ...

  6. [转]Android在初始化时弹出popwindow的方法 .

    转自:http://blog.csdn.net/sxsboat/article/details/7340759 留个人备用0.0 Android中在onCreate()时弹出popwindow,很多人 ...

  7. android listview 替代品recyclerview详解

    安卓v7支持包下的ListView替代品————RecyclerView   RecyclerView这个控件也出来很久了,相信大家也学习的差不多了,如果还没学习的,或许我可以带领大家体验一把这个艺术 ...

  8. Android应用Activity、Dialog、PopWindow、Toast窗体加入机制及源代码分析

    [工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处.尊重劳动成果] 1 背景 之所以写这一篇博客的原因是由于之前有写过一篇<Android应用setCont ...

  9. Android中在activity中弹出一个popwindow

    //-----在onCreate方法--中------创建popwindow布局   --pop_item--------------------------        View view=Lay ...

随机推荐

  1. nuxt https

    我用的模板是nxut-express,版本是:1.4.2.服务器:阿里云.一.申请免费证书:网站能通过https访问,首先得申请https证书,付费的阿里云上有售卖的,一年几千块.免费的可以通过cer ...

  2. 【JavaScript进阶】深入理解JavaScript中ES6的Promise的作用并实现一个自己的Promise

    1.Promise的基本使用 // 需求分析: 封装一个方法用于读取文件路径,返回文件内容 const fs = require('fs'); const path = require('path') ...

  3. Ubuntu 18.04 nvidia driver 390.48 安装 TensorFlow 1.12.0 和 PyTorch 1.0.0 详细教程

    最近要在个人台式机上搭建TensorFlow和PyTorch运行环境,期间遇到了一些问题.这里就把解决的过程记录下来,同时也可以作为安装上述环境的过程记录. 如果没有遇到类似的问题,想直接从零安装上述 ...

  4. 20170704-WNDR4300uboot help info

    Unknown command 'env' - try 'help'ar7240> help? - alias for 'help'base - print or set address off ...

  5. linux学习7-数据流重定向

    数据流重定向 实验介绍 你可能对重定向这个概念感到些许陌生,但你应该在前面的课程中多次见过>或>>操作了,并知道他们分别是将标准输出导向一个文件或追加到一个文件中.这其实就是重定向, ...

  6. linux学习1-基础知识

    1.输入一行字跳到行头 ctrl+a:跳到行尾 ctrl+e: 2.一次创建多个文件 touch love_{1..10}_linux.txt touch love_{1,3,5}_linux.txt ...

  7. 【[Offer收割]编程练习赛 14 A】小Hi和小Ho的礼物

    [题目链接]:http://hihocoder.com/problemset/problem/1505 [题意] [题解] 考虑Meet in the middle. 因为两个数的和不是很大; 直接用 ...

  8. HDU 5446 Unknown Treasure

    Unknown Treasure Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Other ...

  9. 联赛前集训日记Day2

    考试 倒数第二,我已经废了= = T1 那么水的点转区间都看不出来 T2 裸的线段树生打了个啥都不是的分块 T3 枚举想骗spj的部分分,结果啥都没有 GG 刷题 改题改的也是心累,现在蒙的要死 生活 ...

  10. hdu_1859_最小长方形_201402282048

    最小长方形 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...