<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開發案例:【 slider組件的使用】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-25 22:02 ? 次閱讀

介紹

主要介紹slider滑動條組件的使用。如圖所示拖動對應滑動條調節風車的旋轉速度以及縮放比例。

相關概念

  • [slider組件]:滑動條組件,通常用于快速調節設置值,如音量調節、亮度調節等應用場景。

環境搭建

軟件要求

  • [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的安裝]
  3. 搭建開發環境。
    1. 開始前請參考[工具準備],完成DevEco Studio的安裝和開發環境配置。
    2. 開發環境配置完成后,請參考[使用工程向導]創建工程(模板選擇“Empty Ability”)。
    3. 工程創建完成后,選擇使用[真機進行調測]。
    4. 鴻蒙開發指導文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

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

代碼結構解讀

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

`HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`

├──entry/src/main/js                          // 代碼區
│  └──MainAbility
│     ├──common
│     │  ├──constants
│     │  │  └──constants.js                   // 常量定義文件
│     │  └──images
│     │     ├──ic_speed.png                   // 速度標識圖片
│     │     └──ic_windmill.png                // 風車圖片
│     ├──i18n
│     │  ├──en-US.json                        // 英文國際化
│     │  └──zh-CN.json                        // 中文國際化
│     ├──pages
│     │   └──index
│     │     ├──index.css                      // 界面樣式
│     │     ├──index.hml                      // 主界面
│     │     └──index.js                       // slider組件事件邏輯
│     └───app.js                              // 程序入口
└──entry/src/main/resource                    // 應用靜態資源目錄

頁面布局

界面主要由上方風車圖片展示區域及下方滑動條功能區域兩部分組成,滑動條功能區域包含調節旋轉速度的滑動條組件和調節縮放比例的滑動條組件。

圖片區域

使用image組件加載示例圖片,src屬性標識圖片路徑。transform: scale控制圖片大小,animation-duration動畫樣式用來定義圖形旋轉一周所用的時間。本篇Codelab設置圖片縮放起始倍數為1,旋轉一周需要的默認時間為5000ms。

< !-- index.hml -- >
< div class="top-block" >
    < div class="image-block" style="transform: scale({{ imageSize }});" >
        < image class="image-show" src="{{ imgUrl }}" style="animation-duration: {{ animationDuration }}; "/ >
    < /div >    
< /div >
// index.js
export default {
  data: {
    imgUrl: Constants.IMG_URL,
    animationDuration: Constants.ANIMATION_DURATION,
    imageSize: Constants.INIT_IMAGE_SIZE,
    ...
  }
};

// constants.js
export default class Constants {
  static IMG_URL = '/common/images/ic_windmill.png';
  static INIT_IMAGE_SIZE = 1;
  static ANIMATION_DURATION = '5000ms';
  ...
};

滑動條功能區域

創建兩個slider組件實現控制風車的轉動速度以及風車縮放的大小。配置slider組件最大進度值為100,最小進度值為1,初始進度值為50,滑動條樣式設置為滑塊在滑桿內inset。分別為兩個組件添加事件changeSpeed以及changeSize,用于處理滑塊滑動事件。

< !-- index.hml -- >
< div class="bottom-block" >
    ...
    < div class="slider-block" >
        < image class="speed-slow-img" src="{{ speedImg }}" >< /image >
        < slider min="{{ minSpeed }}" max="{{ maxSpeed }}" value="{{ speed }}" onchange="changeSpeed" mode="inset" >< /slider >
        < image class="speed-fast-img" src="{{ speedImg }}" >< /image >
    < /div >
    ...
    < div class="slider-block" >
        < text class="text-small" >A< /text >
            < slider min="{{ minSize }}" max="{{ maxSize }}" value="{{ size }}" onchange="changeSize" mode="inset" >< /slider >
        < text class="text-big" >A< /text >
    < /div >
< /div >

風車旋轉效果

實現風車旋轉的動畫效果需要在加載風車圖片的image組件上配置如下樣式:

  • animation-name:設置動畫執行的操作。
  • animation-iteration-count:定義動畫播放的次數。
  • animation-timing-function:描述動畫執行的速度曲線,使動畫更加平滑。
