HarmonyOS APP开发入门3——组件(四 CommonDialog普通弹框组件 )

文章目录

  • HarmonyOS APP开发入门3——组件(四 CommonDialog普通弹框组件 )
    • CommonDialog普通弹框组件

CommonDialog普通弹框组件

CommonDialog是一种在弹出框消失之前,用户无法操作其他界面内容的对话框。通常用来展示用户当前需要的或用户必须关注的信息或操作。对话框的内容通常是不同组件进行组合布局,如:文本、列表、输入框、网格、图标或图片,常用于选择或确认信息。

构造方法

构造方法 描述
CommonDialog(Context context) 创建一个对话框实例。

常用方法

接口名 描述
setButton(int buttonNum, String text, IDialog.ClickedListener listener) 设置按钮区的按钮,可设置按钮的位置、文本及相关点击事件。
setContentCustomComponent(Component component) 自定义内容区域。
setContentImage(int resId) 设置要在内容区域显示的图标。
setContentText(String text) 设置要在内容区域中显示的文本。
setDestroyedListener(CommonDialog.DestroyedListener destroyedListener) 设置对话框销毁监听器。
setImageButton(int buttonNum, int resId, IDialog.ClickedListener listener) 设置对话框的图像按钮。
setMovable(boolean movable) 设置对话框是否可以拖动。
setTitleCustomComponent(DirectionalLayout component) 自定义标题区域。
setTitleIcon(int resId, int iconId) 设置标题区域图标。
setTitleSubText(String text) 在标题区域设置补充文本信息。
setTitleText(String text) 在标题区域中设置标题文本。
setAlignment(int alignment) 设置对话框的对齐模式。
setAutoClosable(boolean closable) 设置是否启用触摸对话框外区域关闭对话框的功能。
setCornerRadius(float radius) 设置对话框圆角的半径。
setDuration(int ms) 设置对话框自动关闭前的持续时间。
setOffset(int offsetX, int offsetY) 设置对话框的偏移量。
setSize(int width, int height) 设置对话框的大小。
setTransparent(boolean isEnable) 设置是否为对话框启用透明背景。
show() 显示对话框。

创建对话框

CommonDialog dialog = new CommonDialog(getContext());

在UI线程调用该方法创建一个CommonDialog的实例。getContext()是获取上下文对象的方法,也可以以其他的方式将其传入使用。

使用对话框

下面显示一个包含标题、内容和按钮的简单对话框。设置按钮时传入的IDialog.BUTTON3表示按钮为按钮区从左至右第三个按钮,当只设置一个按钮时,按钮居中,多个按钮时以相同比例平均分配在按钮区。

CommonDialog dialog = new CommonDialog(getContext());
dialog.setTitleText("Notification");
dialog.setContentText("This is CommonDialog Content area.");
dialog.setButton(IDialog.BUTTON3, "CONFIRM", (iDialog, i) -> iDialog.destroy());
dialog.show();

修改窗口尺寸

import static ohos.agp.components.ComponentContainer.LayoutConfig.MATCH_CONTENT; // 注意引入...dialog.setSize(800, MATCH_CONTENT);

修改位置

dialog.setAlignment(LayoutAlignment.BOTTOM);
dialog.setOffset(0, 200);

销毁监听

dialog.setDestroyedListener(() -> {// TODO: 销毁后需要执行的任务。
});

延时关闭

dialog.setDuration(5000);

使用默认布局的基本用法

