HarmonyOS实战—ToastDialog组件的基本使用

开发 前端 OpenHarmony
oastDialog 是 CommonDialog 的子类,他们的用法几乎是一致的,只不过 ToastDialog 有自己的特性,ToastDialog 弹框有自己的展示时间,默认展示 2 秒钟,时间到了之后弹框就会自动消失。

[[423591]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

Table of Contents

1. ToastDialog 简介

  • ToastDialog 是 CommonDialog 的子类,他们的用法几乎是一致的,只不过 ToastDialog 有自己的特性
  • ToastDialog 的组成如下:标题、提示内容、选择按钮

  • 一般只会用中间的提示内容,因为 ToastDialog 出现的意义就是用来作消息提示的
  • ToastDialog 弹框有自己的展示时间,默认展示 2 秒钟,时间到了之后弹框就会自动消失

2. ToastDialog 案例

案例:点击按钮弹出一个2秒的弹框提示信息

ability_main

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <DirectionalLayout 
  3.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  4.     ohos:height="match_parent" 
  5.     ohos:width="match_parent" 
  6.     ohos:orientation="vertical"
  7.  
  8.     <Text 
  9.         ohos:id="$+id:msg" 
  10.         ohos:height="match_content" 
  11.         ohos:width="match_content" 
  12.         ohos:text_size="30fp" 
  13.         ohos:text_color="#FFFFFF" 
  14.         ohos:text_alignment="center" 
  15.         ohos:background_element="#464343" 
  16.         /> 
  17.  
  18. </DirectionalLayout> 

MainAbilitySlice

  1. package com.xdr630.toastapplication.slice; 
  2.  
  3. import com.xdr630.toastapplication.ResourceTable; 
  4. import ohos.aafwk.ability.AbilitySlice; 
  5. import ohos.aafwk.content.Intent; 
  6. import ohos.agp.components.Button; 
  7. import ohos.agp.components.Component; 
  8. import ohos.agp.utils.LayoutAlignment; 
  9. import ohos.agp.window.dialog.ToastDialog; 
  10.  
  11. public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener { 
  12.     @Override 
  13.     public void onStart(Intent intent) { 
  14.         super.onStart(intent); 
  15.         super.setUIContent(ResourceTable.Layout_ability_main); 
  16.  
  17.         //找到界面中的按钮 
  18.         Button but = (Button) findComponentById(ResourceTable.Id_but); 
  19.         //添加点击事件 
  20.         but.setClickedListener(this); 
  21.  
  22.     } 
  23.  
  24.     @Override 
  25.     public void onActive() { 
  26.         super.onActive(); 
  27.     } 
  28.  
  29.     @Override 
  30.     public void onForeground(Intent intent) { 
  31.         super.onForeground(intent); 
  32.     } 
  33.  
  34.     @Override 
  35.     public void onClick(Component component) { 
  36.         //出现一个 ToastDialog 弹框 
  37.         // this:表示当前的弹框展示在当前的界面 
  38.         ToastDialog td = new ToastDialog(this); 
  39.         //给ToastDialog设置要展示的文本内容 
  40.         td.setText("吐司弹框出现了"); 
  41.         //设置居中 
  42.         td.setAlignment(LayoutAlignment.CENTER); 
  43.         //设置出现的时间,单位:毫秒。下面就是设置弹框时间只有两秒 
  44.         td.setDuration(2000); 
  45.         //让弹框出现 
  46.         td.show(); 
  47.     } 

运行:

  • 点击按钮,可以看到弹框提示信息出现了

  • 两秒后弹框消失

注意事项:

  • 基本使用:
  1. ToastDialog t = new ToastDialog(this); 
  2. t.setText("要显示的内容"
  3. t.setAlignment(LayoutAlignment.CENTER); 
  4. t.show(); 
  • 相关设置:
  1. ToastDialog toastDialog = new ToastDialog(this); 
  2. //设置的大小 
  3. //如果不写,默认包裹内容 
  4. toastDialog.setSize(DirectionalLayout.LayoutConfig.MATCH_CONTENT, 
  5. DirectionalLayout.LayoutConfig.MATCH_CONTENT); 
  6. //设置持续时间 
  7. //如果不写,默认2秒 
  8. toastDialog.setDuration(2000); 
  9. //设置自动关闭 
  10. //如果不写,就是自动关闭 
  11. toastDialog.setAutoClosable(true); 
  12. //设置位置 
  13. //如果不写,默认居中 
  14. toastDialog.setAlignment(LayoutAlignment.CENTER); 
  15. //设置提示信息内容 
  16. toastDialog.setText("要显示的内容"); 
  17. //让吐司展示出来 
  18. toastDialog.show(); 

3. ToastDialog 抽取工具类

ToastDialog 扩展

  1. 可以给ToastDialog弹框一个布局
  2. 把ToastDialog抽取到一个工具类当中,以后用到弹框的时候就不需要再写了,直接调用工具类的方法就可以了

案例:

新建一个布局文件,名为:mytoast

  • 把父类布局也改成 match_content

  • 在布局文件写一个文本就可以了,因为ToastDialog也只有一个文本提示
  • 因为在每次弹出消息的时候要修改文本里的内容,所以要给文本一个id,文本内容是变化的,所以要在Java代码那里设置

mytoast.xml

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <DirectionalLayout 
  3.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  4.     ohos:height="match_content" 
  5.     ohos:width="match_content" 
  6.     ohos:orientation="vertical"
  7.  
  8.     <Text 
  9.         ohos:id="$+id:msg" 
  10.         ohos:height="match_content" 
  11.         ohos:width="match_content" 
  12.         ohos:text_size="30fp" 
  13.         ohos:text_color="#FFFFFF" 
  14.         ohos:text_alignment="center" 
  15.         ohos:background_element="#464343" 
  16.         /> 
  17.  
  18. </DirectionalLayout> 

新建工具包和类

ToastUtils

  1. package com.xdr630.toastapplication.MyToastUtils; 
  2.  
  3. import com.xdr630.toastapplication.ResourceTable; 
  4. import ohos.agp.components.DirectionalLayout; 
  5. import ohos.agp.components.LayoutScatter; 
  6. import ohos.agp.components.Text; 
  7. import ohos.agp.utils.LayoutAlignment; 
  8. import ohos.agp.window.dialog.ToastDialog; 
  9. import ohos.app.Context; 
  10.  
  11. public class ToastUtils { 
  12.     public static void showDialog(Context context,String message){ 
  13.  
  14.         //1.把 xml 文件加载到内存当中 
  15.         DirectionalLayout dl = (DirectionalLayout) LayoutScatter.getInstance(context).parse(ResourceTable.Layout_mytoast, nullfalse); 
  16.  
  17.         //2.获取到当前布局对象中的文本组件 
  18.         Text msg = (Text) dl.findComponentById(ResourceTable.Id_msg); 
  19.  
  20.         //3.把需要提示的信息设置到文本组件 
  21.         msg.setText(message); 
  22.  
  23.         //4.创建一个ToastDialog对象 
  24.         ToastDialog td = new ToastDialog(context); 
  25.         //设置弹框的大小,默认是包裹内容 
  26.         //宽高都要设置 
  27.         td.setSize(DirectionalLayout.LayoutConfig.MATCH_CONTENT,DirectionalLayout.LayoutConfig.MATCH_CONTENT); 
  28.         //设置出现的时间 
  29.         td.setDuration(2000); 
  30.         //设置对齐方式 
  31.         td.setAlignment(LayoutAlignment.CENTER); 
  32.         //把 xml 对象交给ToastDialog 
  33.         td.setContentCustomComponent(dl); 
  34.         //让弹框出现 
  35.         td.show(); 
  36.     } 
  • 在 MainAbilitySlice 中修改 onClick 方法中去调用工具类方法

  1. package com.xdr630.toastapplication.slice; 
  2.  
  3. import com.xdr630.toastapplication.MyToastUtils.ToastUtils; 
  4. import com.xdr630.toastapplication.ResourceTable; 
  5. import ohos.aafwk.ability.AbilitySlice; 
  6. import ohos.aafwk.content.Intent; 
  7. import ohos.agp.components.Button; 
  8. import ohos.agp.components.Component; 
  9. import ohos.agp.utils.LayoutAlignment; 
  10. import ohos.agp.window.dialog.ToastDialog; 
  11.  
  12. public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener { 
  13.     @Override 
  14.     public void onStart(Intent intent) { 
  15.         super.onStart(intent); 
  16.         super.setUIContent(ResourceTable.Layout_ability_main); 
  17.  
  18.         //找到界面中的按钮 
  19.         Button but = (Button) findComponentById(ResourceTable.Id_but); 
  20.         //添加点击事件 
  21.         but.setClickedListener(this); 
  22.  
  23.     } 
  24.  
  25.     @Override 
  26.     public void onActive() { 
  27.         super.onActive(); 
  28.     } 
  29.  
  30.     @Override 
  31.     public void onForeground(Intent intent) { 
  32.         super.onForeground(intent); 
  33.     } 
  34.  
  35.     @Override 
  36.     public void onClick(Component component) { 
  37.  
  38.         ToastUtils.showDialog(this,"吐司弹框抽取工具类"); 
  39.          
  40.     } 

运行:

点击

  • 这个弹框就跟我们平时玩的APP中的弹框有些类似,唯一区别就是有点大,在 mytoast.xml 去调节弹框的大小,ToastUtils.java 调节弹框的位置

  • 还可以给弹框添加一个偏移量,如Y轴添加200px

  • 运行,点击后,发现弹框往上偏移了

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2021-09-06 15:31:01

鸿蒙HarmonyOS应用

2021-09-27 10:43:18

鸿蒙HarmonyOS应用

2021-09-27 14:44:48

鸿蒙HarmonyOS应用

2021-07-05 14:29:28

鸿蒙HarmonyOS应用

2021-08-25 09:38:16

鸿蒙HarmonyOS应用

2021-12-24 15:46:23

鸿蒙HarmonyOS应用

2021-09-07 09:53:45

鸿蒙HarmonyOS应用

2022-05-19 15:59:23

组件焦点鸿蒙

2021-08-12 14:59:15

鸿蒙HarmonyOS应用

2021-06-22 09:44:56

鸿蒙HarmonyOS应用

2021-08-31 14:56:51

鸿蒙HarmonyOS应用

2021-10-26 15:22:52

鸿蒙HarmonyOS应用

2021-03-30 09:45:07

鸿蒙HarmonyOS应用开发

2021-03-17 09:35:09

鸿蒙HarmonyOS应用开发

2021-08-11 09:32:12

鸿蒙HarmonyOS应用

2021-03-26 09:35:35

鸿蒙HarmonyOS应用开发

2021-03-31 15:49:34

鸿蒙HarmonyOS应用

2021-11-01 10:21:36

鸿蒙HarmonyOS应用

2022-04-24 15:17:56

鸿蒙操作系统

2021-08-26 15:28:05

鸿蒙HarmonyOS应用
点赞
收藏

51CTO技术栈公众号