开启鸿蒙开发之旅:交互——点击事件

embedded/2024/11/17 13:54:45/

前一节我们写好了”提醒事项“APP首页的静态页面,光有静态页面肯定是不够的,更重要的是交互,今天这一节我将来学习最常用的交互事件——点击事件。

点击事件

说明:组件被点击时触发的事件

作用:监听(感知)用户点击行为,进行对应操作

                                              

在添加按钮上增加点击事件,点击后弹出添加弹窗。 

实现步骤


1、设置动态变量model_zIndex

 设置动态zIndex来动态控制弹窗的zIndex的层级,当需要显示时,将层级调高,隐藏时层级调低。

@State model_zIndex:number = -1

2、给弹窗绑定动态zIndex

Coloum(){
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.End)
.backgroundColor('#cd000000')
.zIndex(this.model_zIndex)

3、给元素绑定点击事件

鸿蒙OS Next中,绑定点击事件直接在元素上.onClick,在点击事件中动态改变model_zIndex 的值:

 Image($r('app.media.ic_add')).width(20).fillColor('#007AFF').margin({right: 10}).onClick(() => {this.model_zIndex = 99})

4、隐藏弹窗

在“取消”按钮上绑定点击事件,并在点击事件中修改 model_zIndex的值:

 Text('取消').fontSize(18).fontColor('#007AFF').onClick(() => {this.model_zIndex = -1})

完整代码 


index.ets文件的完整代码如下:

interface card {icon: stringnum: numberbgColor: stringiconNum: boolean,title: string
}interface list {icon: stringbgColor: stringtitle: stringnum: number
}
console.log('2222')
@Entry
@Component
struct Index {@State cardData: card[] = [{icon: 'app.media.ic_date',num: 4,bgColor: '#007AFF',iconNum: true,title: '今天'},{icon: 'app.media.ic_date2',num: 4,bgColor: '#ff3a2f',iconNum: false,title: '计划'},{icon: 'app.media.ic_box',num: 6,bgColor: '#000',iconNum: false,title: '全部'},{icon: 'app.media.ic_qizi',num: 0,bgColor: '#ff9501',iconNum: false,title: '旗标'},{icon: 'app.media.ic_ok',num: 0,bgColor: '#596772',iconNum: false,title: '完成'}]@State listData:list[] = [{icon: 'app.media.ic_list',bgColor:'#007AFF',title:'提醒事项',num:6},{icon: 'app.media.ic_list',bgColor:'#ff9501',title:'提醒',num:0}]@State model_zIndex:number = -1@State addButtonColor:string = '#ccc'build() {Stack() {Column() {Row() {Image($r('app.media.ic_search')).width(30).fillColor(Color.Gray)TextInput({ placeholder: '搜索' }).layoutWeight(1).backgroundColor(Color.Transparent)Image($r('app.media.ic_voice')).width(30).fillColor(Color.Gray)}.width('100%').height(50).backgroundColor('#e4e3e9').borderRadius(15).padding({left: 10,right: 10})Flex({ wrap: FlexWrap.Wrap, justifyContent: FlexAlign.SpaceBetween }) {ForEach(this.cardData, (item: card, index) => {Row() {Column({ space: FlexAlign.SpaceBetween }) {Stack() {Row() {Image($r(item.icon)).width(index == 2 ? 20 : 30)}.width(40).height(40).borderRadius(40).backgroundColor(item.bgColor).justifyContent(FlexAlign.Center)if (item.iconNum) {Text('12').fontColor(Color.White).fontSize(12).margin({right: 3,top: 5})}}Text(item.title).fontColor(Color.Gray).fontSize(18)}.height('100%')Blank()Text(String(item.num)).fontSize(30).fontWeight(FontWeight.Bold)}.width('48%').height(90).backgroundColor('#e4e3e9').borderRadius(15).padding(10).alignItems(VerticalAlign.Top).margin({bottom: 10})})}.margin({top: 10})Text('我的列表').fontSize(20).fontWeight(FontWeight.Bold).alignSelf(ItemAlign.Start).margin({left: 10,bottom: 10})List() {ForEach(this.listData,(item:list,index) => {ListItem() {Row() {Row() {Image($r(item.icon)).width(20).fillColor(Color.White)}.width(30).height(30).borderRadius(30).backgroundColor(item.bgColor).justifyContent(FlexAlign.Center).margin({right: 10})Text(item.title)Blank()Text(String(item.num))Image($r('app.media.ic_right')).width(20)Text('').width('90%').height(0.5).backgroundColor('#ccc').position({bottom: -10,right: -10})}.width('100%').justifyContent(FlexAlign.SpaceBetween)}.height(50).width('100%').padding({left: 10,right: 10})})}.backgroundColor(Color.White).borderRadius(10)}.width('100%').height('100%').padding(15).backgroundColor('#fff2f8')Row() {Image($r('app.media.ic_add')).width(20).fillColor('#007AFF').margin({right: 10}).onClick(() => {this.model_zIndex = 99})Text('添加提醒事项').fontColor('#007AFF')Blank()Text('添加列表').fontColor('#007AFF')}.width('100%').padding(15)Column(){Column(){Row() {Text('取消').fontSize(18).fontColor('#007AFF').onClick(() => {this.model_zIndex = -1})Text('新提醒事项').fontSize(20).fontWeight(FontWeight.Bold)Text('添加').fontSize(18).fontColor(this.addButtonColor)}.width('100%').justifyContent(FlexAlign.SpaceBetween)Column() {TextInput({placeholder:'标题'}).backgroundColor('#fff').borderRadius(0)Text('').width('95%').height(0.5).backgroundColor('#ccc').alignSelf(ItemAlign.End)TextInput({placeholder:'备注'}).backgroundColor('#fff')}.width('100%').height(180).backgroundColor('#fff').padding({top:5}).borderRadius(10).margin({top:20})Row(){Text('详细信息')Blank()Image($r('app.media.ic_right')).width(20)}.width('100%').height(50).backgroundColor('#fff').margin({top:20}).padding(10).borderRadius(6)Row() {Row(){Image($r('app.media.ic_list')).width(20).fillColor('#fff')}.width(30).height(30).borderRadius(30).backgroundColor('#007AFF').justifyContent(FlexAlign.Center).margin({right:10})Text('列表')Blank()Text('提醒事项')Image($r('app.media.ic_right')).width(20)}.width('100%').height(50).backgroundColor('#fff').margin({top:20}).padding(10).borderRadius(6)}.width('100%').height('95%').backgroundColor('#fff2f8').padding(10)}.width('100%').height('100%').justifyContent(FlexAlign.End).backgroundColor('#cd000000').zIndex(this.model_zIndex)}.alignContent(Alignment.Bottom)}
}


