JAVA UIHarmonyOS 功能很强大的弹窗XPopup
参考资料
XPopup
我们也可以参考Android的XPopup的框架去比较学习
api讲解
项目集成XPopup
1.我们需要在项目级的bulid.gradle 添加如下代码
-
repositories {
-
mavenCentral()
-
}
2.我们在entry的目录下bulid.gradle 添加如下代码
implementation 'io.openharmony.tpc.thirdlib:XPopup:1.1.4'
普通的弹框
该方法是显示普通的弹框,详细api方法和注释见代码
-
popupView = new XPopup.Builder(getContext())
-
// 设置是否显示导航栏,默认是显示的。如果你希望弹窗隐藏导航栏,就设置为true
-
.hasNavigationBar(false)
-
/*
-
* 是否在弹窗消失后就立即释放资源,杜绝内存泄漏,仅仅适用于弹窗只用一次的场景,默认为false。
-
* 如果你的弹窗对象需是复用的,千万不要开启这个设置
-
*/
-
.isDestroyOnDismiss(true)
-
.hasBlurBg(true)//是否设置背景为高斯模糊背景。默认为false
-
.dismissOnTouchOutside(false)//设置点击弹窗外面是否关闭弹窗,默认为true
-
.autoDismiss(false)//设置当操作完毕后是否自动关闭弹窗,默认为true。比如:点击Confirm弹窗的确认按钮默认是关闭弹窗,如果为false,则不关闭
-
.popupAnimation(PopupAnimation.NoAnimation)// 为弹窗设置内置的动画器,默认情况下,已经为每种弹窗设置了效果最佳的动画器;如果你不喜欢,仍然可以修改。
-
/*
-
* title:标题
-
* content:内容
-
* cancelBtnText:取消按钮文本(左边按钮文本)
-
* confirmBtnText:确定按钮文本(右边按钮文本)
-
* confirmListener:确定按钮点击事件(右边按钮点击事件)
-
* cancelListener:取消按钮点击事件(左边按钮点击事件)
-
* isHideCancel:是否隐藏左侧按钮(设置单个点击按钮使用)
-
*/
-
.asConfirm("标题", "内容:床前明月光,疑是地上霜;举头望明月,低头思故乡。",
-
"取消", "确定",
-
new OnConfirmListener() {
-
-
public void onConfirm() {
-
popupView.dismiss();
-
}
-
-
}, new OnCancelListener() {
-
-
public void onCancel() {
-
popupView.dismiss();
-
}
-
}, false);
-
popupView.show();
加载的弹框
该方法是显示加载的弹框,详细api方法和注释见代码
-
if (loadingPopup == null) {
-
loadingPopup = (LoadingPopupView) new XPopup.Builder(getContext())
-
.dismissOnBackPressed(false)//todo 点击 弹框外部 加载框消失
-
.asLoading("加载中")
-
.show();
-
} else {
-
loadingPopup.show();
-
}
代码实现
xml 布局创建
创建两个text按钮,分别是“普通的弹框”,“加载弹框”,作用分别是用于创建普通的弹框,和创建加载的弹框,代码如下
-
-
<DirectionalLayout
-
xmlns:ohos="http://schemas.huawei.com/res/ohos"
-
ohos:height="match_parent"
-
ohos:width="match_parent"
-
ohos:alignment="left"
-
ohos:orientation="vertical">
-
-
<Text
-
ohos:id="$ id:text_Normal"
-
ohos:height="100vp"
-
ohos:text_alignment="center"
-
ohos:width="match_content"
-
ohos:layout_alignment="horizontal_center"
-
ohos:text="普通弹框"
-
ohos:text_size="40vp"
-
/>
-
-
<Text
-
ohos:id="$ id:text_load"
-
ohos:height="100vp"
-
ohos:text_alignment="center"
-
ohos:width="match_parent"
-
ohos:layout_alignment="horizontal_center"
-
ohos:background_element="#ed6262"
-
ohos:text="加载框"
-
ohos:text_size="40vp"
-
/>
-
-
</DirectionalLayout>
java 代码功能实现
代码分别实现这个功能,代码如下
-
package com.newdemo.myapplication.slice;
-
-
import com.lxj.xpopup.XPopup;
-
import com.lxj.xpopup.core.BasePopupView;
-
import com.lxj.xpopup.enums.PopupAnimation;
-
import com.lxj.xpopup.impl.LoadingPopupView;
-
import com.lxj.xpopup.interfaces.OnCancelListener;
-
import com.lxj.xpopup.interfaces.OnConfirmListener;
-
import com.lxj.xpopup.interfaces.XPopupCallback;
-
import com.newdemo.myapplication.ResourceTable;
-
import ohos.aafwk.ability.AbilitySlice;
-
import ohos.aafwk.content.Intent;
-
import ohos.agp.components.Component;
-
-
public class MainAbilitySlice extends AbilitySlice {
-
private BasePopupView popupView;
-
private LoadingPopupView loadingPopup;
-
-
public void onStart(Intent intent) {
-
super.onStart(intent);
-
super.setUIContent(ResourceTable.Layout_ability_main);
-
-
findComponentById(ResourceTable.Id_text_Normal).setClickedListener(new Component.ClickedListener() {
-
-
public void onClick(Component component) {
-
popupView = new XPopup.Builder(getContext())
-
// 设置是否显示导航栏,默认是显示的。如果你希望弹窗隐藏导航栏,就设置为true
-
.hasNavigationBar(false)
-
/*
-
* 是否在弹窗消失后就立即释放资源,杜绝内存泄漏,仅仅适用于弹窗只用一次的场景,默认为false。
-
* 如果你的弹窗对象需是复用的,千万不要开启这个设置
-
*/
-
.isDestroyOnDismiss(true)
-
.hasBlurBg(true)//是否设置背景为高斯模糊背景。默认为false
-
.dismissOnTouchOutside(false)//设置点击弹窗外面是否关闭弹窗,默认为true
-
.autoDismiss(false)//设置当操作完毕后是否自动关闭弹窗,默认为true。比如:点击Confirm弹窗的确认按钮默认是关闭弹窗,如果为false,则不关闭
-
.popupAnimation(PopupAnimation.NoAnimation)// 为弹窗设置内置的动画器,默认情况下,已经为每种弹窗设置了效果最佳的动画器;如果你不喜欢,仍然可以修改。
-
/*
-
* title:标题
-
* content:内容
-
* cancelBtnText:取消按钮文本(左边按钮文本)
-
* confirmBtnText:确定按钮文本(右边按钮文本)
-
* confirmListener:确定按钮点击事件(右边按钮点击事件)
-
* cancelListener:取消按钮点击事件(左边按钮点击事件)
-
* isHideCancel:是否隐藏左侧按钮(设置单个点击按钮使用)
-
*/
-
.asConfirm("标题", "内容:床前明月光,疑是地上霜;举头望明月,低头思故乡。",
-
"取消", "确定",
-
new OnConfirmListener() {
-
-
public void onConfirm() {
-
popupView.dismiss();
-
}
-
-
}, new OnCancelListener() {
-
-
public void onCancel() {
-
popupView.dismiss();
-
}
-
}, false);
-
popupView.show();
-
}
-
});
-
findComponentById(ResourceTable.Id_text_load).setClickedListener(new Component.ClickedListener() {
-
-
public void onClick(Component component) {
-
if (loadingPopup == null) {
-
loadingPopup = (LoadingPopupView) new XPopup.Builder(getContext())
-
.dismissOnBackPressed(false)//todo 点击 弹框外部 加载框消失
-
.asLoading("加载中")
-
.show();
-
} else {
-
loadingPopup.show();
-
}
-
}
-
});
-
-
}
-
-
-
public void onActive() {
-
super.onActive();
-
}
-
-
-
public void onForeground(Intent intent) {
-
super.onForeground(intent);
-
}
-
}
运行效果
欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfgiibe
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13