当前位置: 首页 > news >正文

HarmonyOS NEXT仓颉开发语言实战案例:图片预览器

上文分享了如何使用仓颉语言实现动态广场,动态广场中有很多图片,本文一下如何使用仓颉语言实现一个图片放大预览器:

看到这个效果,我首先想到的实现方案是弹窗,弹窗的弹出和消失效果为我们节省了很多工作,这里使用的是CustomDialogController。

我们首先实现弹窗内容组件,图片预览可能会有不同数量的图片,我们要做好适配,还要实现翻页效果,所以使用swiper容器最为合适,具体代码如下,大家要注意接收参数的定义和弹窗点击关闭代码的写法:

package ohos_app_cangjie_entry
import ohos.base.*
import ohos.component.*
import ohos.state_manage.*
import ohos.state_macro_manage.*
import cj_res_entry.app
import std.collection.ArrayList
@CustomDialog
public  class imgdialog {var controller: Option<CustomDialogController> = Option.None@Prop var imgList:ArrayList<CJResource>func build() {Swiper(){ForEach(imgList, itemGeneratorFunc: {img:CJResource,index:Int64 =>Image(img).width(100.percent).height(100.percent).objectFit(ImageFit.Contain)})}.width(100.percent).height(100.percent).backgroundColor(Color(0, 0, 0, alpha: 0.6)).onClick({e =>controller.getOrThrow().close()})}
}

回到动态广场,这里要先初始化弹窗对象,并且传入图片列表:

@State var imglist:ArrayList<CJResource> = ArrayList<CJResource>()
var dialogController: CustomDialogController = CustomDialogController(CustomDialogControllerOptions(builder: imgdialog(imgList:imglist),customStyle:true,autoCancel:true
))

在弹窗的配置参数中,设置customStyle为true可以使弹窗全屏展示。最后在点击图片的时候打开弹窗:

imglist = item.getImages()dialogController.open()

今天的内容分享完啦,感谢大家阅读。##HarmonyOS语言##仓颉##休闲娱乐#

http://www.lryc.cn/news/576288.html

相关文章:

  • linux面试常考
  • Go开发工程师-Golang基础知识篇
  • pycharm Windows 版快捷键大全
  • 大数据在UI前端的应用创新研究:用户偏好的动态调整与优化
  • 前端进阶之路-从传统前端到VUE-JS(第一期-VUE-JS环境配置)(Node-JS环境配置)(Node-JS/npm换源)
  • C++ STL深度剖析:Stack、queue、deque容器适配器核心接口
  • PCL 生成任意椭球点云
  • 关于庐山派多视频层(layer)和bind_layer的应用
  • 【SpringSecurity鉴权】
  • ChatboxAI 搭载 GPT 与 DeepSeek,引领科研与知识库管理变革
  • 视觉的基石:卷积神经网络与LeNet的破晓之光
  • 从【人工智能】到【计算机视觉】。深度学习引领的未来科技创新与变革
  • Note2.2 机器学习训练技巧:Batch and Momentum(Machine Learning by Hung-yi Lee)
  • Note2.1 处理critical point(Machine Learning by Hung-yi Lee)
  • 安卓中静态和动态添加子 View 到容器
  • 【C/C++】单元测试实战:Stub与Mock框架解析
  • 【RAG面试题】LLMs已经具备了较强能力,存在哪些不足点?
  • Windows11系统上安装WM虚拟机及Ubuntu 22.04系统
  • clion与keil分别配置项目宏定义
  • Day44 预训练模型
  • FLUX.1 Kontext(Dev 版)训练lora基础教程
  • Python基础知识之文件
  • 什么是故障注入测试
  • SCSAI万物对象模型和五维市场交易平台原型
  • mongodb生产备份工具PBM
  • Selenium基本用法
  • 深入剖析 CVE-2021-3560 与 CVE-2021-4034:原理、区别与联系
  • 智能助手(利用GPT搭建智能系统)
  • Vivado 五种仿真类型的区别
  • Javaweb - 6 BOM 编程 和 DOM 编程