HarmonyOS NEXT應用開發案例—使用彈簧曲線實現抖動動畫及手機振動效果案例

来源:https://www.cnblogs.com/HarmonyOSNext/p/18151608
-Advertisement-
Play Games

介紹 本示例介紹使用vibrator.startVibration方法實現手機振動效果,用animateTo顯示動畫實現點擊後的抖動動畫。 效果圖預覽 使用說明 載入完成後顯示登錄界面,未勾選協議時點擊一鍵登錄按鈕會觸發手機振動效果和提示文本的抖動動畫。 實現思路 創建一個函數startVibrat ...


介紹

本示例介紹使用vibrator.startVibration方法實現手機振動效果,用animateTo顯示動畫實現點擊後的抖動動畫。

效果圖預覽

使用說明

  1. 載入完成後顯示登錄界面,未勾選協議時點擊一鍵登錄按鈕會觸發手機振動效果和提示文本的抖動動畫。

實現思路

  1. 創建一個函數startVibrate()調用vibrator.startVibration方法實現手機振動效果(需要許可權:ohos.permission.VIBRATE)。源碼參考VibrateEffect.ets
  startVibrate() {
    try {
      // TODO: 知識點:vibrator.startVibration 根據指定振動效果和振動屬性觸發馬達振動
      vibrator.startVibration({
        type: 'time',
        // 持續觸發馬達振動時間600ms
        duration: CONFIGURATION.VIBRATION_TIME,
      }, {
        id: 0,
        usage: 'alarm',
      }, (error: BusinessError) => {
        if (error) {
          logger.error(`Failed to start vibration. Code: ${error.code}, messege: ${error.message}`);
          return;
        }
        logger.info('Succeed in starting vibration');
      });
    } catch (err) {
      let e: BusinessError = err as BusinessError;
      logger.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
    }
  }
  1. 創建一個函數startAnimation()使用animateTo顯示動畫實現提示文本的抖動動畫。源碼參考VibrateEffect.ets
  startAnimation() {
    // TODO: 知識點:通過animateTo顯示動畫指定由於閉包代碼導致的狀態變化插入過渡動效
    animateTo({
      duration: CONFIGURATION.ANIMATION_TIME,
      // 彈簧曲線:初始速度100,質量1,剛度80,阻尼10
      curve: curves.springCurve(CONFIGURATION.VELOCITY_VALUE, CONFIGURATION.MASS_VALUE,
        CONFIGURATION.STIFFNESS_VALUE, CONFIGURATION.DAMPING_VALUE),
      // 播放2次
      iterations: CONFIGURATION.PLAYBACK_COUNT,
    },
      () => {
        // 抖動動偏移量
        this.translateX = CONFIGURATION.TRANSLATE_OFFSET_X;
      })
    this.translateX = CONFIGURATION.POSITION_ZERO;
  }

高性能知識點

不涉及

工程結構&模塊類型

vibrateeffect                                   // har類型
|---components
|   |---constantsData.ets                       // 定義常量數據
|---ProductView.ets                             // 視圖層-場景列表頁面

模塊依賴

本實例依賴common模塊來實現日誌的列印、資源的調用

參考資料

顯式動畫

@ohos.vibrator (振動)

訪問控制授權申請


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 項目背景 數字金融是數字經濟的重要支撐和驅動力。近年來,我國針對數字金融的發展政策頻頻出台,《金融科技發展規劃 (2022-2025年)》、《“十四五”數字經濟發展規劃》、《關於銀行業保險業數字化轉型的指導意見》、《金融標準化“十 四五”發展規劃》等相繼發佈,頂層設計逐步完善。 2024年,政府工作 ...
  • DB2是IBM的一款關係型資料庫管理系統,JDBC DB2 Source Connector是一個用於通過JDBC讀取外部數據源數據的連接器。Apache SeaTunnel如何支持JDBC DB2 Sink Connector?請參考本文檔。 支持引擎 Spark Flink SeaTunnel ...
  • JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,常用於將數據從伺服器發送到Web應用程式。 ...
  • 前言 今天docker安裝mysql8.0.20捯飭了半天,主要是掛載問題和連接問題,索性記錄一下。網上很多千篇一律,還有很多就是過時了,那還是我自己上場吧。大家看的時候,請睜大眼睛,按步驟來。 Docker安裝MySQL8.0.20 此處預設你已經搭建好了docker環境 第一步 拉鏡像 dock ...
  • 前幾天遇到了一起備份失敗案例,RMAN備份過程中遇到了歸檔日誌損壞的情況,還是第一次遇到這種案例,這裡記錄一下這個案例的具體情況。 備份作業失敗,檢查RMAN備份的輸出日誌,發現一個歸檔日誌文件損壞(corrupt)了,如下所示: RMAN-08137: warning: archived log  ...
  • 1.背景概述 客戶業務發生死鎖的報錯,根據業務程式日誌及業務流程,發現造成死鎖的原因是:事務1 delete + insert ,事務2 delete + insert 2個事務交替執行導致的死鎖;由於GAP鎖阻塞了插入意向鎖,並且當delete的數據存在時死鎖不會發生,當delete的數據不存在時 ...
  • 深度解析GaussDB(DWS)+Flink如何增強湖倉增量數據在不同數據模型層之間的實時流動能力,如何為消息數據流提供高性能通用入庫能力,又如何構建極致的端到端實時數倉解決方案。 ...
  • 介紹 本示例介紹通過CustomDialogController類顯示自定義日曆選擇器。 效果圖預覽 使用說明 載入完成後顯示主界面,點當前日期後會彈出日曆選擇器,選擇日期後會關閉彈窗,主頁面日期會變成選定的日期。 實現思路 獲取當前月和下個月的日期信息。源碼參考GetDate.ets。 const ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...