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

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

创新互联公司致力于成都网站建设、成都网站制作,成都网站设计,集团网站建设等服务标准化,推过标准化降低中小企业的建站的成本,并持续提升建站的定制化服务水平进行质量交付,让企业网站从市场竞争中脱颖而出。 选择创新互联公司,就选择了安全、稳定、美观的网站建设服务!

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

https://harmonyos.

Table of Contents

1. ToastDialog 简介

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

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

2. ToastDialog 案例

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

ability_main

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

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.  
  2.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  3.     ohos:height="match_content" 
  4.     ohos:width="match_content" 
  5.     ohos:orientation="vertical"> 
  6.  
  7.     
  8.         ohos:id="$+id:msg" 
  9.         ohos:height="match_content" 
  10.         ohos:width="match_content" 
  11.         ohos:text_size="30fp" 
  12.         ohos:text_color="#FFFFFF" 
  13.         ohos:text_alignment="center" 
  14.         ohos:background_element="#464343" 
  15.         /> 
  16.  
  17.  

新建工具包和类

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, null, false); 
  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

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

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

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

https://harmonyos.

名称栏目:HarmonyOS实战—ToastDialog组件的基本使用
文章路径:http://www.mswzjz.com/qtweb/news8/200008.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联