0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenHarmony PhotoView组件的介绍

OpenAtom OpenHarmony 来源:OpenAtom OpenHarmony 作者:OpenAtom OpenHarmony 2022-09-09 10:04 次阅读

PhotoView是OpenAtom OpenHarmony(简称“OpenHarmony”)系统的一款图片缩放及浏览的三方组件,用于声明式应用开发,支持图片缩放、平移、旋转等功能。

使用场景

PhotoView为广大OpenHarmony应用开发者在处理图片时,提供了很大的便利。当开发者需要对图片进行浏览、查看等处理时,只需要导入PhotoView三方组件,然后调用相关的接口就能实现效果,例如基于大禹200开发板开发的图库应用,就使用到了PhotoView三方库去处理图片。

效果展示

d104fd5a-2f77-11ed-ba43-dac502259ad0.png

开发环境

安装IDE:支持DevEco Studio 3.0 Beta3(Build Version 3.0.0.901)及以上版本。

安装SDK:支持OpenHarmony API version 9及以上版本

如何使用

1.下载PhotoView组件,在page页面导入

npm install @ohos/photoview --save;import {PhotoView} from '@ohos/photoview';

2.生成Photo View

2.1创建model对象

@State data: PhotoView.Model = newPhotoView.Model();
2.2设置图片源

aboutToAppear() {this.data.setImageResource($rawfile('wallpaper.jpg')).setScale(1, false).setImageFit(ImageFit.Contain).setOnPhotoTapListener({onPhotoTap(x:number,y:number){}})}

3.使用示例:

平移、缩放、旋转核心思想都是通过手势触发,然后获取图片变换前后的偏移量,最后更新图片的矩阵Matrix实现效果。

这里以平移为例说明:

PinchGesture() // 平移手势接口 .onActionStart((event) => {   console.log('photo PinchGesture start:' +this.model.animate) }) .onActionUpdate((event) => { console.info("photo pin:" +JSON.stringify(event)) if (this.model.isZoom) { var currentScale: number =this.model.scale + event.scale - 1; console.log('photo PinchGesture update:'+ currentScale) if (currentScale >this.model.scaleMax) { this.model.scale = this.model.scaleMax } else if (currentScale  { if (this.model.scale this.model.scaleMax) { this.model.scale = this.model.scaleMax } this.model.isZooming = (this.model.scale> 1) if (this.model.matrixChangedListener !=null) {this.model.matrixChangedListener.onMatrixChanged(this.model.rect) } if (this.model.scaleChangeListener != null){this.model.scaleChangeListener.onScaleChange(this.model.scale, 0, 0) } })
调用UpdateMatrix( )方法

public updateMatrix():void { this.rect.left = this.componentWidth / 2 -(this.componentWidth * this.scale) / 2 + this.offsetX; this.rect.right = this.componentWidth / 2 +(this.componentWidth * this.scale) / 2 + this.offsetX; this.rect.top = this.componentHeight / 2 -(this.sHeight / 2) * this.scale + this.offsetY; this.rect.bottom = this.componentHeight / 2 +(this.sHeight / 2) * this.scale + this.offsetY; this.matrix = Matrix4.identity() .rotate({ x: 0, y: 0, z: 1, angle:this.rotateAngle }) .translate({ x: this.offsetX, y:this.offsetY }) .scale({ x: this.scale, y: this.scale,centerX: this.centerX, centerY: this.centerY })}
Matrix已更新,此时给图片更新矩阵即可。

Image(this.model.src)      .alt(this.model.previewImage) .objectFit(this.model.imageFit) .transform(this.model.matrix) // 传递更新后的矩阵值 .interpolation(ImageInterpolation.Low)

demo源码及文件结构

下载地址 https://gitee.com/openharmony-sig/PhotoView-ETS

文件目录结构如下

|---- PhotoView-ETS  |---- entry|     |---- pages  # 示例代码文件夹        |---- photoView |     |---- components  # 库文件夹|     |     |---- PhotoView.ets  #自定义组件                 |     |     |---- RectF.ets  # 区域坐标点数据封装|     |---- README.md  # 安装使用方法

类结构

d151e41c-2f77-11ed-ba43-dac502259ad0.png

相关方法

d17960fa-2f77-11ed-ba43-dac502259ad0.jpg

结语

通过本篇文章介绍,您对OpenHarmony PhotoView组件应该有了初步的了解。我们所有的源码和指导文档都已经开源,如果您对本篇文章内容以及所实现的Demo感兴趣,可以根据本篇文章介绍自行下载OpenHarmony PhotoView源码进行研究和使用。同时也欢迎更多开发者与我们共享开发成果,分享技术解读与经验心得。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 组件
    +关注

    关注

    1

    文章

    334

    浏览量

    17575
  • OpenHarmony
    +关注

    关注

    23

    文章

    3195

    浏览量

    15147

