成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OpenHarmony - ArkUI(ETS) 自定義圖片查看組件

系統 OpenHarmony
今日分享的組件由subsampling-scale-image-view+swiper來實現深度縮放視圖、圖像顯示、手勢平移縮放雙擊等。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

前言

日常開發中,經常會遇到一些圖片查看的需求,此時有的用戶習慣放大圖片來看,那么在ets中如何實現呢?今日分享的組件由subsampling-scale-image-view+swiper來實現深度縮放視圖、圖像顯示、手勢平移縮放雙擊等。

項目說明

本組件界面搭建基于ArkUI中TS擴展的聲明式開發范式,官網官方文檔地址:??基于TS擴展的聲明式開發范式1??、??基于TS擴展的聲明式開發范式2??。

  • 工具版本:DevEco Studio 3.0 Beta2。
  • SDK版本:3.0.0.1(API Version 7 Beta2)。

主要功能

  • 雙擊放大圖片。
  • 如果圖片已經是放大狀態,雙擊恢復原圖大小。
  • 點擊下方縮略圖列表,可查看對應圖片。
  • 可旋轉查看圖片,每次旋轉90度。
  • 點擊箭頭可查看上一組縮略視圖和下一組縮略視圖。

效果展示

OpenHarmony npm包

OpenHarmony js/ts三方庫使用的是OpenHarmony npm包,它是在傳統的npm包的基礎上,定義了OpenHarmony npm共享包特定的工程結構和配置文件,支持OpenHarmony頁面組件相關API、資源的調用。通過OpenHarmony npm包,您可以實現多個模塊或者多個工程共享OpenHarmony頁面、資源等相關代碼。

OpenHarmony npm共享包的實現依賴于npm,因此您需要了解和掌握npm的基礎功能和機制,可通過npm官方文檔進行了解。

如何安裝OpenHarmony npm包

設置 OpenHarmony推薦的npm專用倉庫(如果使用DevEco Studio 3.0 Beta3及以上版本的命令行窗口,則可忽略此步驟)。

npm config set @ohos:registry=https://repo.harmonyos.com/npm/

在命令行工具中,執行如下命令進行安裝,如安裝subsampling-scale-image-view三方庫,依賴包會存儲在工程的node_modules目錄下@ohos\subsampling-scale-image-view下。

npm install @ohos/subsampling-scale-image-view --save

在package.json中會自動添加如下依賴:

"dependencies": {
"@ohos/subsampling-scale-image-view": "^1.0.0",
}

subsampling-scale-image-view組件目錄結構。

|---- subsampling-scale-image-view 
|---- src
| |---- main
| |------- ets
| | |---- components # 庫文件夾
| | | |---- SubsamplingScaleImageView.ets # 自定義組件
| | | |---- ImageViewState.ets # 組件狀態數據封裝類

使用說明

import {SubsamplingScaleImageView} from '@ohos/subsampling-scale-image-view';
...
//創建model對象
@State model: SubsamplingScaleImageView.Model = new SubsamplingScaleImageView.Model()

//設置圖片源
private aboutToAppear() {
this.model.setImage($r("app.media.apple"));
}
...
//使用SubsamplingScaleImageView組件
SubsamplingScaleImageView({ model: this.model })
...

主要用到的接口

設置圖片資源

public setImage(src: string | PixelMap | Resource)
public setImage(src: string | PixelMap | Resource, previewSource: string | Resource)
public setImage(src: string | PixelMap | Resource, state: ImageViewState)

接口使用案例

//單擊事件監聽
this.model.setSingleTapListener({
onSingleTapConfirmed(event: ClickEvent) {
console.log("單擊我了")
}
})
// 長按事件監聽
this.model.setLongPressListener({
onLongPress(event: GestureEvent) {
console.log("長按我了");
}
})
// 雙擊事件監聽
this.model.setDoubleTapListener({
onDoubleTap(event: GestureEvent) {
console.log("雙擊我了")
}
})

輪播區域使用Stack布局

