OpenHarmony 视图加载——ImageViewZoom

简介

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.鸿蒙南向开发方向

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker(七):容器监控工具(Portainer、CAdvisor)

一:轻量级可视化监控工具Portainer 可视化监控工具, 可以通过docker安装,用于管理和监控docker,基本上的docker命令都有对应的按钮来操作。 # always 表示docker重启了该容器也跟着重启 docker run -d --name portainer -p 8000:8000 -p 90…

USART(串口通信协议)

USART(串口通信协议) 【通信的目的】将一个设备的数据传输到另外一个设备,拓展硬件系统 【 通信协议】制定通信的规则,通信双方按照协议进行数据的收发 串口通信中各个参数的含义 【TX】 数据接收脚【RX】 数据发送脚【SCL】 …

Visual Components软件为您带来的价值 衡祖仿真

Visual Components具备丰富的3D仿真功能、快速建模能力、定制化应用程序逻辑和大量预定义组件库等多种特点,为自动化设备制造商、整合商、制造型公司提供简单、 快速和的设计方式,可以有效提高生产效率,并优化资源分配,避免制造过…

用户行为分析模型实践(四)—— 留存分析模型

作者:vivo 互联网大数据团队- Wu Yonggang、Li Xiong 本文是vivo互联网大数据团队《用户行为分析模型实践》系列文章第4篇 -留存分析模型。 本文详细介绍了留存分析模型的概念及基本原理,并阐述了其在产品中具体实现。针对在实际使用过程问题&#xff0…

揭秘消费增值:如何让每次购物都变得更有价值

亲爱的消费者朋友们,大家好!我是微三云周丽,今天我将和你分享一种全新的消费理念——消费增值,让你的每一次消费都变得更有价值! 在传统的消费观念中,我们通常只是单纯地用钱购买物品或享受服务&#xff0…

WideDeep

这里写目录标题 1. 背景2. 贡献3 模型结构(1)任务定义(2)The Wide Component(3)The Deep Component(4)联合训练Wide和Deep Model 4. 参考 1. 背景 (1) 广义线性回归通常被用于推荐模…

Scanpy(2)多种可视化

本篇内容为scanpy的可视化方法,可以分为三部分: embedding的散点图;用已知marker genes的聚类识别(Identification of clusters);可视化基因的差异表达; 我们使用10x的PBMC数据集(…

基于SSM的平面设计课程在线学习平台系统(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的平面设计课程在线学习平台系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,…

51单片机学习笔记——LED点亮

一、独立按键控制LED元器件和原理图 根据厂家给的原理图找到独立按键模块,观察下图我们知道按钮的一个头接GND,一头接IO口。由此可知我们如果需要使用第一个按钮则需要用p31。 二、独立按键控制LED程序 程序编写需要使用到IF else语句 当如果P310时P20…

盒子模型之弹性盒模型

弹性盒模型 经常适用于手机端图标布局 display: flex;让这个盒子显示成弹性盒(很适合移动端布局) 影响:1.让里面的子元素默认横向排列 2.如果子元素是行内元素,则直接变成块元素 3.只有一个元素,margin: auto;自动居中…

uni.uploadFile上传图片后台接收不到数据

今天遇到一个很奇怪的问题,通过使用uni.uploadFile上传文件时后端接收不到文件,查过很多资料,原来是自定义了header的Content-Type问题。取消即可,另把自定义文件上传的代码贴出来。 分析:当我们加上请求头的时候 不…

一步一步写线程之九线程池任务的窃取

一、介绍 在实际的工作安排中,如果有一个比较大的工作,又可以细分的,诸如有一天一万个萝卜要洗这样的工作。假如做为一个工作的分配者,怎么处理这种需求?可能每个人都会想,先看看一个人一天洗多少萝卜&…

大数据真题讲解系列——拼多多数据分析面试题

拼多多数据分析面试题:连续3次为球队得分的球员名单 问题: 两支篮球队进行了激烈的比赛,比分交替上升。比赛结束后,你有一个两队分数的明细表(名称为“分数表”)。表中记录了球队、球员号码、球员姓名、得…

CSS基础:盒子模型详解

你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃,大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 We…

Liunx挂载硬件设备

一、mount命令(用于挂载文件系统) (一)语法格式:mount 参数 源设备路径 目的路径 (二)参数 1、-t:指定挂载的文件系统 (1)iso9660:光盘或光盘…

【nvm最新解决方案】Node.js v16.20.2 is not yet released or available

【nvm最新解决方案】Node.js v16.20.2 is not yet released or available 解决办法:下载想安装的node压缩包,放入nvm对应目录。 2024年最新node压缩包地址:https://nodejs.org/dist/ 1、选择对应的node版本:例如,我选的…

乡政府管理系统|基于Springboot的乡政府管理系统设计与实现(源码+数据库+文档)

乡政府管理系统目录 目录 基于Springboot的乡政府管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、活动信息管理 3、新闻类型管理 4、新闻动态管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推…

FPGA中按键程序设计示例

本文中使用Zynq 7000系列中的xc7z035ffg676-2器件的100MHz PL侧的外部差分时钟来检测外部按键是否按下,当按键被按下时,对应的灯会被点亮。当松开按键时,对应的灯会熄灭。 1、编写代码 新建工程,选用xc7z035ffg676-2器件。 点击…

ansible执行mysql脚本

目录 概述实践环境要求ansible yml脚本命令离线包 概述 ansible执行mysql脚本 实践 官网文档 环境要求 环境需要安装以下内容: 1.mysql客户端(安装了mysql即会有)2.安装MySQL-python (Python 2.X) 详细插件安装链接 ansible yml脚本 关键代码如下: # 剧本…

vscode设置conda默认python环境,简单有效

本地conda 可能安装了各种环境,默认的vscode总是base环境,这时你想要在vscode调试python代码,使用默认的环境没有安装对应的包就会遇到报错解决这个问题的方法很简单ctrlshiftp 调出命令面板 再输入 select interpreter , 选择 python 选择解…