<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天內不再提示

HarmonyOS開發案例:【image、image-animator組件】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-26 17:32 ? 次閱讀

介紹

OpenHarmony提供了常用的圖片、圖片幀動畫播放器組件,開發者可以根據實際場景和開發需求,實現不同的界面交互效果,包括:點擊陰影效果、點擊切換狀態、點擊動畫效果、點擊切換動效。

相關概念

  • [image組件]:圖片組件,用于圖片資源的展示。
  • [image-animator組件]:幀動畫播放器,用以播放一組圖片,可以設置播放時間、次數等參數。
  • [通用事件]:事件綁定在組件上,當組件達到事件觸發條件時,會執行JS中對應的事件回調函數,實現頁面UI視圖和頁面JS邏輯層的交互。

環境搭建

軟件要求

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

硬件要求

  • 開發板類型:[潤和RK3568開發板]。
  • OpenHarmony系統:3.2 Release及以上版本。

環境搭建

完成本篇Codelab我們首先要完成開發環境的搭建,本示例以RK3568開發板為例,參照以下步驟進行:

  1. [獲取OpenHarmony系統版本]:標準系統解決方案(二進制)。以3.2 Release版本為例:
  2. 搭建燒錄環境。
    1. [完成DevEco Device Tool的安裝]
    2. [完成RK3568開發板的燒錄]
  3. 搭建開發環境。
    1. 開始前請參考[工具準備],完成DevEco Studio的安裝和開發環境配置。
    2. 開發環境配置完成后,請參考[使用工程向導]創建工程(模板選擇“Empty Ability”)。
    3. 工程創建完成后,選擇使用[真機進行調測]。
    4. 鴻蒙開發指導文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

代碼結構解讀

本篇Codelab只對核心代碼進行講解,對于完整代碼,我們會在gitee中提供。

├──entry/src/main/js	              // 代碼區
│  └──MainAbility
│     ├──common
│     │  ├──constants
│     │  │  └──commonConstants.js     // 幀動畫數據常量
│     │  └──images
│     ├──i18n		                  // 中英文	
│     │  ├──en-US.json			
│     │  └──zh-CN.json			
│     └──pages
│        └──index
│           ├──index.css              // 首頁樣式文件	
│           ├──index.hml              // 首頁布局文件
│           └──index.js               // 首頁腳本文件
└──entry/src/main/resources           // 應用資源目錄

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

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

界面布局

本示例使用卡片布局,將四種實現以四張卡片的形式呈現在主界面。每張卡片都使用圖文結合的方式直觀地向開發者展示所實現效果。

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

< !-- index.hml -- >
< div class="container" >
    < !-- image組件的點擊效果 -- >
    < 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組件的點擊效果 -- >
    < 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事件,實現點擊圖片改變邊框陰影的效果,點擊觸碰結束時,恢復初始效果。

// index.js
// 點擊陰影效果
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事件,實現點擊切換狀態并變換顯示圖片的效果。

// index.js
// 點擊切換狀態
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事件,實現點擊播放幀動畫效果。

// index.js
// 點擊動畫效果方法
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();
    }
  }
}

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鴻蒙
    +關注

    關注

    55

    文章

    1761

    瀏覽量

    42153
  • HarmonyOS
    +關注

    關注

    79

    文章

    1877

    瀏覽量

    29333
  • OpenHarmony
    +關注

    關注

    23

    文章

    3376

    瀏覽量

    15194
收藏 人收藏

    評論

    相關推薦

    CMOS Image sensor的基礎知識

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

    HarmonyOS開發案例:【基礎組件Slider的使用】

    學習如何使用聲明式UI編程框架的基礎組件。本篇Codelab將會使用Image組件、Slider組件、Text組件共同實現一個可調節的風車動
    的頭像 發表于 05-10 16:01 ?281次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【基礎<b class='flag-5'>組件</b>Slider的使用】

    HarmonyOSAPP-Image體驗與分享

    `一、各項效果展示 二、體驗操作過程這里敲的是一個image的案例實現我們得導入一張圖片,把這張圖片導入到“entry > src > main >
    發表于 03-15 19:11

    鴻蒙應用開發image-animator幀動畫的播放

    `這里使用image-animator做了一個幀動畫的播放設置了四個按鈕控制動漫的播放效果stop: 停止播放圖片幀動畫。start: 開始播放圖片幀動畫。再次調用,重新從第1幀開始播放。pause
    發表于 04-28 10:16

    HarmonyOS實戰—Image組件的剪切和縮放

    1. Image圖片標簽概述:圖片(Image)是用來顯示圖片的組件。常見的屬性:id,長、寬、高等。具體可以參考華為開發手冊(組件的通用屬
    發表于 08-17 18:00

    HarmonyOS應用開發-ClickableImageJsDome體驗

    的設計。本DEMO主要涉及到的頁面元素有有image,image-animator,展現圖片資源在界面交互中幾種常見運用效果。旨在幫助開發人員快速了解HarmonyOS JSUI應用的
    發表于 06-18 11:42

    HarmonyOS實現幾種常見圖片點擊效果

    。 相關概念 ● ??image組件??:圖片組件,用于圖片資源的展示。 ● ??image-animator組件??:幀動畫播放器,用以播
    發表于 09-07 15:50

    Biosignal and Biomedical Image

    Biosignal and Biomedical Image Processing MATLAB based Applications
    發表于 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
    發表于 06-18 07:39 ?17次下載

    Image Compression - Spelling O

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

    Image Matters為極端成像應用開發創新的高性能平臺

    Image Matters為極端成像應用開發創新的高性能平臺。
    的頭像 發表于 01-11 07:08 ?1783次閱讀

    Halcon教程:Image、Regiong、XLD基礎

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

    HarmonyOS 應用開發-ClickableImageJsDome體驗

    的設計。本DEMO主要涉及到的頁面元素有有image,image-animator,展現圖片資源在界面交互中幾種常見運用效果。旨在幫助開發人員快速了解 HarmonyOS JSUI應用
    的頭像 發表于 06-20 00:24 ?950次閱讀
    <b class='flag-5'>HarmonyOS</b> 應用<b class='flag-5'>開發</b>-ClickableImageJsDome體驗

    OpenHarmony應用開發之ETS開發方式Image組件

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

    Encrypted Boot image泄漏討論

    在《安全啟動模式下的數據保存問題》中,小編介紹了在HAB boot和XIP encrypted boot下,讀寫外部Nor Flash數據的特點以及image的數據特征狀態,比如使能XIP
    的頭像 發表于 10-26 10:08 ?610次閱讀
    亚洲欧美日韩精品久久_久久精品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>