//把普通弹框弹出来就可以了
//1.创建弹框的对象
//this:当前弹框是哪展示在当前的界面中的。 CommonDialog cd = new CommonDialog(this);
//2.因为弹框里面是有默认布局的 //设置标题
cd.setTitleText("系统定位服务已关闭");
//设置内容
cd.setContentText("请打开定位服务,以便司机师傅能够准确接您上车");
//自动关闭
cd.setAutoClosable(true);
//设置按钮
//参数一:按钮的索引 0 1 2
//参数二:按钮上的文字
//参数三:点击了按钮之后能做什么
cd.setButton(0, "设置", new IDialog.ClickedListener() { @Override
public void onClick(IDialog iDialog, int i)
{ //写上点击了设置之后,要做的事情。 //如果点击之后我不需要做任何事情,在第三个参数中传递null就可以了。 } });cd.setButton(1, "取消", new IDialog.ClickedListener() { @Overridepublic void onClick(IDialog iDialog, int i) { //销毁弹框cd.destroy(); } }); //把弹框显示出来
cd.show(); }

自定义样式

用户也可以通过自定义样式来实现自己想要的对话框效果。调用setTitleCustomComponent方法和setContentCustomComponent方法来实现标题区域或内容区域的自定义效果。

  1. 在Project窗口,打开“entry > src > main > resources > base > media”,添加所需图片至media文件夹下,本例以“transparent_bg.JPG”为例。
  2. 在Project窗口,点击“entry > src > main > resources > base > layout”,右键选择“New > Layout Resource File”,命名为“layout_custom_dialog”,单击回车键。示例代码如下:
<?xml version="1.0" encoding="utf-8"?>
<DependentLayoutxmlns:ohos="http://schemas.huawei.com/res/ohos"ohos:id="$+id:custom_container"ohos:height="match_content"ohos:width="300vp"ohos:background_element="#F5F5F5"><Textohos:id="$+id:custom_title"ohos:height="match_content"ohos:width="match_content"ohos:horizontal_center="true"ohos:margin="8vp"ohos:padding="8vp"ohos:text="TITLE"ohos:text_size="16fp"/><Imageohos:id="$+id:custom_img"ohos:height="150vp"ohos:width="280vp"ohos:below="$id:custom_title"ohos:horizontal_center="true"ohos:image_src="$media:transparent_bg"ohos:clip_alignment="center"/><Buttonohos:height="match_content"ohos:width="match_parent"ohos:background_element="#FF9912"ohos:below="$id:custom_img"ohos:margin="8vp"ohos:padding="8vp"ohos:text="BUTTON"ohos:text_color="#FFFFFF"ohos:text_size="18vp"/>
</DependentLayout>

抽取工具类

public class MyDialog {public static void showDialog(Context context,String msg){ //把弹框展示出来 //创建一个弹框对象 CommonDialog cd = new CommonDialog(context); //大小是默认包裹内容的。//弹框默认是居中放置 //弹框默认是透明的 //弹框默认是直角,可以把直角设置为圆角cd.setCornerRadius(15); //把messagedislog的xml文件加载到内存当中。交给弹框并展示出来。 //加载xml文件并获得一个布局对象 //parse方法:加载一个xml文件,返回一个布局对象。 //参数一:要加载的xml文件 //参数二:该xml文件是否跟其他xml文件有关。如果无关是独立的,就写null就可以了 //参数三:如果文件是独立的,那么直接写false DirectionalLayout dl = (DirectionalLayout);LayoutScatter.getInstance(context).parse(ResourceTable.Layout_messagedialog, null, false); //要给布局里面的文本和按钮设置事件或者修改内容 //此时需要用dl去调用,表示获取的是dl这个布局里面的组件。 Text title = (Text) dl.findComponentById(ResourceTable.Id_message); Button submit = (Button)                    dl.findComponentById(ResourceTable.Id_submit); Button cancel = (Button) dl.findComponentById(ResourceTable.Id_cancel); //title给标题设置内容 title.setText(msg); //还需要给两个按钮添加单击事件 submit.setClickedListener(new Component.ClickedListener() {@Overridepublic void onClick(Component component) { title.setText("点击了确定按钮"); } }); //取消按钮也要添加点击事件cancel.setClickedListener(new Component.ClickedListener() { @Overridepublic void onClick(Component component) { //当点击了取消按钮之后,把弹框给关闭cd.destroy(); } }); //此时布局对象跟弹框还没有任何关系 //我还需要把布局对象交给弹框才可以cd.setContentCustomComponent(dl); //让弹框展示出来cd.show(); }
}

喜欢本博文可以关注本博主哦

HarmonyOS APP开发入门3——组件(四 CommonDialog普通弹框组件 )相关推荐

  1. 鸿蒙os事例代码,鸿蒙HarmonyOS App开发造轮子之自定义圆形图片组件的实例代码

    一.背景 在采用Java配合xml布局编写鸿蒙app页面的时候,发现sdk自带的Image组件并不能将图片设置成圆形,反复了翻阅了官方API手册(主要查阅了Compont和Image相关的API),起 ...

  2. 《Android App开发入门与项目实战》出版后记

    <Android Studio开发实战:从零基础到App上线>自面世以来,承蒙众多朋友的抬爱,该书一直保持不错的销量,其中第一版的出货量突破一万,第二版的出货量即将突破两万.对于一个程序员 ...

  3. 5G 时代的 Android App 开发入门与项目实战

    随着移动互联网的持续发展,Android系统从智能手机逐步拓展到平板电脑.智能电视.车载大屏.智能家居.智能手表等诸多设备,Android开发依然是前景可期的IT岗位. 当然,整个社会正在迈向5G时代 ...

  4. android开发入门与实践_我的新书《Android App开发入门与实战》已经出版

    前言 工作之余喜欢在CSDN平台上写一些技术文章,算下时间也有两三年了.写文章的目的一方面是自己对技术的总结,另一方面也是将平时遇到的问题和解决方案与大家分享,还有就是在这个平台上能和大家共同交流. ...

  5. Android APP开发入门

    Android APP开发入门 目录 android_studio很好用的一个就是debug 1 1导入demo编译出错 1 4使用as运行安装不了apk安装adb 2 5SeekBar组件使用 2 ...

  6. (转载)H5 手机 App 开发入门:概念篇

    H5 手机 App 开发入门:概念篇 一.H5 的含义 二.原生应用 2.1 概念 2.2 优点 2.3 缺点 三.Web 应用 3.1 概念 3.2 优点和缺点 3.3 Web APP 的劣势 3. ...

  7. (转载)H5 手机 App 开发入门:技术篇

    H5 手机 App 开发入门:技术篇 一.手机 APP 的技术栈 二.WebView 控件 三.原生技术栈 3.1 Xcode 3.3 Android Studio 四.混合技术栈 4.1 框架种类 ...

  8. 我的新书《Android App开发入门与实战》已经出版

    文章目录 1. 前言 2. 写书的目的 3. 书籍简介 4. 书籍目标读者群体 5. 书籍比较 6. 书籍特色 7. 书籍章节 8. 书籍封面 9. 购书地址 10. 本书案例及源码下载 1. 前言 ...

  9. HTML5plus 移动 App开发入门

    咳咳,图片复制不到文章里面来,大家去我的资源里下载吧,PDF版的. HTML5plus 移动 App开发入门 更新时间:2014年 4月 17日 HTML5 Plus 应用概述 HTML5 Plus ...

最新文章

  1. 如何在ROS中使用PCL—数据格式(1)
  2. CDN网络究竟是怎么加速的?
  3. Java基础知识——类装载器与反射机制
  4. UseControls ————用户自定义控件的textbox的传值问题
  5. ssh命令、ping命令、traceroute 命令所使用的协议
  6. Session机制二(简易购物车案例)
  7. 5月 PC 浏览器市场份额:Chrome 即将突破 60%
  8. 梦想中的网络安全和内部协作
  9. 人与人之间交往最重要的是什么?
  10. 高通QFIL刷机指南
  11. Java实体类与数据库表映射关系
  12. 云计算与虚拟化技术发展编年史
  13. exiftool消除元数据
  14. 计算机系一班班会,计算机学院计算机类20级1班举行“爱在身边,温馨家园”主题班会...
  15. SAP SMW0 上传EXCEL模板
  16. Electron主进程和渲染进程之间通信
  17. ubuntu/linux命令记录 长期更新
  18. 安卓手机电池校正方法教程
  19. 【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
  20. Nmap网络扫描实验

热门文章

  1. 开发,从需求出发 · 之三 春天在哪里
  2. Photoshop 基础快捷键
  3. [微语 21.01.06] 一刻
  4. (十二)Mybatis的缓存机制
  5. 只需一个技巧,短视频就可以一键在多个平台同时发布!
  6. 小明和小强都是张老师的学生,张老师的生日是M月N日
  7. 苹果给推特开后门!App Store 唯一的单字母应用“X”来了
  8. 2021年危险化学品经营单位主要负责人新版试题及危险化学品经营单位主要负责人作业模拟考试
  9. PROFIBUS和PROFINET两种通信协议的区别比较
  10. CountDownLatch 用法和详解