原文标题:PhotoView——支持图片缩放、平移、旋转的一个优雅的三方组件

文章出处:【微信号:gh_e4f28cfa3159,微信公众号:OpenAtom OpenHarmony】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    鸿蒙开发OpenHarmony组件复用案例

    缓存里。 在父自定义组件再次创建可复用组件时,会通过更新可复用组件的方式,从缓存快速创建可复用组件。这就是OpenHarmony
    发表于 01-15 17:37

    【软通动力】HarmonyOS三方件开发指南(5)——Photoview组件

    `PhotoView使用说明1.PhotoView功能介绍1.1 组件介绍PhotoView
    发表于 03-30 09:29

    介绍几种OpenHarmony 开源软件设计

    1、鸿蒙开源组件——获取签名或绘图的功能库ink-ohos介绍项目名称:ink-ohos所属系列:openharmony 的第三方组件适配移植功能:ink-ohos 是一个获取签名或绘
    发表于 03-15 13:50

    组件资料】HarmonyOS三方件开发指南

    手机模拟器上运行效果:4、HarmonyOS三方件开发指南——Photoview组件1.PhotoView功能介绍1.1 组件
    发表于 03-21 11:18

    HarmonyOS应用开发-photoView组件体验分享

    组件名称:photoView主语言:JAVA作用:PhotoView 旨在帮助生成一个易于使用的缩放 openharmony 图像组件的实现
    发表于 05-10 10:44

    【学习打卡】OpenHarmony的TextClock组件介绍

    OpenHarmony系统中可以通过TextClock组件实现时钟应用,可以把当前系统时间显示在设备上,并且支持不同时区的时间显示。Text Clock 是OpenHarmon中的 UI 小部
    发表于 07-30 22:33

    PhotoView——支持图片缩放、平移、旋转的一个优雅的三方组件

    PhotoView——支持图片缩放、平移、旋转的一个优雅的三方组件简介PhotoView是OpenAtom OpenHarmony(简称“OpenH
    发表于 09-16 10:30

    OpenHarmony组件复用示例

    承载数据的差异。这样的组件缓存起来,需要使用到该组件时直接复用, ● 减少了创建和渲染的时间,可以提高帧率和用户性能体验。本文会介绍开发OpenHarmony应用时如何使用
    发表于 08-29 14:40

    OpenHarmony自定义组件:ClearableInput和Keyboard

    组件介绍: 本示例包含了两个OpenHarmony自定义组件,一个是ClearableInput,另一个是Keyboard。 ClearableInput 定义了一个带清空图标的文本输
    发表于 03-18 15:21 1次下载
    <b class='flag-5'>OpenHarmony</b>自定义<b class='flag-5'>组件</b>:ClearableInput和Keyboard

    OpenHarmony自定义组件FlowImageLayout

    组件介绍 本示例是OpenHarmony自定义组件FlowImageLayout。 用于将一个图片列表以瀑布流的形式显示出来。 调用方法
    发表于 03-21 10:17 3次下载
    <b class='flag-5'>OpenHarmony</b>自定义<b class='flag-5'>组件</b>FlowImageLayout

    OpenHarmony自定义组件ProgressWithText

    组件介绍 本示例是OpenHarmony自定义组件ProgressWithText。 在原来进度条的上方加了一个文本框,动态显示当前进度并调整位置。 调用方法
    发表于 03-23 14:03 1次下载
    <b class='flag-5'>OpenHarmony</b>自定义<b class='flag-5'>组件</b>ProgressWithText

    OpenHarmony自定义组件CircleProgress

    组件介绍 本示例是OpenHarmony自定义组件CircleProgress。 用于定义一个带文字的圆形进度条。 调用方法
    发表于 03-23 14:06 4次下载
    <b class='flag-5'>OpenHarmony</b>自定义<b class='flag-5'>组件</b>CircleProgress

    易于使用的openharmony图像组件PhotoView的实现

    PhotoView 旨在帮助生成一个易于使用的缩放 openharmony 图像组件的实现。 特征: 开箱即用的缩放,使用多点触控和双击。 滚动,平滑滚动。 在滚动父级中使用时效果很好。 允许在显示
    发表于 04-11 10:30 2次下载

    2022 OpenHarmony组件大赛,共建开源组件

    原标题:共建开源组件生态 2022 OpenHarmony组件大赛等你来 2022年4月15日,2022 OpenHarmony组件大赛(下
    的头像 发表于 04-26 17:31 1274次阅读
    2022 <b class='flag-5'>OpenHarmony</b><b class='flag-5'>组件</b>大赛,共建开源<b class='flag-5'>组件</b>

    关于OpenHarmony Jchardet组件介绍

    Jchardet是OpenAtom OpenHarmony(以下简称“OpenHarmony”)系统的一款检测文本编码的组件。当上传一个文件时,组件可以检测并输出该文件中文本使用的编码
    的头像 发表于 10-12 10:08 666次阅读