代码编织梦想

一多图片美化场景概述

本文从目前流行的垂类市场中,选择图片美化应用作为典型案例详细介绍在“一多”实际开发中的应用。一多图片美化应用包含相册,大图预览,图片编辑功能。

当前系统的产品形态主要有手机、折叠屏、tablet和2in1四种,本文分别从UX设计、页面开发两个角度给出符合“一多”的参考样例,介绍“一多”图片美化应用在开发过程中的最佳实践。

UX设计

本示例中的图片美化应用包含相册、大图预览、图片编辑页面。

架构设计

HarmonyOS的分层架构主要包括三个层次:产品定制层、基础特性层和公共能力层,为开发者构建了一个清晰、高效、可扩展的设计架构。

页面开发

本章介绍图片美化应用中如何使用”一多”的布局能力,完成页面层级的一套代码、多端适配。同时介绍图片美化应用中的交互开发。

布局能力

本节由不同页面展开,介绍每个页面区域使用到的具体布局能力,帮助开发者从零到一进行图片美化应用的开发。

相册

相册页显示所有图片。观察相册页在折叠屏上的UX设计图,可以进行如下设计:

  • 将相册页划分为2个区域,效果图如下:

相册页的2个基础区域介绍及实现方案如下表所示:

区域编号

简介

实现方案

1

顶部返回

使用自适应布局实现左侧返回图标及文字,右侧图标。

2

相册列表

使用网格实现相册列表。

示意图如下:

示意图

sm

md

lg

效果图

当组件区域宽度变化时,可以通过 onAreaChangeAPI获取组件的相关信息,并调整相册列数。

// 监控组件区域变化
Flex.onAreaChange((oldValue: Area, newValue: Area) => {
this.GridColumn = this.getGridColumn(newValue.width)
})
// 列数计算公式
getGridColumn(value: Length): number {
return Math.floor(2 * ((parseInt(JSON.stringify(value)) / 360) - 1) + 4)
}

大图预览

大图预览显示一张图片。观察大图预览页在折叠屏上的UX设计图,可以进行如下设计:

  • 将大图预览页划分为4个区域,效果图如下:

相册页的4个基础区域介绍及实现方案如下表所示:

区域编号

简介

实现方案

1

顶部返回

使用自适应布局实现左侧返回图标及文字,右侧图标。

2

图片展示

使用Image组件展示图片。

3

相册滚动展示

使用列表实现相册滚动展示。

4

图片操作

使用自适应布局实现图标自适应摆放。

示意图如下:

示意图

sm

md

lg

效果图

图片编辑

在折叠屏中,可以切换图片区域与编辑操作区域的摆放位置。观察图片编辑页在折叠屏上的UX设计图,可以进行如下设计:

  • 将相册页划分为3个区域,效果图如下:

  • 区域2与区域3使用Flex组件实现左右摆放与上下摆放的切换

图片编辑的3个基础区域介绍及实现方案如下表所示:

区域编号

简介

实现方案

1

顶部返回

使用自适应布局实现左侧返回图标及文字,右侧图标。

2

图片展示

使用Image组件展示图片。

3

编辑操作栏

使用Flex组件实现编辑操作栏的自适应摆放。

示意图如下:

示意图

sm

md

lg

效果图

 

交互开发

对于不同类型的智能设备,用户可能有不同的交互方式,如通过触摸屏、鼠标、触控板等。如果针对不同的交互方式单独做适配,会增加开发工作量同时产生大量重复代码。为解决这一问题,我们统一了各种交互方式的API,即实现了交互归一。常见的交互有触屏事件、键鼠事件、焦点事件。图片美化涉及的交互主要涉及图片的缩放。

双指缩放

在触控屏与触控板上进行双指捏合或张开可以实现缩放功能。本文中有两处涉及双指缩放:

  • 相册页,双指缩放控制相册中图片列数变更。
  • 大图预览页,双指缩放控制图片的宽高变更。

    双指缩放使用PinchGesture API实现, 当触发双指缩放时,可以实时获取缩放比例参数,传入 scaleAPI(控制组件缩放的API)即可调整图片的比例。

Row() {
Column() {
Image($r('app.media.photo10'))
.autoResize(true)
}
}
// 组件缩放 API
.scale({ x: this.scaleValue, y: this.scaleValue, z: 1 })
// 双指缩放 API
.gesture(PinchGesture({ fingers: 2 }).onActionStart((event: GestureEvent | undefined) => {
console.info('Pinch start');
})
.onActionUpdate((event: GestureEvent | undefined) => {
if (event) {
this.scaleValue = this.pinchValue * event.scale;
}
})
.onActionEnd(() => {
this.pinchValue = this.scaleValue;
console.info('Pinch end');
}))

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ADgai1987/article/details/142214603

