十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

5分钟跑通 XPopup 弹窗:四类场景 + 自定义全解

5分钟跑通 XPopup 弹窗:四类场景 + 自定义全解 5分钟跑通 XPopup 弹窗四类场景 自定义全解【免费下载链接】XPopupXPopup2.0版本重磅来袭2倍以上性能提升带来可观的动画性能优化和交互细节的提升功能强大交互优雅动画丝滑的通用弹窗可以替代DialogPopupWindowPopupMenuBottomSheetDrawerLayoutSpinner等组件自带十几种效果良好的动画 支持完全的UI和动画自定义(Powerful and Beautiful Popup for Androidcan absolutely replace DialogPopupWindowPopupMenuBottomSheetDrawerLayoutSpinner. With built-in animators , very easy to custom popup view.)项目地址: https://gitcode.com/GitHub_Trending/xpo/XPopupXPopup 弹窗是一款 Android 弹窗组件库可替代 Dialog、PopupWindow、PopupMenu、BottomSheet、DrawerLayout、Spinner。中间、底部、依附、抽屉四类内置弹窗开箱即用另有十余种动画和完整的 UI 自定义入口生命周期与软键盘适配已内置。适合会 Java/Kotlin、想快速落地弹窗方案的 Android 开发者。 先看效果先对上号再动手先确认你要做的交互长什么样。Gif 有录制损耗真机上更顺滑仓库 app 模块里也有对应 Demo 页可对照。底部列表弹窗上滑收起、下滑全展开手势和嵌套滚动都已处理好。依附弹窗菜单跟着按钮出现在屏幕边缘智能避让不会越界。⚡ 五分钟接入gradle 依赖怎么加这一节只解决一件事装好 XPopup 并弹出第一个确认框。仓库根目录 build.gradle 加 jitpack 源模块依赖如下版本号以 jitpack 上的最新 release 为准2.9.x 均兼容allprojects { repositories { maven { url https://jitpack.io } } } dependencies { implementation com.github.li-xiaojun:XPopup:2.9.19 implementation androidx.appcompat:appcompat:1.3.1 implementation com.google.android.material:material:1.4.0 implementation androidx.recyclerview:recyclerview:1.2.1 }想对照源码跑 Demo把仓库拉到本地即可git clone https://gitcode.com/GitHub_Trending/xpo/XPopup依赖装好后在任意 Activity 里链式调用5 行代码弹出第一个 XPopup 弹窗XPopup.Builder(this) .asConfirm(提示, 确定要删除这个项目吗, () - { // 确认回调业务写在这里 }) .show();加载框只需把asConfirm换成asLoading(加载中...)同样是链式调用一行搞定。 按场景选弹窗四类内置弹窗对号入座弹窗选错类型交互就会别扭。下面把四种常用交互对号入座确认提示、列表选择、菜单跟随、侧边导航。确认提示删除、支付前先问一句高危操作弹个中间确认框用户点掉即走不打断心流。asConfirm自带标题、正文和双按钮XPopup.Builder(this) .asConfirm(提示, 确定要删除该项目吗, () - { deleteProject(); dismiss(); // 关掉弹窗 }) .show();列表选择从几个选项里挑一个选项少时屏幕中央弹一个列表最省心。回调里能拿到位置和内容把方法名换成asBottomList弹窗就从底部弹出并自带手势拖拽收起。XPopup.Builder(this) .asCenterList(请选择, new String[]{微信, QQ, 复制链接}, (position, text) - { showToast(text); }) .show();菜单跟随操作菜单贴着触发按钮商品列表的操作菜单、朋友圈的点赞面板都是这类需求。Attach 弹窗绑定到任意 View空间不足时自动翻转避让菜单不会画出屏幕XPopup.Builder(this) .asAttachList(new String[]{置顶, 编辑, 删除}, null, (position, text) - { handle(text); }) .attach(btnMore) .show();侧边导航不嵌套 DrawerLayout 也能有抽屉任何页面都能拥有抽屉不用改布局层级。Drawer 是抽象基类继承它、给布局、写初始化再用asCustom展示方向由popupPosition指定public class MyDrawerPopup extends DrawerPopupView { public MyDrawerPopup(NonNull Context c) { super(c); } Override protected int getImplLayoutId() { return R.layout.layout_drawer; } Override protected void onCreate() { super.onCreate(); // 手势拖出/收回已内置这里只管业务 View } }new XPopup.Builder(this) .popupPosition(PopupPosition.Left) .asCustom(new MyDrawerPopup(this)) .show(); 自定义弹窗三步走继承基类怎么写内置样式不够用时自定义弹窗只有三步继承基类、指定布局、初始化逻辑。asCustom能把任意子类包进 Builder动画、手势、生命周期全部继承你只写自己的部分。第一步继承对应基类例如中间弹窗就继承 CenterPopupViewpublic class MyCenterPopup extends CenterPopupView { public MyCenterPopup(NonNull Context context) { super(context); } // 第二步指定布局 Override protected int getImplLayoutId() { return R.layout.popup_mine; } // 第三步初始化逻辑写法同 Activity 的 onCreate Override protected void onCreate() { super.onCreate(); findViewById(R.id.btn_ok).setOnClickListener(v - dismiss()); // …… } }调用方式和内置弹窗一致new XPopup.Builder(this) .asCustom(new MyCenterPopup(this)) .show();✨ 体验细节一栏收动画、手势、键盘、生命周期这一节把散落的交互细节一次说清四行看完不用翻多个文档。内置动画PopupAnimation 共 19 个枚举值涵盖缩放、平移、滚动三类popupAnimation()一行切换想自己写照着 animator 源码目录 抄。手势交互Bottom、Drawer 类弹窗天然支持拖拽关闭Bottom 还内置三档拖动与嵌套滚动协调列表滚动和收起手势不打架。软键盘适配弹窗里有输入框时XPopup 会监听键盘高度变化并自动调整位置输入框不被遮挡autoOpenSoftInput(true)还能让弹窗跟着键盘弹起。生命周期XPopup 实现了 LifecycleOwner弹窗可见期间可接收 LiveData 推送dismiss 后不再更新宿主 Activity finish 时自动释放不必手动防泄漏。⚠️ 避坑清单常见问题一张表查完接入时容易踩的坑把官方 wiki 和社区反馈汇总成下面这张表照着查就行。现象原因解法依赖解析失败XPopup 传递依赖 subsampling-scale-image-view 与项目版本冲突对 XPopup 加exclude group: com.davemorrissey.labs编译直接报错工程 compileSdkVersion 低于 29升到compileSdkVersion 29及以上show 调用无反应非主线程调用或宿主 Activity 已销毁回主线程调用确认宿主处于活跃状态动画掉帧弹窗布局层级过深、动画期间执行了耗时逻辑压平布局耗时操作移出 show 流程动画选轻量款宿主销毁后内存泄漏手动持有 Context 且未随生命周期释放交给 XPopup 监听生命周期自动释放勿长期强引用弹窗弹不出来的疑难杂症布局 id、宽高设置与基类约定不符对照 README.md 检查布局与 Builder 参数装完就能跑git clone https://gitcode.com/GitHub_Trending/xpo/XPopup更多用法见 README.md。【免费下载链接】XPopupXPopup2.0版本重磅来袭2倍以上性能提升带来可观的动画性能优化和交互细节的提升功能强大交互优雅动画丝滑的通用弹窗可以替代DialogPopupWindowPopupMenuBottomSheetDrawerLayoutSpinner等组件自带十几种效果良好的动画 支持完全的UI和动画自定义(Powerful and Beautiful Popup for Androidcan absolutely replace DialogPopupWindowPopupMenuBottomSheetDrawerLayoutSpinner. With built-in animators , very easy to custom popup view.)项目地址: https://gitcode.com/GitHub_Trending/xpo/XPopup创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表