/**
* Stack堆疊容器,子組件按照順序依次入棧,后一個子組件覆蓋前一個子組件。
*/
build() {
Stack({ alignContent: Alignment.Bottom }) {
SubsamplingScaleImageView({ model: this.model })
Column({ space: 5 }) {
Swiper(this.swiperController) {
Row({ space: 5 }) {
Image($r('app.media.previous'))
.width(30)
.height(30)
.margin({ top: 6 ,left:10})
.onClick((event: ClickEvent) => {
this.index = 2;
this.model.setImage($r('app.media.cake'));
})
}.width('100%').height(60).backgroundColor(0x3d3d3d)
...
}.index(this.index)
.autoPlay(false)
.indicator(false) // 默認開啟指示點
.loop(true) // 默認開啟循環播放
.duration(50)
.vertical(false) // 默認橫向切換
.itemSpace(0)
.onChange((index: number) => {
console.log('當前下標'+index)
...
})
}.height(60).backgroundColor(0x3d3d3d).align(Alignment.Bottom)
}
}

點擊旋轉按鈕,每次旋轉90度

Image($r('app.media.rotate'))
.width(30)
.height(30)
.margin({ top: 6 ,left:70,right:2})
.onClick((event: ClickEvent) => {
this.rotate +=90;
this.model.setOrientation(this.rotate)
})

項目源碼

https://gitee.com/YiRanRuMeng/open-harmony-image-view/tree/master。

總結

此組件主要實現深度縮放視圖、圖像顯示、手勢平移縮放雙擊等。

  • subsampling-scale-image-view:深度縮放視圖、圖像顯示、手勢平移縮放雙。
  • swiper圖片輪播。
  • setOrientation設置旋轉角度。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2022-09-16 15:34:32

CanvasArkUI

2022-03-21 15:19:27

鴻蒙UI組件ets自定義

2022-10-09 15:13:18

TextPickerArkUI eTS

2022-10-10 14:51:51

ArkUI eTSPieChart組件

2022-07-06 20:24:08

ArkUI計時組件

2022-03-01 16:09:06

OpenHarmon鴻蒙單選組件

2022-05-20 14:34:20

list組件鴻蒙操作系統

2021-11-24 10:02:53

鴻蒙HarmonyOS應用

2022-10-26 15:54:46

canvas組件鴻蒙

2022-08-12 19:13:07

etswifi連接操作

2023-03-13 15:03:05

鴻蒙ArkUI

2022-07-15 16:39:46

ETS導航欄組件

2022-05-23 10:53:54

canvas柱狀圖鴻蒙

2022-02-21 15:05:09

LauncherOpenHarmon鴻蒙

2023-08-10 17:14:52

鴻蒙自定義彈窗

2022-04-24 15:17:56

鴻蒙操作系統

2023-02-20 15:20:43

啟動頁組件鴻蒙

2009-06-24 15:13:36

自定義JSF組件

2022-01-25 17:05:44

ArkUI_eTS操作系統鴻蒙

2022-07-04 16:34:46

流光按鈕Stack
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕亚洲一区 | 久久国产精品一区二区三区 | 久久久91精品国产一区二区三区 | 奇米视频777 | 成人一区精品 | 91麻豆产精品久久久久久夏晴子 | 美女在线视频一区二区三区 | 激情五月婷婷丁香 | 日韩一区二区不卡 | jizz视频| 欧美三区| 欧美一区二区在线视频 | 亚洲色在线视频 | 欧美男人天堂 | 丝袜美腿一区 | 成人免费视频网站在线看 | 日韩中文字幕一区二区三区 | 欧美日韩在线一区二区 | 国产96在线| 中文字幕欧美日韩 | 亚洲人成在线播放 | 国产www成人| 亚洲成人精品 | 911影院 | 国产一区二区三区久久久久久久久 | 99成人| 国产精品久久久久久久久久 | 日韩亚洲一区二区 | 久久草在线视频 | 免费观看羞羞视频网站 | 日韩一区在线播放 | 日本久久精 | 国产成人网 | 在线看片网站 | 亚洲一区中文字幕 | 色婷婷av777 av免费网站在线 | www精品美女久久久tv | 天天射天天操天天干 | 日本三级网址 | 亚洲天堂999 | 99精品欧美一区二区三区 |