自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HarmonyOS實戰(zhàn)—ToastDialog組件的基本使用

開發(fā) 前端 OpenHarmony
oastDialog 是 CommonDialog 的子類,他們的用法幾乎是一致的,只不過 ToastDialog 有自己的特性,ToastDialog 彈框有自己的展示時間,默認展示 2 秒鐘,時間到了之后彈框就會自動消失。

[[423591]]

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

Table of Contents

1. ToastDialog 簡介

  • ToastDialog 是 CommonDialog 的子類,他們的用法幾乎是一致的,只不過 ToastDialog 有自己的特性
  • ToastDialog 的組成如下:標(biāo)題、提示內(nèi)容、選擇按鈕

  • 一般只會用中間的提示內(nèi)容,因為 ToastDialog 出現(xiàn)的意義就是用來作消息提示的
  • 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.         //出現(xiàn)一個 ToastDialog 彈框 
  37.         // this:表示當(dāng)前的彈框展示在當(dāng)前的界面 
  38.         ToastDialog td = new ToastDialog(this); 
  39.         //給ToastDialog設(shè)置要展示的文本內(nèi)容 
  40.         td.setText("吐司彈框出現(xiàn)了"); 
  41.         //設(shè)置居中 
  42.         td.setAlignment(LayoutAlignment.CENTER); 
  43.         //設(shè)置出現(xiàn)的時間,單位:毫秒。下面就是設(shè)置彈框時間只有兩秒 
  44.         td.setDuration(2000); 
  45.         //讓彈框出現(xiàn) 
  46.         td.show(); 
  47.     } 

運行:

  • 點擊按鈕,可以看到彈框提示信息出現(xiàn)了

  • 兩秒后彈框消失

注意事項:

  • 基本使用:
  1. ToastDialog t = new ToastDialog(this); 
  2. t.setText("要顯示的內(nèi)容"
  3. t.setAlignment(LayoutAlignment.CENTER); 
  4. t.show(); 
  • 相關(guān)設(shè)置:
  1. ToastDialog toastDialog = new ToastDialog(this); 
  2. //設(shè)置的大小 
  3. //如果不寫,默認包裹內(nèi)容 
  4. toastDialog.setSize(DirectionalLayout.LayoutConfig.MATCH_CONTENT, 
  5. DirectionalLayout.LayoutConfig.MATCH_CONTENT); 
  6. //設(shè)置持續(xù)時間 
  7. //如果不寫,默認2秒 
  8. toastDialog.setDuration(2000); 
  9. //設(shè)置自動關(guān)閉 
  10. //如果不寫,就是自動關(guān)閉 
  11. toastDialog.setAutoClosable(true); 
  12. //設(shè)置位置 
  13. //如果不寫,默認居中 
  14. toastDialog.setAlignment(LayoutAlignment.CENTER); 
  15. //設(shè)置提示信息內(nèi)容 
  16. toastDialog.setText("要顯示的內(nèi)容"); 
  17. //讓吐司展示出來 
  18. toastDialog.show(); 

3. ToastDialog 抽取工具類

ToastDialog 擴展

  1. 可以給ToastDialog彈框一個布局
  2. 把ToastDialog抽取到一個工具類當(dāng)中,以后用到彈框的時候就不需要再寫了,直接調(diào)用工具類的方法就可以了

案例:

新建一個布局文件,名為:mytoast

  • 把父類布局也改成 match_content

  • 在布局文件寫一個文本就可以了,因為ToastDialog也只有一個文本提示
  • 因為在每次彈出消息的時候要修改文本里的內(nèi)容,所以要給文本一個id,文本內(nèi)容是變化的,所以要在Java代碼那里設(shè)置

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 文件加載到內(nèi)存當(dāng)中 
  15.         DirectionalLayout dl = (DirectionalLayout) LayoutScatter.getInstance(context).parse(ResourceTable.Layout_mytoast, nullfalse); 
  16.  
  17.         //2.獲取到當(dāng)前布局對象中的文本組件 
  18.         Text msg = (Text) dl.findComponentById(ResourceTable.Id_msg); 
  19.  
  20.         //3.把需要提示的信息設(shè)置到文本組件 
  21.         msg.setText(message); 
  22.  
  23.         //4.創(chuàng)建一個ToastDialog對象 
  24.         ToastDialog td = new ToastDialog(context); 
  25.         //設(shè)置彈框的大小,默認是包裹內(nèi)容 
  26.         //寬高都要設(shè)置 
  27.         td.setSize(DirectionalLayout.LayoutConfig.MATCH_CONTENT,DirectionalLayout.LayoutConfig.MATCH_CONTENT); 
  28.         //設(shè)置出現(xiàn)的時間 
  29.         td.setDuration(2000); 
  30.         //設(shè)置對齊方式 
  31.         td.setAlignment(LayoutAlignment.CENTER); 
  32.         //把 xml 對象交給ToastDialog 
  33.         td.setContentCustomComponent(dl); 
  34.         //讓彈框出現(xiàn) 
  35.         td.show(); 
  36.     } 
  • 在 MainAbilitySlice 中修改 onClick 方法中去調(diào)用工具類方法

  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中的彈框有些類似,唯一區(qū)別就是有點大,在 mytoast.xml 去調(diào)節(jié)彈框的大小,ToastUtils.java 調(diào)節(jié)彈框的位置

  • 還可以給彈框添加一個偏移量,如Y軸添加200px

  • 運行,點擊后,發(fā)現(xiàn)彈框往上偏移了

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2021-09-06 15:31:01

鴻蒙HarmonyOS應(yīng)用

2021-07-05 14:29:28

鴻蒙HarmonyOS應(yīng)用

2021-09-27 10:43:18

鴻蒙HarmonyOS應(yīng)用

2021-09-27 14:44:48

鴻蒙HarmonyOS應(yīng)用

2021-08-04 14:32:16

鴻蒙HarmonyOS應(yīng)用

2021-08-25 09:38:16

鴻蒙HarmonyOS應(yīng)用

2010-03-04 10:01:01

Android基本組件

2021-12-24 15:46:23

鴻蒙HarmonyOS應(yīng)用

2022-02-14 08:58:00

架構(gòu)

2011-05-26 09:20:59

配線架

2020-04-19 17:14:17

服務(wù)器監(jiān)控數(shù)據(jù)中心

2012-01-17 13:16:34

JavaSwing

2024-05-23 08:05:04

2010-02-03 15:59:08

Android組件

2010-05-13 14:07:39

MySQL數(shù)據(jù)庫

2023-09-27 00:12:23

2014-03-27 15:34:55

Android組件Activity

2010-03-26 19:22:08

F#代理

2011-12-07 14:41:51

JavaNIO

2016-11-10 16:30:22

Java多線程
點贊
收藏

51CTO技術(shù)棧公眾號