自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

OpenHarmony使用Swiper組件實(shí)現(xiàn)輪播圖

系統(tǒng) OpenHarmony
OpenHarmony可以使用Swiper輪播組件實(shí)現(xiàn)輪播圖。本例基于橘子購物示例應(yīng)用,為大家介紹輪播組件Swiper,該組件提供滑動(dòng)輪播顯示的能力。

想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:

51CTO 開源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

場景說明

輪播圖是一個(gè)在固定區(qū)域內(nèi)輪流展示多張圖片或文本信息的組件。輪播圖會(huì)在預(yù)設(shè)時(shí)間間隔內(nèi),自動(dòng)或手動(dòng)切換到下一張圖片。輪播圖的應(yīng)用場景包括首頁輪播圖、圖片展示、廣告推廣和新聞資訊等,作用主要是通過多張圖片的切換,提高頁面的信息密度,增加視覺沖擊力,為用戶呈現(xiàn)更全面、更直觀的信息。OpenHarmony可以使用Swiper輪播組件實(shí)現(xiàn)輪播圖。

本例基于橘子購物示例應(yīng)用,為大家介紹輪播組件Swiper,該組件提供滑動(dòng)輪播顯示的能力。

效果呈現(xiàn)

橘子購物示例應(yīng)用首頁輪播圖的實(shí)現(xiàn)效果如下:

OpenHarmony使用Swiper組件實(shí)現(xiàn)輪播圖-開源基礎(chǔ)軟件社區(qū)OpenHarmony使用Swiper組件實(shí)現(xiàn)輪播圖-開源基礎(chǔ)軟件社區(qū)

開發(fā)實(shí)現(xiàn)

在橘子購物示例應(yīng)用中,輪播圖實(shí)現(xiàn)的核心代碼位于:OrangeShopping/feature/navigationHome/src/main/ets/components/home/Swiper.ets。

橘子購物示例應(yīng)用中輪播圖部分代碼如下:

import { INDEX_DATA } from '../../mock/ProductsData'

@Component
export struct SwiperComponent {
  @StorageProp('curBp') curBp: string = 'md'

  build() {
    Swiper() {
      ForEach(INDEX_DATA, item => {
        Image(item.img)
          .objectFit(ImageFit.Cover)
          .width('100%')
          .height('100%')
          .borderRadius(16)
      })
    }
    .padding({ left: 12, right: 12 })
    .height(170)
    .autoPlay(true)
    .itemSpace(20)
    .displayCount(this.curBp === 'sm' ? 1 : this.curBp === 'md' ? 2 : 3)
    .indicatorStyle({
      selectedColor: $r('app.color.red'),
      color: $r('app.color.white')
    })
  }
}

接下來,我們一起學(xué)習(xí)下這些代碼。

組件代碼

在上述代碼中,在Swiper組件中通過ForEach函數(shù)遍歷INDEX_DATE這個(gè)SwiperModel數(shù)組,將每一個(gè)SwiperModel對(duì)象中的圖片用Image組件展示出來。

另外,通過Swiper的.displayCount()屬性對(duì)不同尺寸的窗口設(shè)置不同的每頁子組件顯示個(gè)數(shù)。此處狀態(tài)變量curBp被StorageProp裝飾器所裝飾,將與AppStorage建立單向數(shù)據(jù)綁定,該狀態(tài)變量的值將使用AppStorage中的值進(jìn)行初始化,AppStorage中的屬性值的更改會(huì)導(dǎo)致綁定的UI組件進(jìn)行狀態(tài)更新。裝飾器在這里不做贅述,有興趣可以查看文檔:應(yīng)用級(jí)變量的狀態(tài)管理 · HarmonyOS應(yīng)用開發(fā)。

對(duì)于屏幕尺寸進(jìn)行說明:xs代表最小寬度類型設(shè)備,sm代表小屏,md代表中屏,lg代表大屏。

代碼中涉及到的Swiper組件的特有屬性用法如下,如果需要詳細(xì)了解輪播組件,可以查看:輪播組件(Swiper) · 開發(fā)指南。也可以查閱Swiper容器組件 · HarmonyOS應(yīng)用開發(fā)了解更多Swiper組件屬性。

名稱

參數(shù)類型

描述

autoPlay

boolean

子組件是否自動(dòng)播放,自動(dòng)播放狀態(tài)下,導(dǎo)航點(diǎn)不可操作。默認(rèn)值:false

itemSpace

number | string

設(shè)置子組件與子組件之間間隙。默認(rèn)值:0

displayCount8+

number | string

設(shè)置一頁中顯示子組件的個(gè)數(shù),設(shè)置為“auto”時(shí)等同于SwiperDisplayMode.AutoLinear的顯示效果。默認(rèn)值:1

indicatorStyle8+

{left?: Length,top?: Length,right?: Length,bottom?: Length,size?: Length,mask?: boolean,color?: ResourceColor,selectedColor?: ResourceColor}

設(shè)置導(dǎo)航點(diǎn)樣式:- left: 設(shè)置導(dǎo)航點(diǎn)距離Swiper組件左邊的距離。- top: 設(shè)置導(dǎo)航點(diǎn)距離Swiper組件頂部的距離。- right: 設(shè)置導(dǎo)航點(diǎn)距離Swiper組件右邊的距離。- bottom: 設(shè)置導(dǎo)航點(diǎn)距離Swiper組件底部的距離。- size: 設(shè)置導(dǎo)航點(diǎn)的直徑。- mask: 設(shè)置是否顯示導(dǎo)航點(diǎn)蒙層樣式。- color: 設(shè)置導(dǎo)航點(diǎn)的顏色。- selectedColor: 設(shè)置選中的導(dǎo)航點(diǎn)的顏色。

