XPopup
功能强大,UI简洁,交互优雅的通用弹窗!可以替代Dialog,PopupWindow,PopupMenu,BottomSheet等组件,自带十几种效果良好的动画, 支持完全的UI和动画自定义!
编写本库的初衷有以下几点:
- 项目有这样常见需求:中间和底部弹出甚至可拖拽的对话框,指定位置的PopupMenu或者PopupWindow,指定区域阴影的弹出层效果
- 市面上已有的类库要么功能不足够,要么交互效果不完美,有着普遍的缺点,就像BottomSheet存在的问题一样。比如:窗体消失的动画和背景渐变动画不一致,窗体消失后半透明背景仍然停留一会儿
设计思路:
综合常见的弹窗场景,我将其分为3类:
- Center类型,就是在中间弹出的弹窗,比如确认和取消弹窗,Loading弹窗
- Bottom类型,就是从页面底部弹出,比如从底部弹出的分享窗体,知乎的从底部弹出的评论列表
- Attach类型,就是弹窗的位置需要依附于某个View,就像系统的PopupMenu效果一样,但自定义性很强
动画设计:
为了增加交互的趣味性,遵循Material Design,在设计动画的时候考虑了很多细节,过渡,层级的变化。具体可以从Demo中感受。
Gradle
implementation 'com.lxj:xpopup:latest release'
ScreenShot
使用
为了方便使用,已经内置了几种常见弹窗的实现:
-
显示确认和取消对话框
XPopup.get(getContext()).asConfirm("我是标题", "我是内容", new OnConfirmListener() { @Override public void onConfirm() { toast("click confirm"); } }) .show();
-
显示带输入框的确认和取消对话框
XPopup.get(getContext()).asInputConfirm("我是标题", "请输入内容。", new OnInputConfirmListener() { @Override public void onConfirm(String text) { toast("input text: " + text); } }) .show();
-
显示中间弹出的列表弹窗
XPopup.get(getActivity()).asCenterList("请选择一项",new String[]{"条目1", "条目2", "条目3", "条目4"}, new OnSelectListener() { @Override public void onSelect(int position, String text) { toast("click "+text); } }) .show();
-
显示中间弹出的加载框
XPopup.get(getActivity()).asLoading().show();
-
显示从底部弹出的列表弹窗
XPopup.get(getActivity()).asBottomList("请选择一项",new String[]{"条目1", "条目2", "条目3", "条目4","条目5"}, new OnSelectListener() { @Override public void onSelect(int position, String text) { toast("click "+text); } }) .show();
-
显示依附于某个View的弹窗
XPopup.get(getActivity()).asAttachList(new String[]{"分享", "编辑", "不带icon"}, new int[]{R.mipmap.ic_launcher, R.mipmap.ic_launcher}, new OnSelectListener() { @Override public void onSelect(int position, String text) { toast("click "+text); } }) .atView(v) // 依附于所点击的View,必须设置 .show();
-
关闭弹窗
XPopup.get(getContext()).dismiss();
-
更多更多的使用方式,请查看Github Readme 说明。
联系方式
Github:github.com/li-xiaojun/…
QQ:16167479
这个库是刚刚发布,我很需要您的建议或者想法,请不要吝啬你的需求,狠狠地在Github提issue吧。
今天的文章强大美观的通用弹窗XPopup,一个就足够!分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/13879.html