首页 > 其他分享 >Harmony开发之Toast效果

Harmony开发之Toast效果

时间:2024-09-06 18:24:06浏览次数:10  
标签:Toast 10 效果 自定义 CustomDialogController width controller Harmony 弹窗

在HarmonyOS应用开发中,我们经常需要展示一些短暂的信息提示给用户,类似于Android中的Toast。本文将介绍如何利用自定义弹窗和定时器来实现这种功能。我们将通过几个不同的场景来探讨这一主题,并附带相应的代码示例。

场景一:基本的自定义弹窗实现

在这个场景中,我们需要创建一个带有图标、文本和按钮的基本弹窗,并且这个弹窗会在页面显示后两秒自动出现。

@CustomDialog 
struct CustomDialogExample { 
  controller?: CustomDialogController;
  
  build() { 
    Row() { 
      Image($r('app.media.huawei')) 
        .height(60) 
        .width(60) 
        .margin(20) 
        .borderRadius(10) 
      Text('Toast弹窗') 
      Button('进入') 
        .onClick(() => { 
          if (this.controller != undefined) { 
            this.controller.close() 
          } 
        }) 
        .margin(20) 
    } 
    .width('100%') 
    .backgroundColor(Color.Grey) 
  } 
} 

@Entry 
@Component 
struct CustomDialogUser { 
  dialogController: CustomDialogController | null = new CustomDialogController({ 
    builder: CustomDialogExample(), 
    autoCancel: true, 
    alignment: DialogAlignment.CenterStart, 
    offset: { dx: 10, dy: 10 }, 
    gridCount: 4, 
    showInSubWindow: false, 
    isModal: true, 
    customStyle: false, 
    cornerRadius: 10, 
  })
  
  onPageShow() { 
    setTimeout(() => { 
      if (this.dialogController != null) { 
        this.dialogController.open() 
      } 
    }, 2000); 
  } 
  
  build() { 
    Column() { 
      // 页面内容 
    } 
  } 
}

场景二:自定义弹窗样式

接下来,我们将进一步自定义弹窗的样式,包括位置、尺寸、背景色等。

@CustomDialog 
struct CustomDialogExample02 { 
  controller?: CustomDialogController;
  
  build() { 
    Row() { 
      Text('为您更新一组内容') 
        .fontColor(Color.White) 
        .margin({ left: 5 }) 
    } 
    .borderRadius(25) 
    .width('40%') 
    .height(40) 
    .backgroundColor('#33FF66') 
  } 
} 

@Entry 
@Component 
export struct TestSubtab { 
  dialogController: CustomDialogController | null = new CustomDialogController({ 
    builder: CustomDialogExample02(), 
    autoCancel: true, 
    alignment: DialogAlignment.TopStart, 
    offset: { dx: 100, dy: 10 }, 
    showInSubWindow: false, 
    isModal: true, 
    customStyle: true, 
    maskColor: Color.Transparent 
  })
  
  onPageShow() { 
    setTimeout(() => { 
      if (this.dialogController != null) { 
        this.dialogController.open() 
      } 
    }, 2000); 
  }
  
  build() { 
    Column() { 
      // 页面内容 
    } 
  } 
}

场景三:自定义弹窗动画

最后,为了让弹窗更具有交互性,我们将添加弹窗打开和关闭的动画效果。

@CustomDialog 
struct CustomDialogExample01 { 
  controller: CustomDialogController 
  @State showFlag: Visibility = Visibility.Visible;
  
  build() { 
    Column() { 
      Row() { 
        Image($r('app.media.huawei')) 
          .height(60) 
          .width(60) 
          .margin(20) 
          .borderRadius(10) 
        Text('Toast弹窗') 
        Button('进入') 
          .onClick(() => { 
            this.cancel(); 
          }) 
          .margin(20) 
      } 
      .width('100%') 
      .backgroundColor(Color.Grey) 
    } 
    .width("100%") 
    .height(100) 
    .backgroundColor(Color.Pink) 
    .visibility(this.showFlag) 
    .transition(TransitionEffect.OPACITY.animation({ duration: 500 }) 
      .combine(TransitionEffect.translate({ y: 300 }))) 
  }
  
