HarmonyOS NEXT星河版之模拟图片选择器(下)---使用CustomDialog展示图片

文章目录

    • 一、目标
    • 二、开撸
      • 2.1 自定义弹窗
      • 2.2 主页面事件处理
      • 2.3 主页面完整代码
    • 三、小结

一、目标

在这里插入图片描述
在这里插入图片描述

二、开撸

2.1 自定义弹窗

@CustomDialog
export struct SinglePreviewDialog {// 弹窗控制器 mustcontroller: CustomDialogController// 展示图片URLimgUrl: ResourceStr = ''build() {Column() {Image(this.imgUrl).width('100%')}.width('100%').height('100%').justifyContent(FlexAlign.Center).backgroundColor(Color.Black).onClick(() => {// 关闭弹窗this.controller.close()})}
}

2.2 主页面事件处理

声明变量,记录当前选择图片地址:

selectImgUrl: ResourceStr = ''

声明自定义Dialog对象:

singlePreviewDialog: CustomDialogController = new CustomDialogController({builder: SinglePreviewDialog({imgUrl: this.selectImgUrl}),customStyle: true //使用自定义Dialog的样式
})

图片注册点击事件:

Image(item.imgUrl).aspectRatio(1).onClick(() => {this.selectImgUrl = item.imgUrlthis.singlePreviewDialog.open()})

2.3 主页面完整代码

import { PhotoAlbumView } from './components/PhotoAlbumView';
import { SelectImageItem } from './models';
import { promptAction } from '@kit.ArkUI';
import { SinglePreviewDialog } from './dialog/SinglePreviewDialog';@Entry
@Component
struct PhotoAlbumDemoPage {@State message: string = 'Hello World';@State showPhotoAlbum: boolean = false@State selectImgList: SelectImageItem[] = []// 当前选中图片selectImgUrl: ResourceStr = ''// 单图预览dialogsinglePreviewDialog: CustomDialogController = new CustomDialogController({builder: SinglePreviewDialog({imgUrl: this.selectImgUrl}),customStyle: true //使用自定义Dialog的样式})build() {Column() {Button('打开相册').onClick(() => {this.showPhotoAlbum = true})Text('已选择图片:').width('100%').textAlign(TextAlign.Start)if (this.selectImgList && this.selectImgList.length) {Grid() {ForEach(this.selectImgList, (item: SelectImageItem) => {GridItem() {Stack() {Image(item.imgUrl).aspectRatio(1).onClick(() => {this.selectImgUrl = item.imgUrlthis.singlePreviewDialog.open()})}}}, (item: SelectImageItem) => JSON.stringify(item))}.columnsTemplate('1fr 1fr 1fr').columnsGap(5).rowsGap(5).padding(10).layoutWeight(1)}if (this.showPhotoAlbum) {PhotoAlbumView({maxNumber: 5,cancel: () => {this.showPhotoAlbum = false},confirm: (selectImgList: SelectImageItem[]) => {this.showPhotoAlbum = falsethis.selectImgList = [...this.selectImgList, ...selectImgList]}})}}.width('100%').height('100%')}
}

三、小结

  • open 创建弹层组件-显示-会有动画的弹出
  • close 销毁组件-推出-会有动画的退出
  • open/close会创建和销毁组件,不存在缓存现象,里面的参数实际上没有任何必要使用@State修饰符
  • customStyle是否允许自定义的样式设置,因为默认的弹层是有一些定制的样式的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/669726.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

✅Spring的@Autowired能用在Map上吗?

一、问题解析 在Spring框架中,Autowired 注解不仅可以用于单个bean的注入,还可以用于注入复杂的集合类型,如List、Map、Set等。这种机制非常有用,尤其是当你需要注入同一类型的多个bean时。 List 当你使用Autowired在一个List字段…

Celery + redis 异步分布式任务队列安装测试

