<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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

    文章

    339

    瀏覽量

    17602
  • OpenHarmony
    +關注

    關注

    23

    文章

    3328

    瀏覽量

    15172

原文標題: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 ?1285次閱讀
    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 ?699次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>