0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HarmonyOS開(kāi)發(fā)案例:【image、image-animator組件】

jf_46214456 ? 來(lái)源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-26 17:32 ? 次閱讀

介紹

OpenHarmony提供了常用的圖片、圖片幀動(dòng)畫(huà)播放器組件,開(kāi)發(fā)者可以根據(jù)實(shí)際場(chǎng)景和開(kāi)發(fā)需求,實(shí)現(xiàn)不同的界面交互效果,包括:點(diǎn)擊陰影效果、點(diǎn)擊切換狀態(tài)、點(diǎn)擊動(dòng)畫(huà)效果、點(diǎn)擊切換動(dòng)效。

相關(guān)概念

  • [image組件]:圖片組件,用于圖片資源的展示。
  • [image-animator組件]:幀動(dòng)畫(huà)播放器,用以播放一組圖片,可以設(shè)置播放時(shí)間、次數(shù)等參數(shù)
  • [通用事件]:事件綁定在組件上,當(dāng)組件達(dá)到事件觸發(fā)條件時(shí),會(huì)執(zhí)行JS中對(duì)應(yīng)的事件回調(diào)函數(shù),實(shí)現(xiàn)頁(yè)面UI視圖和頁(yè)面JS邏輯層的交互。

環(huán)境搭建

軟件要求

  • [DevEco Studio]版本:DevEco Studio 3.1 Release及以上版本。
  • OpenHarmony SDK版本:API version 9及以上版本。

硬件要求

  • 開(kāi)發(fā)板類型:[潤(rùn)和RK3568開(kāi)發(fā)板]。
  • OpenHarmony系統(tǒng):3.2 Release及以上版本。

環(huán)境搭建

完成本篇Codelab我們首先要完成開(kāi)發(fā)環(huán)境的搭建,本示例以RK3568開(kāi)發(fā)板為例,參照以下步驟進(jìn)行:

  1. [獲取OpenHarmony系統(tǒng)版本]:標(biāo)準(zhǔn)系統(tǒng)解決方案(二進(jìn)制)。以3.2 Release版本為例:
  2. 搭建燒錄環(huán)境。
    1. [完成DevEco Device Tool的安裝]
    2. [完成RK3568開(kāi)發(fā)板的燒錄](méi)
  3. 搭建開(kāi)發(fā)環(huán)境。
    1. 開(kāi)始前請(qǐng)參考[工具準(zhǔn)備],完成DevEco Studio的安裝和開(kāi)發(fā)環(huán)境配置。
    2. 開(kāi)發(fā)環(huán)境配置完成后,請(qǐng)參考[使用工程向?qū)創(chuàng)建工程(模板選擇“Empty Ability”)。
    3. 工程創(chuàng)建完成后,選擇使用[真機(jī)進(jìn)行調(diào)測(cè)]。
    4. 鴻蒙開(kāi)發(fā)指導(dǎo)文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

代碼結(jié)構(gòu)解讀

本篇Codelab只對(duì)核心代碼進(jìn)行講解,對(duì)于完整代碼,我們會(huì)在gitee中提供。

├──entry/src/main/js	              // 代碼區(qū)
│  └──MainAbility
│     ├──common
│     │  ├──constants
│     │  │  └──commonConstants.js     // 幀動(dòng)畫(huà)數(shù)據(jù)常量
│     │  └──images
│     ├──i18n		                  // 中英文	
│     │  ├──en-US.json			
│     │  └──zh-CN.json			
│     └──pages
│        └──index
│           ├──index.css              // 首頁(yè)樣式文件	
│           ├──index.hml              // 首頁(yè)布局文件
│           └──index.js               // 首頁(yè)腳本文件
└──entry/src/main/resources           // 應(yīng)用資源目錄

`HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789v直接拿`

搜狗高速瀏覽器截圖20240326151344.png

界面布局

本示例使用卡片布局,將四種實(shí)現(xiàn)以四張卡片的形式呈現(xiàn)在主界面。每張卡片都使用圖文結(jié)合的方式直觀地向開(kāi)發(fā)者展示所實(shí)現(xiàn)效果。

每張卡片對(duì)應(yīng)一個(gè)div容器組件,以水平形式分為左側(cè)文本和右側(cè)圖片兩部分。左側(cè)文本同樣是一個(gè)div容器組件,以垂直形式分為操作文本與效果描述文本。右側(cè)圖片則根據(jù)需要使用image組件或image-animator組件。當(dāng)前示例中,前兩張卡片右側(cè)使用的是image組件,剩余兩張卡片使用的是image-animator組件。