輪播圖少不了和Image組件打交道,如果想要了解更多Image組件屬性,請(qǐng)查閱:Image-基礎(chǔ)組件 · HarmonyOS應(yīng)用開發(fā);如果想要獲取Image組件的使用示例,請(qǐng)查閱:顯示圖片(Image) · OpenHarmony/docs - Gitee.com。

橘子購物示例應(yīng)用輪播組件中涉及的Image組件的特有屬性用法如下:

名稱

參數(shù)類型

默認(rèn)值

描述

objectFit

ImageFit

Cover

設(shè)置圖片的縮放類型。

其中,ImageFit參數(shù)包含如下選項(xiàng):

名稱

描述

Contain

保持寬高比進(jìn)行縮小或者放大,使得圖片完全顯示在顯示邊界內(nèi)。

Cover

保持寬高比進(jìn)行縮小或者放大,使得圖片兩邊都大于或等于顯示邊界。

Auto

自適應(yīng)顯示

Fill

不保持寬高比進(jìn)行放大縮小,使得圖片充滿顯示邊界。

ScaleDown

保持寬高比顯示,圖片縮小或者保持不變。

None

保持原有尺寸顯示。

導(dǎo)入和導(dǎo)出

export:在聲明時(shí)將 SwiperComponent 這個(gè)組件導(dǎo)出,導(dǎo)出的組件可以被其他ets文件導(dǎo)入。

import:首行使用import從相對(duì)路徑../../mock/ProductsData這個(gè)文件中導(dǎo)入INDEX_DATA常量數(shù)組

export const INDEX_DATA: Array<SwiperModel> = [
  { id: 0, img: $r('app.media.banner_movie1') },
  { id: 1, img: $r("app.media.banner_movie3") },
  { id: 2, img: $r('app.media.banner_movie1') },
  { id: 3, img: $r("app.media.banner_movie3") }
]

SwiperModel的定義,用于構(gòu)建一個(gè)輪播對(duì)象實(shí)例。

export class SwiperModel {
  constructor(public id: number, public img: Resource) {
    this.id = id
    this.img = img
  }
}

資源的分類與訪問

應(yīng)用開發(fā)中使用的各類資源文件,需要放入特定子目錄中存儲(chǔ)管理。resources目錄包括三大類目錄,一類為base目錄,一類為限定詞目錄,還有一類為rawfile目錄。stage模型多工程情況下共有的資源文件放到AppScope下的resources目錄,base目錄默認(rèn)存在。

base目錄的二級(jí)子目錄為資源組目錄,用于存放字符串、顏色、布爾值等基礎(chǔ)元素,以及媒體、動(dòng)畫、布局等資源文件。

在工程中,通過$r('app.type.name')的形式引用應(yīng)用資源,$r是一個(gè)全局函數(shù),接收一個(gè)字符串路徑并返回這個(gè)資源文件。app代表應(yīng)用內(nèi)resources目錄中定義的資源;type代表資源類型(或資源的存放位置),可以取“color”、“float”、“string”、“plural”、“media”,name代表資源命名,由開發(fā)者定義資源時(shí)確定。

應(yīng)用使用某資源時(shí),系統(tǒng)會(huì)根據(jù)當(dāng)前設(shè)備狀態(tài)優(yōu)先從相匹配的限定詞目錄中尋找該資源。只有當(dāng)resources目錄中沒有與設(shè)備狀態(tài)匹配的限定詞目錄,或者在限定詞目錄中找不到該資源時(shí),才會(huì)去base目錄中查找。rawfile是原始文件目錄,不會(huì)根據(jù)設(shè)備狀態(tài)去匹配不同的資源。

本例中對(duì)圖片的引用 "app.media.banner_movie1" 和對(duì)顏色的引用$r('app.color.white'),分別對(duì)應(yīng)resources/base/media/banner_movie1.png這張圖片和resources/base/element/color.json這個(gè)json文件中的white顏色值。

關(guān)于資源的分類與訪問,此處不做詳細(xì)描述。官方資料見參考文檔:資源分類與訪問 · HarmonyOS應(yīng)用開發(fā)。

想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:

51CTO 開源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

責(zé)任編輯:jianghua 來源: 51CTO 開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2018-01-08 16:19:04

微信程序輪播圖

2016-12-01 09:24:56

Android

2018-04-16 14:39:10

Vue輪播切換

2022-09-19 19:16:42

輪播圖has

2022-03-11 20:31:35

canvasHarmony鴻蒙

2024-06-11 00:00:00

前端輪播圖硬件

2022-03-01 16:09:06

OpenHarmon鴻蒙單選組件

2022-07-26 14:40:42

ArkUIJS

2015-07-21 12:30:15

Swift輪播圖無限循環(huán)

2022-09-02 15:17:04

ArkUI鴻蒙

2022-09-15 15:04:16

ArkUI鴻蒙

2022-06-16 09:55:58

css輪播圖

2023-08-24 16:45:16

應(yīng)用開發(fā)父自定義組件

2022-02-14 14:14:02

鴻蒙數(shù)據(jù)可視化JS

2021-03-10 15:03:40

鴻蒙HarmonyOS應(yīng)用

2024-08-15 08:56:17

2022-08-17 16:38:46

WLAN接口組件功能

2022-06-01 22:35:25

滑桿組件鴻蒙

2023-07-17 16:13:21

組件模塊開發(fā)的鴻蒙
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)