/* index.css */
/* 風車圖片布局 */
.image-show {
    /* 動畫執行的操作 */
    animation-name: Go;

    /* 動畫播放的次數:無限 */
    animation-iteration-count: infinite;

    /* 動畫勻速播放 */
    animation-timing-function: linear;
}

/* 圖片旋轉角度:0°到360° */
@keyframes Go {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}

滑動條調整功能

移動控制速度的slider組件滑塊時,觸發slider組件事件。事件類型為end或click時,表示滑動結束或點擊滑動條的某處,此時slider組件的進度值停止改變。獲取當前進度值計算動畫持續時長數值,使用計算結果更新動畫播放時間。

// constants.js
// 動畫最長持續時間
static MAX_ANIMATION_DURATION = 10000;

// 動畫持續時間倍數
static ANIMATION_DURATION_MULTIPLE = 95;

// 毫秒縮寫
static MILLISECOND_ABBREVIATION = "ms";

// index.js
export default {
  /**
   * 修改轉速
   * @param event : slider組件事件
   */
  changeSpeed(event) {
    if (event.mode === Constants.SLIDER_EVENT_MODE_END || event.mode === Constants.SLIDER_EVENT_MODE_CLICK) {
      this.speed = event.value;

      // 計算動畫播放時間
      this.animationDurationNum = Constants.MAX_ANIMATION_DURATION -
        (event.value * Constants.ANIMATION_DURATION_MULTIPLE);
      this.animationDuration = this.animationDurationNum + Constants.MILLISECOND_ABBREVIATION;
    }
  }
};

移動控制縮放比例的slider組件滑塊時,觸發slider組件事件。事件類型為end或click時,表示滑動結束或點擊滑動條的某處,此時slider組件的進度值停止改變。獲取當前進度值計算縮放比例,計算結果保留2位小數。

// constants.js
// 縮放比例計算數值
static HALF_HUNDRED = 50;

// 最小縮放比例 
static MIN_IMAGE_SIZE = 0.1;

// index.js
export default {
  /**
   * 修改縮放比例
   * @param event : slider組件事件
   */
  changeSize(event) {
    if (event.mode === Constants.SLIDER_EVENT_MODE_END || event.mode === Constants.SLIDER_EVENT_MODE_CLICK) {
      this.size = event.value;
      // 圖片縮放比例范圍:0.1到2
      this.imageSize = (this.size / Constants.HALF_HUNDRED) < Constants.MIN_IMAGE_SIZE ?
        Constants.MIN_IMAGE_SIZE : (this.size / Constants.HALF_HUNDRED);
      this.imageSize = this.imageSize.toFixed(2);
    }
  }
};

審核編輯 黃宇

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

    關注

    55

    文章

    1763

    瀏覽量

    42153
  • HarmonyOS
    +關注

    關注

    79

    文章

    1875

    瀏覽量

    29333
  • OpenHarmony
    +關注

    關注

    23

    文章

    3375

    瀏覽量

    15194
