花粉乐分享平台宣传视频
> 华为资讯 > 华为资讯 > 鸿蒙编程 > 基于HarmonyOS ArkUI 3.0 框架,成功开发了相册
基于HarmonyOS ArkUI 3.0 框架,成功开发了相册
来源:鸿蒙开发者老王
2022-07-18 13:38:35
642
管理
HarmonyOS ArkUI 3.0 正式到来,今天就带大家感受一下HarmonyOS ArkUI 3.0 框架开发的相册功能,功能很简单,主要是图片放大和图片左右滑动事件。 实现效果项目开发创建新的应用
  • 选择一个空的模板
  • 主要是选择开发语言为ets
代码实现
  • hml结构:渲染函数
build() { // 超出屏幕,可滚动 Scroll() { // 图片列表 Flex({ wrap: FlexWrap.Wrap, justifyContent: FlexAlign.Center, alignContent: FlexAlign.Center }) { ForEach(this.imageList, (item, index) => { // 循环图片 Image(item.url) .width(item.width) .height(item.height) .opacity(item.opacity) .onClick(() => { // 保存点击的id if (this.currentId === 0) { this.currentId = item.id this.currentIndex = this.currentId - 1 this.isBig = true } else { this.currentId = 0 this.currentIndex = -2 this.isBig = false } this.changeList() }) // 滑动事件 .gesture(PanGesture({ direction: PanDirection.Horizontal }) .onActionStart((e: GestureEvent) => { // 左右滑动开始 // 保存开始的坐标 if (!this.isBig) return false this.startX = e.offsetX }) .onActionEnd((e: GestureEvent) => { // 左右滑动结束 // 计算左滑还是右滑,初始化开始坐标 if (!this.isBig) return false this.isSlideL = e.offsetX - this.startX > 0 ? false : true this.startX = 0 this.showAnimate() }) ) .border({ width: 2, radius: 2, color: '#fff' }) }) }.width('100%') } } 数据处理 // 点击图片,将点击的图片放大,其他缩小 changeList() { this.imageList = this.imageList.map((item) => { const newI = item if (item.id === this.currentId && this.isBig) { newI.width = '100%' newI.height = '100%' newI.opacity = 1 } else if (item.id !== this.currentId && this.isBig) { newI.width = '0%' newI.height = 0 newI.opacity = 0 } else { newI.width = '50%' newI.height = 200 newI.opacity = 1 } return newI }) }// 左右滑动,改变图片的透明度 showAnimate() { // 计算下一个图片的index序列 let nextIndex = this.currentIndex if (!this.isSlideL) { nextIndex -= 1 } else { nextIndex = 1 } nextIndex = nextIndex === this.imageList.length ? 0 : (nextIndex === -1 ? (this.imageList.length - 1) : nextIndex) // 将下一个图片序列赋值给当前的序列 this.currentIndex = nextIndex this.imageList = this.imageList.map((item, index) => { const newI = item if (nextIndex === index) { newI.opacity = 1 newI.width = '100%' newI.height = '100%' } else { newI.opacity = 0 newI.width = '0%' newI.height = '0%' } return newI }) } 方舟开发框架声明式编程很符合接下来前端的趋势,希望框架能越来越完善。
—————— 原创:老王丨【公众号:鸿蒙开发者老王】华为认证讲师 / 腾讯认证讲师 / 鸿蒙开发先行者

花粉社群VIP加油站

0
点赞
赏礼
赏钱
0
收藏
免责声明:本文仅代表作者个人观点,与花粉乐分享无关。其原创性以及文中陈述文字和内容未经本网证实,对本文以及其中全部或者 部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
凡本网注明 “来源:XXX(非花粉乐分享)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对 其真实性负责。
如因作品内容、版权和其它问题需要同本网联系的,请在一周内进行,以便我们及时处理。
QQ:2443165046 邮箱:info@hflfx.com
关于作者
(Array)
文章
455
主题
0
关注
0
粉丝
0
点击领取今天的签到奖励!
签到排行
随手拍
54个圈友 0个话题
华为手机随手拍,记录生活点滴之美好
华为P30pro
51个圈友 0个话题
这里是华为P30pro手机交流圈,欢迎华为P30pro用户进群交流
体验官
60个圈友 2个话题
华为花粉体验官,体验官专属的交流群
登录后查看您创建的圈子
登录后查看您创建的圈子
所有圈子
杭州互联网违法和不良信息举报平台 网络110报警服务 浙ICP备17046585号
0
0
分享
请选择要切换的马甲:

个人中心

每日签到

我的消息

内容搜索