< !-- index.hml -- >
< div class="container" >
    < !-- image組件的點(diǎn)擊效果 -- >
    < div class="card-container" for="item in imageCards" >
        < div class="text-container" >
            < text class="text-operation" >{{ contentTitle }}< /text >
            < text class="text-description" >{{ item.description }}< /text >
        < /div >
        < image class="{{ item.classType }}" src="{{ item.src }}" onclick="changeHookState({{ item.eventType }})"
               ontouchstart="changeShadow({{ item.eventType }},true)"
               ontouchend="changeShadow({{ item.eventType }},false)"/ >
    < /div >
	
    < !-- image-animator組件的點(diǎn)擊效果 -- >
    < div class="card-container" for="item in animationCards" >
        < div class="text-container" >
            < text class="text-operation" >{{ contentTitle }}< /text >
            < text class="text-description" >{{ item.description }}< /text >
        < /div >
        < image-animator id="{{ item.id }}" class="animator" images="{{ item.frames }}" iteration="1"
                        duration="{{ item.durationTime }}" onclick="handleStartFrame({{ item.type }})"/ >
    < /div >
< /div >

事件交互

為image組件添加touchstart和touchend事件,實(shí)現(xiàn)點(diǎn)擊圖片改變邊框陰影的效果,點(diǎn)擊觸碰結(jié)束時(shí),恢復(fù)初始效果。

// index.js
// 點(diǎn)擊陰影效果
changeShadow(eventType, shadowFlag) {
  if (eventType === 'click') {
    return;
  }
  if (shadowFlag) {
    this.imageCards[0].classType = 'main-img-touch';
  } else {
    this.imageCards[0].classType = 'img-normal';
  }
}

為image組件添加click事件,實(shí)現(xiàn)點(diǎn)擊切換狀態(tài)并變換顯示圖片的效果。

// index.js
// 點(diǎn)擊切換狀態(tài)
changeHookState(eventType) {
  if (eventType === 'touch') {
    return;
  }
  if (this.hook) {
    this.imageCards[1].src = '/common/images/ic_fork.png';
    this.hook = false;
  } else {
    this.imageCards[1].src = '/common/images/ic_hook.png';
    this.hook = true;
  }
}

為image-animator組件添加click事件,實(shí)現(xiàn)點(diǎn)擊播放幀動(dòng)畫(huà)效果。