Celery 异步分布式任务队列 Celery 5.4.0 官方文档 环境:3台 centos7.9 普通用户 redisSchedulerworkerdp951dp96111dp971 文章目录 Celery 异步分布式任务队列1、Celery 介绍2、安装部署2.1 安装消息中间件(broker)2.2 安装Celery 3、功能…

《Video Mamba Suite》论文笔记(2)Mamba对于多模态交互的作用

原文翻译 4.2 Mamba for Cross-Modal Interaction Tasks and datasets.除了单模态任务外,我们还评估了 Mamba 在跨模态交互方面的性能。我们首先使用视频时间定位 (Video Temporal Grounding) 任务进行评估。所涉及的数据集包含 QvHighlight [44] 和 Charade-STA …

【Scala---01】Scala简介与环境部署『 Scala简介 | 函数式编程简介 | Scala VS Java | 安装与部署』

文章目录 1. Scala简介2. 函数式编程简介3. Scala VS Java4. 安装与部署 1. Scala简介 Scala是由于Spark的流行而兴起的。Scala是高级语言,Scala底层使用的是Java,可以看做是对Java的进一步封装,更加简洁,代码量约是Java的一半。…

如何在ubuntu上安装idear

在官网下载压缩包 下载 IntelliJ IDEA – 领先的 Java 和 Kotlin IDE (jetbrains.com.cn) idea——java开发者工具,有社区办(免费)专业版(收费)这两个版本,可自己选择,还有就是不同的系统对应…

什么是期货?期货的基础知识有哪些?

期货是一种标准化的远期合约,允许买卖双方在未来特定时间以预定价格交易货物或金融资产。也是一种金融衍生品,它为市场参与者提供了一种管理价格波动风险和进行投资的工具。 期货的基础知识有哪些 期货市场是一个复杂的金融环境,对于初学者来…

Linux 操作系统IPC

目录 1、IPC简介 1.1、共享内存 1.1.1 创建/访问共享内存 1.1.2 映射 1.1.3 解除映射 1.1.4 删除/修改共享内存 1.2 信号量集 1.2.1 创建信号量集合 1.2.2 信号量的初始化 1.2.3 信号量的还原和消耗 1.3 消息队列 1.3.1 概念 1.3.3 添加消息队列 1.3.4 读取消息…

五一反向旅游,景区“AI+视频监控”将持续助力旅游业发展

一、建设背景 每年五一劳动节出去旅游都是人挤人状态,这导致景区的体验感极差。今年“五一反向旅游”的话题冲上了热搜,好多人选择了五一之后再出去旅游,避开拥挤的人群,这个时候景区的监管力度和感知能力就更要跟上去&#xff0…

SQL 基础 | AVG 函数的用法

在SQL中,AVG()是一个聚合函数,用来计算某个列中所有值的平均值。 它通常与GROUP BY子句一起使用,以便对分组后的数据进行平均值计算。 AVG()函数在需要了解数据集中某个数值列的中心趋势时非常有用。 以下是AVG()函数的一些常见用法&#xff…

萤瓴优选:一键带货,轻松赚取佣金!短视频素材软件助你快速上手!

在如今的电商时代,137短视频带货9766成为了一种3209越来越流行的购物方式。想要通过短视频带货赚取佣金,但又苦恼于找不到合适的素材和发布平台?别担心,现在有一款专业的软件可以解决这个问题!(上面数字可联…

学习记录:AUTOSAR R20-11的阅读记录(五)【CP(5.11-5.19)】完

接上回:学习记录:AUTOSAR R20-11的阅读记录(四)【CP(5.6-5.10)】 五、CP 11、General(4个) 5.11 File Name 说明 1 AUTOSAR_EXP_ LayeredSoftwareArchitecture.pdf 描述了AUTO…

艾体宝方案 | 加密USB金融解决方案

在现代金融行业中,保护敏感数据和合规性已成为至关重要的任务。为了帮助金融公司应对移动性风险和合规挑战,我们提供了一种高效的加密USB解决方案。 一、为什么金融公司需要加密USB解决方案 1、降低移动性风险 金融服务公司正在迅速过渡到一种模式&a…