harmonyos next 自定义swiper卡片预览效果实现-爱代码爱编程

介绍 本方案做的是采用Swiper组件实现容器视图居中完全展示,两边等长露出,并且跟手滑动效果。 效果图预览 实现思路 本解决方案通过维护所有卡片偏移的数组,实时更新卡片的偏移量,以实现swiper子组件内图片居中展示,两边等长露出。 左右露出效果静态实现。 Swiper组件基础视图效果如下。 如果所有子组

arkui声明式编程:仿朋友圈图片九宫格和图片预览-爱代码爱编程

项目介绍 项目名称:ArkUI声明式编程:仿朋友圈图片九宫格和图片预览功能:仿朋友圈列表展示,九宫格小图图片展示,点击图片进行图片预览,图片左右滑动切换。开发版本:sdk7,DevEco Studio3.0 Beta1

harmonyos开发案例:【图片编辑】-爱代码爱编程

介绍 本篇Codelab是基于ArkTS的声明式开发范式的样例,主要介绍了图片编辑实现过程。样例主要包含以下功能: 图片的解码。使用PixelMap进行图片编辑,如裁剪、旋转、亮度、透明度、饱和度等。图片的编码。

2024年harmonyos next 数字滚动动效实现(3),淘汰了80%的harmonyos鸿蒙面试者_harmonyos 生成随机数-爱代码爱编程

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。 需要这份系统化的资料的朋友,可以戳这里获取 一个人可以走的很快,但一群人才能走的更远!不论你是正从事

harmonyos next应用开发之图片缩放效果实现_鸿蒙开发中双手捏合查看大图效果-爱代码爱编程

腾讯T10级高工技术,安卓全套VIP课程全网免费送:https://docs.qq.com/doc/DSG1vYnRxSElnU3hE 学习鸿蒙开发势在必行。鸿蒙开发可参考学习文档:https://qr21.cn/FV7h

openharmony实战开发-爱代码爱编程

介绍 图片预览在应用开发中是一种常见场景,在诸如QQ、微信、微博等应用中均被广泛使用。本模块基于Image组件实现了简单的图片预览功能。 使用说明: 双指捏合对图片进行缩放双击图片进行图片的大小切换,在放大状态下,双击

鸿蒙基于开源项目photoswipe—如何实现点击预览图片放大缩小特效、图片轮播功能-爱代码爱编程

本项目是基于开源项目photoSwipe进行鸿蒙JS API的功能化移植和开发的,在功能实现上属于功能重写。 项目介绍 项目名称:PhotoSwipeJs_ohos(相册画廊组件) 所属系列:鸿蒙的第三方组件适配移植功能:实现点击预览图片放大缩小特效、手指滑动,其他功能有标题栏等项目移植状态:100%,已完成核心功能移植调用差异:功能重构编程语言

harmonyos开发实例:【图片编辑应用】_harmonyos 动态改变图片-爱代码爱编程

介绍 本篇Codelab通过动态设置元素样式的方式,实现几种常见的图片操作,包括裁剪、旋转、缩放和镜像。效果如图所示: 相关概念 [image组件]:图片组件,用来渲染展示图片。[div组件]:基础容器组件,用作页

基于手势的图片预览与缩放-爱代码爱编程

场景一:对图片进行放大、缩小、拖拽移动,且放大过程中也可同时进行拖拽操作 方案 1、使用组合手势GestureGroup,同时绑定捏合手势PinchGesture和滑动手势PanGesture,设置组合手势识别模式为并行识别模式:Parallel,并行识别组合手势中注册的手势将同时进行识别,直到所有手势识别结束,并行识别手势组合中的手势进行识别时互不影

harmonyos 鸿蒙next实现图片编辑裁剪_鸿蒙 图片切割-爱代码爱编程

最近开发一款鸿蒙应用,需要用到图片裁剪,系统的图片编辑功能目前没有对外开放API调用,所以需要自己整一套裁剪的功能。由于刚接触这个ArkTS语言,探索的过程还是挺费劲。 废话不多说,先直接看效果: 支持自由裁剪和固定比例裁剪。 官方也提供了图片编辑功能的实现: 图片编辑-HarmonyOS NEXT-Codelabs-华为开发者联盟 (hu

11-爱代码爱编程

    大家好,欢迎来到鸿蒙开发系列教程!今天,我们将深入探讨图片组件(Image Component)的使用方法。图片组件是用户界面中非常重要的组成部分,合理使用图片组件可以极大地提升界面的美观度和用户体验。无论你是初学者还是有一定经验的开发者,理解图片组件的使用方法都是非常有帮助的。让我们开始吧! 1.什么是图片组件?        图片组件(Im