收藏 人收藏

    評論

    相關推薦

    HarmonyOS開發案例:【使用List組件實現設置項】

    使用List組件、Toggle組件以及Router接口,實現一個簡單的設置頁,點擊將跳轉到對應的詳細設置頁面。
    的頭像 發表于 05-10 17:01 ?278次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【使用List<b class='flag-5'>組件</b>實現設置項】

    HarmonyOS開發案例:【使用List組件實現商品列表】

    OpenHarmony ArkTS提供了豐富的接口和組件,開發者可以根據實際場景和開發需求,選用不同的組件和接口。
    的頭像 發表于 05-10 16:41 ?295次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【使用List<b class='flag-5'>組件</b>實現商品列表】

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

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

    HarmonyOS IoT 硬件開發案例分享

    ``許思維老師HiSpark Wi-Fi IoT 開發案例分享:案例一:AHT20溫濕度傳感器開發、調試;案例二:oled屏驅動庫移植,調試;案例三:用OLED屏播放視頻,Wi-Fi 和 TCP/IP 綜合應用。 ``
    發表于 10-27 17:30

    【潤和直播課預告@華為開發者學院】HarmonyOS設備開發基礎課程|HiSpark WiFi-IoT 智能小車套件開發案

    `【潤和直播課預告@華為開發者學院】HarmonyOS設備開發基礎課程|HiSparkWiFi-IoT 智能小車套件開發案例,3月18日(周四) 19:00-21:00,讓你的
    發表于 03-16 15:01

    HarmonyOS應用開發資料(Svg組件

    1、HarmonyOS應用開發-Svg組件circle  該組件從API version 7開始支持。后續版本如有新增內容,則采用上角標單獨標記該內容的起始版本。2、
    發表于 03-17 14:49

    組件資料】HarmonyOS三方件開發指南

    1、HarmonyOS三方件開發指南——LoadingView組件1.LoadingView組件功能介紹1.1.功能介紹:LoadingView組件
    發表于 03-21 11:18

    HarmonyOS/OpenHarmony應用開發-聲明式開發范式組件匯總

    組件是構建頁面的核心,每個組件通過對數據和方法的簡單封裝,實現獨立的可視、可交互功能單元。組件之間相互獨立,隨取隨用,也可以在需求相同的地方重復使用。聲明式開發范式目前可供選擇的
    發表于 01-19 11:14

    HarmonyOS/OpenHarmony原生應用-ArkTS萬能卡片組件Slider

    滑動條組件,通常用于快速調節設置值,如音量調節、亮度調節等應用場景。該組件從API Version 7開始支持。無子組件 一、接口 Slider(options?: {value?:
    發表于 10-18 15:39

    HarmonyOS鴻蒙原生應用開發設計- 服務組件

    HarmonyOS設計文檔中,為大家提供了一些已經設計好的原生服務組件庫,開發者可以根據需要直接引用。 開發者直接使用官方提供的服務組件庫樣
    發表于 10-24 16:12

    許思維老師HarmonyOS IoT硬件開發案例分享

    許思維老師HiSpark Wi-Fi IoT 開發案例分享:案例一:AHT20溫濕度傳感器開發、調試;案例二:oled屏驅動庫移植,調試;案例三:用OLED屏播放視頻,Wi-Fi 和 TCP/IP 綜合應用。
    發表于 10-29 10:39 ?39次下載
    許思維老師<b class='flag-5'>HarmonyOS</b> IoT硬件<b class='flag-5'>開發案</b>例分享

    華為開發HarmonyOS零基礎入門:UI組件設計開發實踐

    華為開發HarmonyOS零基礎入門:UI組件設計開發實踐之圖庫應用介紹,應用數據加載顯示模型圖片加載渲染功能快速在其他應用上。
    的頭像 發表于 10-23 10:58 ?1457次閱讀
    華為<b class='flag-5'>開發</b>者<b class='flag-5'>HarmonyOS</b>零基礎入門:UI<b class='flag-5'>組件</b>設計<b class='flag-5'>開發</b>實踐

    華為開發者分論壇HarmonyOS學生公開課-OpenHarmony Codelabs開發案

    2021華為開發者分論壇HarmonyOS學生公開課-OpenHarmony Codelabs開發案
    的頭像 發表于 10-24 11:25 ?1635次閱讀
    華為<b class='flag-5'>開發</b>者分論壇<b class='flag-5'>HarmonyOS</b>學生公開課-OpenHarmony Codelabs<b class='flag-5'>開發案</b>例

    HarmonyOS開發案例:【app內字體大小調節】

    使用基礎組件[Slider],通過拖動滑塊調節應用內字體大小。
    的頭像 發表于 04-19 15:36 ?194次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【app內字體大小調節】

    HarmonyOS開發案例:【視頻播放器】

    基于video、swiper和slider組件,實現簡單的視頻播放器,可支持海報輪播、視頻播放等功能。
    的頭像 發表于 04-22 21:06 ?114次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【視頻播放器】
    亚洲欧美日韩精品久久_久久精品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>