http://www.ppmy.cn/embedded/138266.html

相关文章

【STM32】项目实战——OV7725/OV2604摄像头颜色识别检测(开源)

本篇文章分享关于如何使用STM32单片机对彩色摄像头(OV7725/OV2604)采集的图像数据进行分析处理,最后实现颜色的识别和检测。 目录 一、什么是颜色识别 1、图像采集识别的一些基本概念 1. 像素(Pixel) 2. 分辨率&am…

PHP 语法基础

PHP 语法基础 PHP(Hypertext Preprocessor)是一种广泛使用的开源服务器端脚本语言,特别适用于网页开发,并且可以嵌入HTML中使用。PHP的语法混合了C、Java、Perl以及PHP自创的语法,易于学习和使用。本文将详细介绍PHP的…

算法定制LiteAIServer摄像机实时接入分析平台玩手机打电话检测算法:智能监控的新篇章

在现代社会,随着智能手机的普及,无论是在工作场所还是公共场所,玩手机或打电话的行为日益普遍。然而,在某些特定环境下,如工厂生产线、仓库、学校课堂等,这些行为可能会影响到工作效率、安全或教学秩序。为…

HelloMeme 上手即用教程

HelloMeme是一个集成空间编织注意力的扩散模型,用于生成高保真图像和视频。它提供了一个代码库,包含实验代码和预训练模型,支持PyTorch和FFmpeg。用户可以通过简单的命令行操作来生成图像和视频。 本文将详细介绍,如何在GPU算力租…

Python_爬虫1_Requests库入门

目录 Requests库 7个主要方法 Requests库的get()方法 Response对象的属性 爬取网页的通用代码框架 理解requests库的异常 HTTP协议及Requests库方法 HTTP协议 HTTP协议采用URL作为定位网络资源的标识。 HTTP协议对资源的操作 理解PATCH和PUT的区别 HTTP协议与Requse…

童年的快乐,矫平机为玩具打造安全品质

童年的快乐,矫平机为玩具打造安全品质 每个人的童年都充满了欢笑和快乐,玩具作为这段时光中不可或缺的伙伴,其安全性和品质尤为重要。矫平机在这个领域扮演着重要角色,它确保了玩具材料的平整和安全,为孩子们的童年增…

【视频讲解】Python深度神经网络DNNs-K-Means(K-均值)聚类方法在MNIST等数据可视化对比分析...

全文链接:https://tecdat.cn/?p38289 分析师:Cucu Sun 近年来,由于诸如自动编码器等深度神经网络(DNN)的高表示能力,深度聚类方法发展迅速。其核心思想是表示学习和聚类可以相互促进:好的表示会…

分布式----Ceph部署

目录 一、存储基础 1.1 单机存储设备 1.2 单机存储的问题 1.3 商业存储解决方案 1.4 分布式存储(软件定义的存储 SDS) 1.5 分布式存储的类型 二、Ceph 简介 三、Ceph 优势 四、Ceph 架构 五、Ceph 核心组件 #Pool中数据保存方式支持两种类型&…