  cancel() { 
    this.showFlag = Visibility.Hidden 
    setTimeout(() => { 
      this.controller.close() 
    }, 500) 
  } 
}

以上就是如何在HarmonyOS中使用自定义弹窗和定时器来实现类似Toast的效果。

标签:Toast,10,效果,自定义,CustomDialogController,width,controller,Harmony,弹窗
From: https://blog.51cto.com/u_15171169/11939074

相关文章

  • 信奥赛C++老师解一本通题:1182:合影效果
    ​【题目描述】小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)?【输入】第一行是人数nn(2≤n≤......
  • PbootCMS实现数字条分页样式效果
    <!--分页-->{pboot:if({page:rows}>0)}<divclass="pagebar"><divclass="pagination"><aclass="page-itempage-linkhidden-sm"href="{page:index}"title="首页">首页</a&......
  • 电话机器人外呼系统效果好吗
    嘉单科技yyzkd8电话机器人外呼系统是现在市面上的一款帮你代替真人自动拨打电话,自动筛选客户的一个软件。简单来说就是帮你把打出来的意向客户自动推送到你的微信上面,你人工重点跟进有意向的客户就可以了。嘉单科技电话机器人外呼系统好用吗?效果怎么样?①高效率低成本:电话......
  • 优化气体流量控制器的使用效果?
    优化流量控制器的使用效果,可以从以下几个方面着手:1.合理设置参数带宽限制:根据实际需求和网络状况,合理设置带宽限制,防止网络拥堵和流量浪费。时间段限制:设定不同时间段的流量配额,以适应不同时间段的网络使用需求。优先级配置:根据应用程序的优先级和重要性,设置流量控制策略,......
  • zTree树形菜单交互选项卡效果实现
    1、添加自定义属性page 2、为ztree每个树形节点,添加点击事件1<!DOCTYPEhtml>2<html>34<head>5<metacharset="UTF-8">6<title>ztree树形菜单的使用</title>7<!--导入jquery核心类库-->8......
  • openHarmony南向开发笔记(四)Linux设备树
    openHarmony南向开发笔记(四)Linux设备树文章目录openHarmony南向开发笔记(四)Linux设备树一、什么是设备树二、设备树的组成部分三、设备树基本语法四、dts常用符号含义一、什么是设备树Linux设备树(DeviceTree)是Linux内核用来描述硬件信息的一种数据结构,它在内核启动......
  • 【OpenHarmony】鸿蒙南向开发保姆级知识点汇总~
    OpenHarmony的技术架构和设计使得它能够适应不同的设备和场景,无论是智能手机、平板电脑、智能穿戴设备还是其他智能硬件,OpenHarmony都能提供一致的用户体验和开发体验。这使得开发者能够更加高效地开发适用于多种设备的软件,同时也为用户提供了更加统一和流畅的使用体验。由......
  • 【鸿蒙 HarmonyOS NEXT】相对布局:RelativeContainer
    一、概述在应用的开发过程中,经常需要设计复杂界面,此时涉及到多个相同或不同组件之间的嵌套。如果布局组件嵌套深度过深,或者嵌套组件数过多,会带来额外的开销。如果在布局的方式上进行优化,就可以有效的提升性能,减少时间开销。二、示例介绍2.1、示例代码@Entry@Componentstr......
  • 计算机毕业设计:Java网上书城图书购物商城系统开题报告+源代码效果图
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书、P......
  • Android平台RTSP|RTMP播放器之视音频效果设置
    RTSP|RTMP播放器模块是大牛直播SDK的SmartMediaKit下非常优异的子产品,功能丰富、性能优异,毫秒级超低延迟,支持Windows、Linux(x86_64|aarch64架构)、Android、iOS平台。先看demo主界面,可以通过界面,做基础的设置,比如旋转、镜像等操作。下面就视音频效果,做个大概的介绍。视频填充效果:......