【Kevin Learn QMUI】--> QMUIPopup
2024-06-27 04:16:41
简介
qmui
提供一个浮层,支持自定义浮层的内容,支持在指定 View
的任一方向旁边展示该浮层,支持自定义浮层出现/消失的动画。
开始使用
qmui
引入库
请确保配置了 JCenter 仓库源,然后直接引用:
implementation"com.qmuiteam:qmui:2.0.0-alpha10"
至此,QMUI 已被引入项目中。配置主题
把项目的 theme 的 parent 指向 QMUI.Compat,至此,QMUI 可以正常工作。
<style name="Theme.QMUIDemo" parent="QMUI.Compat.NoActionBar"></style>
普通 PopupWindow
1. 效果图
2. 代码
private void showNormalPop(View view) {TextView textView = new TextView(App.CONTEXT);textView.setLineSpacing(QMUIDisplayHelper.dp2px(this, 4), 1.0f);int padding = QMUIDisplayHelper.dp2px(this, 20);textView.setPadding(padding, padding, padding, padding);textView.setText("QMUIPopup 可以设置其位置以及显示和隐藏的动画");textView.setTextColor(Color.BLUE);QMUIPopups.popup(this, QMUIDisplayHelper.dp2px(this, 250)).preferredDirection(QMUIPopup.DIRECTION_BOTTOM).view(textView).skinManager(QMUISkinManager.defaultInstance(this)).edgeProtection(QMUIDisplayHelper.dp2px(this, 20)).offsetX(QMUIDisplayHelper.dp2px(this, 20)).offsetYIfBottom(QMUIDisplayHelper.dp2px(this, 5)).shadow(true).arrow(true).animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER).onDismiss(new PopupWindow.OnDismissListener() {@Overridepublic void onDismiss() {Toast.makeText(PopupActivity.this, "onDismiss", Toast.LENGTH_SHORT).show();}}).show(view);}
带遮罩层 PopupWindow
1. 效果图
2. 代码
private void showPop(View view) {TextView textView = new TextView(this);textView.setLineSpacing(QMUIDisplayHelper.dp2px(this, 4), 1.0f);int padding = QMUIDisplayHelper.dp2px(this, 20);textView.setPadding(padding, padding, padding, padding);textView.setText("通过 dimAmount() 设置背景遮罩");textView.setTextColor(Color.BLUE);QMUIPopups.popup(this, QMUIDisplayHelper.dp2px(this, 250)).preferredDirection(QMUIPopup.DIRECTION_BOTTOM).view(textView).edgeProtection(QMUIDisplayHelper.dp2px(this, 20)).dimAmount(0.6f).animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER).skinManager(QMUISkinManager.defaultInstance(this)).onDismiss(new PopupWindow.OnDismissListener() {@Overridepublic void onDismiss() {Toast.makeText(PopupActivity.this, "onDismiss", Toast.LENGTH_SHORT).show();}}).show(view);}
动态更新 PopupWindow
1. 代码
private void showLoadingPop(View view) {final TextView textView = new TextView(this);textView.setLineSpacing(QMUIDisplayHelper.dp2px(this, 4), 1.0f);int padding = QMUIDisplayHelper.dp2px(this, 20);textView.setPadding(padding, padding, padding, padding);textView.setText("加载中...");textView.setTextColor(ContextCompat.getColor(this, R.color.app_color_description));QMUIPopups.popup(this, QMUIDisplayHelper.dp2px(this, 250)).preferredDirection(QMUIPopup.DIRECTION_BOTTOM).view(textView).edgeProtection(QMUIDisplayHelper.dp2px(this, 20)).dimAmount(0.6f).skinManager(QMUISkinManager.defaultInstance(this)).animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER).onDismiss(new PopupWindow.OnDismissListener() {@Overridepublic void onDismiss() {Toast.makeText(PopupActivity.this, "onDismiss", Toast.LENGTH_SHORT).show();}}).show(view);// 这里只是演示,实际情况应该考虑数据加载完成而 Popup 被 dismiss 的情况textView.postDelayed(new Runnable() {@Overridepublic void run() {textView.setText("使用 Popup 最好是一开始就确定内容宽高," +"如果宽高位置会变化,系统会有一个的移动动画不受控制,体验并不好");}}, 2000);}
带关闭按钮 PopupWindow
1. 效果图
2. 代码
private void showPopupWindow(View view) {QMUISkinValueBuilder builder = QMUISkinValueBuilder.acquire();QMUIFrameLayout frameLayout = new QMUIFrameLayout(this);frameLayout.setBackground(QMUIResHelper.getAttrDrawable(this, R.attr.qmui_skin_support_popup_bg));builder.background(R.attr.qmui_skin_support_popup_bg);QMUISkinHelper.setSkinValue(frameLayout, builder);frameLayout.setRadius(QMUIDisplayHelper.dp2px(this, 12));int padding = QMUIDisplayHelper.dp2px(this, 20);frameLayout.setPadding(padding, padding, padding, padding);TextView textView = new TextView(this);textView.setLineSpacing(QMUIDisplayHelper.dp2px(this, 4), 1.0f);textView.setPadding(padding, padding, padding, padding);textView.setText("这是自定义显示的内容");textView.setTextColor(Color.BLUE);builder.clear();builder.textColor(R.attr.app_skin_common_title_text_color);QMUISkinHelper.setSkinValue(textView, builder);textView.setGravity(Gravity.CENTER);builder.release();int size = QMUIDisplayHelper.dp2px(this, 200);FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(size, size);frameLayout.addView(textView, lp);QMUIPopups.fullScreenPopup(this).addView(frameLayout).closeBtn(true).skinManager(QMUISkinManager.defaultInstance(this)).onBlankClick(new QMUIFullScreenPopup.OnBlankClickListener() {@Overridepublic void onBlankClick(QMUIFullScreenPopup popup) {Toast.makeText(PopupActivity.this, "点击到空白区域", Toast.LENGTH_SHORT).show();}}).onDismiss(new PopupWindow.OnDismissListener() {@Overridepublic void onDismiss() {Toast.makeText(PopupActivity.this, "onDismiss", Toast.LENGTH_SHORT).show();}}).show(view);}
快捷菜单 PopupWindow
1. 效果图
2. 代码
private void showMenuPopup(View view) {QMUIPopups.quickAction(this,QMUIDisplayHelper.dp2px(this, 56),QMUIDisplayHelper.dp2px(this, 56)).shadow(true).skinManager(QMUISkinManager.defaultInstance(this)).edgeProtection(QMUIDisplayHelper.dp2px(this, 20)).addAction(new QMUIQuickAction.Action().icon(R.drawable.icon_quick_action_copy).text("复制").onClick(new QMUIQuickAction.OnClickListener() {@Overridepublic void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {quickAction.dismiss();Toast.makeText(PopupActivity.this, "复制成功", Toast.LENGTH_SHORT).show();}})).addAction(new QMUIQuickAction.Action().icon(R.drawable.icon_quick_action_line).text("划线").onClick(new QMUIQuickAction.OnClickListener() {@Overridepublic void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {quickAction.dismiss();Toast.makeText(PopupActivity.this, "划线成功", Toast.LENGTH_SHORT).show();}})).addAction(new QMUIQuickAction.Action().icon(R.drawable.icon_quick_action_share).text("分享").onClick(new QMUIQuickAction.OnClickListener() {@Overridepublic void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {quickAction.dismiss();Toast.makeText(PopupActivity.this, "分享成功", Toast.LENGTH_SHORT).show();}})).show(view);}
快捷菜单(多 Item) PopupWindow
1. 效果图
2. 代码
private void showMoreMenuPopup(View view) {QMUIPopups.quickAction(this,QMUIDisplayHelper.dp2px(this, 56),QMUIDisplayHelper.dp2px(this, 56)).shadow(true).skinManager(QMUISkinManager.defaultInstance(this)).edgeProtection(QMUIDisplayHelper.dp2px(this, 20)).addAction(new QMUIQuickAction.Action().icon(R.drawable.icon_quick_action_copy).text("复制").onClick(new QMUIQuickAction.OnClickListener() {@Overridepublic void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {quickAction.dismiss();Toast.makeText(PopupActivity.this, "复制成功", Toast.LENGTH_SHORT).show();}})).addAction(new QMUIQuickAction.Action().icon(R.drawable.icon_quick_action_line).text("划线").onClick(new QMUIQuickAction.OnClickListener() {@Overridepublic void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {quickAction.dismiss();Toast.makeText(PopupActivity.this, "划线成功", Toast.LENGTH_SHORT).show();}})).addAction(new QMUIQuickAction.Action().icon(R.drawable.icon_quick_action_share).text("分享").onClick(new QMUIQuickAction.OnClickListener() {@Overridepublic void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {quickAction.dismiss();Toast.makeText(PopupActivity.this, "分享成功", Toast.LENGTH_SHORT).show();}})).addAction(new QMUIQuickAction.Action().icon(R.drawable.icon_quick_action_delete_line).text("删除划线").onClick(new QMUIQuickAction.OnClickListener() {@Overridepublic void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {quickAction.dismiss();Toast.makeText(PopupActivity.this, "删除划线成功", Toast.LENGTH_SHORT).show();}})).addAction(new QMUIQuickAction.Action().icon(R.drawable.icon_quick_action_dict).text("词典").onClick(new QMUIQuickAction.OnClickListener() {@Overridepublic void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {quickAction.dismiss();Toast.makeText(PopupActivity.this, "打开词典", Toast.LENGTH_SHORT).show();}})).addAction(new QMUIQuickAction.Action().icon(R.drawable.icon_quick_action_share).text("圈圈").onClick(new QMUIQuickAction.OnClickListener() {@Overridepublic void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {quickAction.dismiss();Toast.makeText(PopupActivity.this, "查询成功", Toast.LENGTH_SHORT).show();}})).addAction(new QMUIQuickAction.Action().icon(R.drawable.icon_quick_action_dict).text("查询").onClick(new QMUIQuickAction.OnClickListener() {@Overridepublic void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {quickAction.dismiss();Toast.makeText(PopupActivity.this, "查询成功", Toast.LENGTH_SHORT).show();}})).show(view);}
【Kevin Learn QMUI】--> QMUIPopup相关推荐
- 【Kevin Learn QMUI】--> QMUIBottomSheet
简介 在 Dialog 的基础上重新定制了 show() 和 hide() 时的动画效果, 使 Dialog 在界面底部升起和降下.提供了以下两个面板样式: 列表样式:使用 QMUIBottomShe ...
- 【Kevin Learn QMUI】-->qmui 知识梳理
不断学习,做更好的自己!
- 【Kevin Learn QMUI】--> QMUISlider
不断学习,做更好的自己!
- 【Kevin Learn QMUI】--> Android Studio 大黄蜂使用介绍
不断学习,做更好的自己!
- 【Kevin Learn QMUI】--> QMUIViewPager
不断学习,做更好的自己!
- 【Kevin Learn QMUI】-->QMUIDialog
不断学习,做更好的自己!
- 【Kevin Learn QMUI】-->QMUILinkTextView
不断学习,做更好的自己!
- 【Kevin Learn QMUI】-->QMUITipDialog
不断学习,做更好的自己!
- 【Kevin Learn QMUI】--> QMUIProgressBar
不断学习,做更好的自己!
最新文章
- sketch如何做设计稿交互_当屏幕可以折叠,交互设计怎么做
- 脑机接口EEG信号分类算法
- McAfee ENS
- 3层、5层、3层一个卷积核BP神经网络性能比较
- Spring Remoting: Remote Method Invocation (RMI)--转
- openwrt 遍译php_[OpenWrt Wiki] OpenWrt编译 – 说明
- 串口服务器怎么测信号,串口服务器如何调试
- 【计算机本科补全计划】Mysql 学习小计(2)
- 一日一技:Ocelot网关使用IdentityServer4认证
- 求数组的最大值php,求PHP数组最大值,最小值的代码
- 十年数据分析经验,总结出这三类分析工具最好用
- 字符串太长 pep8_Python f字符串– PEP 498 –文字字符串插值
- CentOS7和Ubuntu16设置静态ip的方法
- paip.java c# .net php python调用c++ c dll so windows api 总结
- 用户只有一部手机,怎么保护私钥—— mixin如何实现资产安全
- 主机炸鸡?Z世代主机市场终究是肯德基的?
- JAVA打包成EXE文件,能在没有jre环境的电脑上运行
- 代码评审的价值和规范
- Java小游戏之《大鱼吃小鱼》
- NYoj21 三个水杯