OpenHarmony 视图加载——ImageViewZoom

发布于:2024-04-20 ⋅ 阅读:(25) ⋅ 点赞:(0)

简介

ImageViewZoom 支持加载 Resource 或 PixelMap 图片,支持设置图像显示类型功能,支持缩放功能,支持平移功能,双击放大功能,可以监听图片大小,资源变化事件,支持清除显示图片功能。

效果展示

下载安装

ohpm install @ohos/imageviewzoom 

OpenHarmony ohpm 环境配置等更多内容,请参考如何安装 OpenHarmony ohpm 包

使用说明

ets 代码依赖

import {ImageViewTouchDate, ImageViewTouch, DisplayType} from "@ohos/imageviewzoom"
import {PixelMapUtils} from "./PixelMapUtils"
...
//创建model对象
@State private model: ImageViewTouch.Model = new ImageViewTouch.Model();
...
//使用ImageViewTouch组件
ImageViewTouch({ model: $model });
...

在Swiper组件内使用,如果有图片放大后切图的场景,需要在Swiper组件的onAnimationEnd方法内调用gestureConversion方法,调整手势方向,以避免图片index未变化时,出现手势竞争问题,如下所示:

 if (this.currentIndex == index && this.data[this.currentIndex].getScale() > 1) {
   this.data[this.currentIndex].gestureConversion(PanDirection.All, SwipeDirection.None)
 }

接口说明

  1. 设置图片资源

public setImageSrc(src ?: Resource | PixelMap | string | null, matrix ?: object | null, minZoom ?: number, maxZoom ?: number): void setImageSrc接口新增src参数的string类型

  1. 设置默认图像显示类型

public setDisplayType(type: DisplayType) public getDisplayType(): DisplayType

DisplayType.NONE:图像默认不缩放。 DisplayType.FIT_TO_SCREEN:图像将始终使用此视图的边界呈现。 DisplayType.FIT_IF_BIGGER:仅当大于此视图的边界时才会缩放图像。 DisplayType.FIT_HEIGHT:图像将被缩放以适合设备的高度。 DisplayType.FIT_WIDTH:图像将被缩放以适合设备的宽度。

  1. 清除当前显示的图片

public dispose(): void

  1. 设置是否能够双击

public setDoubleTapEnabled(value: boolean): void

  1. 设置是否能够缩放

public setScaleEnabled(value: boolean): void

  1. 设置是否能够滚动

public setScrollEnabled(value: boolean): void

  1. 设置图片资源变化监听事件

public setOnDrawableChangedListener(listener: OnDrawableChangeListener): void

  1. 设置图片大小变化监听事件

public setOnLayoutChangeListener(listener: OnLayoutChangeListener): void

  1. 恢复显示

public resetDisplay(): void

  1. 恢复视图矩阵

public resetMatrix(): void

  1. 返回当前允许的最大图像比例

public getMaxScale(): number

  1. 返回当前允许的最小图像比例

public getMinScale(): number

  1. 设置当前视图矩阵

public setImageMatrix(matrix: object): void

  1. 返回当前视图矩阵

public getImageViewMatrix(): object

  1. 打印矩阵详细信息

public printMatrix(matrix: object): void

  1. 返回当前视图比例

public getScale(): number

  1. 缩放到目标比例

public zoomTo(scale: number, durationMs: number): void

  1. 设置是否能够双击

public setDoubleTapEnabled(value: boolean): void

  1. 设置是否能够缩放

public setScaleEnabled(value: boolean): void

  1. 返回是否能够双击状态值

public getDoubleTapEnabled(): boolean

  1. 判断图片能否根据手势滚动

public canScroll(): boolean

  1. 设置双击监听事件

public setDoubleTapListener(listener: OnImageViewTouchDoubleTapListener): void

  1. 设置单击监听事件

public setSingleTapListener(listener: OnImageViewTouchSingleTapListener): void

  1. 设置滑动手势与拖拽手势的方向

public gestureConversion(panDirection: PanDirection, swipeDirection?: SwipeDirection, vertical?: boolean)

`gestureConversion接口是用于处理拖拽手势PanGesture和滑动手势SwipeGesture的手势竞争问题,通过动态的设置两个手势的触发方向,解决手势竞争。`
  1. 图片资源变化监听

onDrawableChanged(src: Resource | PixelMap | string): void onDrawableChanged方法新增src参数的string类型

约束与限制

在下述版本验证通过:

  • DevEco Studio 版本: 4.1.3.500

  • OpenHarmony SDK:API11 (4.1.0.63)

目录结构

|---- ImageViewZoom
|     |---- entry  # 示例代码文件夹
|     |---- library  # ImageViewZoom库文件夹
|        |----src
|           |----main
|              |----ets
|                 |---- components
|                       |---- utils  # 工具库
|                             |---- IDisposable.ets  # 提供清除图片接口
|                       |---- ImageViewTouch.ets  # 自定义控件
|           |---- index.ets  # 对外接口
|     |---- README.MD  # 安装使用方法
|     |---- LICENSE #证书

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向