// index.js
// 點(diǎn)擊動(dòng)畫(huà)效果方法
handleStartFrame(type) {
  if (type === 'dial') {
    this.animationCards[0].durationTime = CommonConstants.DURATION_TIME;
    this.$element('dialAnimation').start();
  } else {
    if (this.animationCards[1].flag) {
      this.animationCards[1].frames = this.collapse;
      this.animationCards[1].durationTime = this.durationTimeArray[0];
      this.$element('toggleAnimation').start();
      this.animationCards[1].flag = false;
      this.$element('toggleAnimation').stop();
    } else {
      this.animationCards[1].frames = this.arrow;
      this.animationCards[1].durationTime = this.durationTimeArray[1];
      this.$element('toggleAnimation').start();
      this.animationCards[1].flag = true;
      this.$element('toggleAnimation').stop();
    }
  }
}

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2302

    瀏覽量

    42689
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1966

    瀏覽量

    29962
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3635

    瀏覽量

    16061
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CMOS Image sensor的基礎(chǔ)知識(shí)

    攝像機(jī)用來(lái)成像的感光元件叫做Image Sensor或Imager。目前廣泛使用的2種Image Sensor是CCD和CMOS Image Sensor(CIS)。
    的頭像 發(fā)表于 01-15 11:07 ?4700次閱讀
    CMOS <b class='flag-5'>Image</b> sensor的基礎(chǔ)知識(shí)

    HarmonyOS開(kāi)發(fā)案例:【基礎(chǔ)組件Slider的使用】

    學(xué)習(xí)如何使用聲明式UI編程框架的基礎(chǔ)組件。本篇Codelab將會(huì)使用Image組件、Slider組件、Text組件共同實(shí)現(xiàn)一個(gè)可調(diào)節(jié)的風(fēng)車動(dòng)
    的頭像 發(fā)表于 05-10 16:01 ?630次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開(kāi)發(fā)案</b>例:【基礎(chǔ)<b class='flag-5'>組件</b>Slider的使用】

    鴻蒙應(yīng)用開(kāi)發(fā)image-animator幀動(dòng)畫(huà)的播放

    `這里使用image-animator做了一個(gè)幀動(dòng)畫(huà)的播放設(shè)置了四個(gè)按鈕控制動(dòng)漫的播放效果stop: 停止播放圖片幀動(dòng)畫(huà)。start: 開(kāi)始播放圖片幀動(dòng)畫(huà)。再次調(diào)用,重新從第1幀開(kāi)始播放。pause
    發(fā)表于 04-28 10:16

    HarmonyOS實(shí)戰(zhàn)—Image組件的剪切和縮放

    1. Image圖片標(biāo)簽概述:圖片(Image)是用來(lái)顯示圖片的組件。常見(jiàn)的屬性:id,長(zhǎng)、寬、高等。具體可以參考華為開(kāi)發(fā)手冊(cè)(組件的通用屬
    發(fā)表于 08-17 18:00

    HarmonyOS應(yīng)用開(kāi)發(fā)-ClickableImageJsDome體驗(yàn)

    的設(shè)計(jì)。本DEMO主要涉及到的頁(yè)面元素有有imageimage-animator,展現(xiàn)圖片資源在界面交互中幾種常見(jiàn)運(yùn)用效果。旨在幫助開(kāi)發(fā)人員快速了解HarmonyOS JSUI應(yīng)用的
    發(fā)表于 06-18 11:42

    HarmonyOS實(shí)現(xiàn)幾種常見(jiàn)圖片點(diǎn)擊效果

    。 相關(guān)概念 ● ??image組件??:圖片組件,用于圖片資源的展示。 ● ??image-animator組件??:幀動(dòng)畫(huà)播放器,用以播
    發(fā)表于 09-07 15:50

    Biosignal and Biomedical Image

    Biosignal and Biomedical Image Processing MATLAB based Applications
    發(fā)表于 02-17 23:09 ?0次下載
    Biosignal and Biomedical <b class='flag-5'>Image</b>

    Digital Image Processing (Hong

    Digital Image Processing:•What is an Image?Picture, photographVisual dataUsually two or three
    發(fā)表于 06-18 07:39 ?17次下載

    Image Compression - Spelling O

    Image Compression - Spelling Out the Options
    發(fā)表于 10-02 09:16 ?25次下載
    <b class='flag-5'>Image</b> Compression - Spelling O

    Image_Rotation

    Image Rotation,好東西,喜歡的朋友可以下載來(lái)學(xué)習(xí)。
    發(fā)表于 02-22 14:49 ?0次下載

    Image Matters為極端成像應(yīng)用開(kāi)發(fā)創(chuàng)新的高性能平臺(tái)

    Image Matters為極端成像應(yīng)用開(kāi)發(fā)創(chuàng)新的高性能平臺(tái)。
    的頭像 發(fā)表于 01-11 07:08 ?1923次閱讀

    Halcon教程:Image、Regiong、XLD基礎(chǔ)

    一 讀取的3種方式: read_image( image,'filename') ? ? ? //image 是輸出對(duì)象,后面是輸入文件的路徑和名稱 讀取多圖:? 1,申明一個(gè)數(shù)組,分別保存路徑
    的頭像 發(fā)表于 01-07 11:52 ?4845次閱讀
    Halcon教程:<b class='flag-5'>Image</b>、Regiong、XLD基礎(chǔ)

    HarmonyOS 應(yīng)用開(kāi)發(fā)-ClickableImageJsDome體驗(yàn)

    的設(shè)計(jì)。本DEMO主要涉及到的頁(yè)面元素有有imageimage-animator,展現(xiàn)圖片資源在界面交互中幾種常見(jiàn)運(yùn)用效果。旨在幫助開(kāi)發(fā)人員快速了解 HarmonyOS JSUI應(yīng)用
    的頭像 發(fā)表于 06-20 00:24 ?1085次閱讀
    <b class='flag-5'>HarmonyOS</b> 應(yīng)用<b class='flag-5'>開(kāi)發(fā)</b>-ClickableImageJsDome體驗(yàn)

    OpenHarmony應(yīng)用開(kāi)發(fā)之ETS開(kāi)發(fā)方式Image組件

    今天帶大家了解ETS開(kāi)發(fā)方式中的Image組件
    的頭像 發(fā)表于 07-03 12:06 ?3418次閱讀
    OpenHarmony應(yīng)用<b class='flag-5'>開(kāi)發(fā)</b>之ETS<b class='flag-5'>開(kāi)發(fā)</b>方式<b class='flag-5'>Image</b><b class='flag-5'>組件</b>

    鴻蒙ArkTS聲明式組件Image

    Image為圖片組件,常用于在應(yīng)用中顯示圖片。Image支持加載[PixelMap]、[ResourceStr]和[DrawableDescriptor]類型的數(shù)據(jù)源,支持png、jpg、bmp、svg和gif類型的圖片格式。
    的頭像 發(fā)表于 06-23 20:32 ?743次閱讀
    鴻蒙ArkTS聲明式<b class='flag-5'>組件</b>:<b class='flag-5'>Image</b>