HarmonyOS 中的 sharedTransition:實現流暢的頁面過渡動畫

HarmonyOS 中的 sharedTransition:實現流暢的頁面過渡動畫

在移動應用開發中,頁面之間的過渡動畫是提升用戶體驗的關鍵因素之一。HarmonyOS 提供了 sharedTransition 功能,讓開發者能夠輕松實現元素在不同頁面間的平滑過渡效果,創造出連貫且引人入勝的用戶體驗。

什么是 sharedTransition?

sharedTransition(共享元素過渡)是一種動畫效果,它允許在兩個頁面之間共享一個或多個元素,并在頁面切換時平滑地變換這些元素的位置、大小和其他屬性。這種技術可以讓用戶感覺元素是"流動"的,而不是突兀地切換頁面,極大地增強了界面的連貫性和視覺吸引力。

基本使用方法

使用 sharedTransition 非常簡單,只需遵循以下步驟:

  1. 在源頁面和目標頁面中為需要共享的元素添加相同的 sharedTransition 標識
  2. 配置過渡動畫的參數(如持續時間等)
  3. 正常進行頁面路由跳轉

下面是一個完整的示例,展示了如何在兩個頁面之間實現圖片的共享元素過渡:

Index.ets

import { router } from '@kit.ArkUI'@Component
@Entry
struct Index {build() {Column() {// 源頁面中的圖片,添加sharedTransition標識Image('https://i2.chuimg.com/a1cb7a48a56011e6947d0242ac110002_200w_200h.jpg').width(100).onClick(() => {// 跳轉到目標頁面router.pushUrl({url: 'pages/PageImage'})})// 共享元素標識為"abc",過渡持續時間500ms.sharedTransition("abc", { duration: 500 })}.width("100%").height("100%").justifyContent(FlexAlign.Center)}
}

PageImage.ets

@Entry
@Component
struct PageImage {build() {RelativeContainer() {// 目標頁面中的圖片,使用相同的sharedTransition標識Image('https://i2.chuimg.com/a1cb7a48a56011e6947d0242ac110002_200w_200h.jpg').width("90%")// 必須使用與源頁面相同的標識"abc".sharedTransition("abc", { duration: 500 })}.height('100%').width('100%')}
}![在這里插入圖片描述](https://i-blog.csdnimg.cn/direct/1dc4a7db3c6843a0a2cbfa1640ad0ae4.gif#pic_center)

代碼解析

在上面的示例中,我們實現了一個簡單但完整的共享元素過渡效果:

  1. 源頁面 (Index.ets)

    • 包含一個小尺寸(100px)的圖片
    • 為圖片添加了 sharedTransition 修飾器,標識為 “abc”
    • 設置了點擊事件,點擊時跳轉到 PageImage 頁面
    • 配置了過渡動畫持續時間為 500ms
  2. 目標頁面 (PageImage.ets)

    • 包含同一張圖片,但尺寸更大(90% 寬度)
    • 同樣為圖片添加了 sharedTransition 修飾器,使用相同的標識 “abc”
    • 保持與源頁面相同的過渡動畫配置

當用戶點擊源頁面中的圖片時,HarmonyOS 會自動執行以下操作:

  • 識別到兩個頁面中具有相同 sharedTransition 標識的元素
  • 計算元素從源狀態到目標狀態的變化(位置、大小等)
  • 自動生成并執行平滑的過渡動畫
  • 完成頁面切換

進階配置選項

sharedTransition 還提供了更多配置選項來定制過渡效果:

.sharedTransition("identifier", {duration: 500,       // 動畫持續時間(ms)curve: Curve.EaseIn, // 動畫曲線delay: 100,          // 動畫延遲時間(ms)type: SharedTransitionType.MOVE   // 過渡類型
})

其中,SharedTransitionType 支持多種過渡類型:

  • MOVE:元素移動并變換大小
  • FADE:元素淡入淡出
  • SCALE:元素縮放
  • NONE:無過渡效果

最佳實踐

  1. 保持元素一致性:確保共享元素在兩個頁面中具有相似的內容或含義,避免讓用戶感到困惑

  2. 控制過渡時長:一般來說,300-500ms 的過渡時間比較合適,過短會顯得倉促,過長會讓用戶感到拖沓

  3. 避免過度使用:不是所有元素都需要共享過渡效果,過多的過渡動畫會分散用戶注意力

  4. 測試不同場景:確保在不同屏幕尺寸和分辨率下,過渡效果依然流暢自然

總結

sharedTransition 是 HarmonyOS 提供的一個強大功能,它能夠以最少的代碼實現高質量的頁面過渡動畫。通過本文的示例和講解,你應該已經掌握了其基本用法和一些進階技巧。

合理使用 sharedTransition 可以顯著提升應用的用戶體驗,讓你的應用在視覺表現上更上一層樓。嘗試在你的項目中應用這一技術,創造出更加流暢和吸引人的界面效果吧!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/94854.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/94854.shtml
英文地址,請注明出處:http://en.pswp.cn/web/94854.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【服務器】Apache Superset MCP接入與使用

1. 概述 Apache Superset MCP 集成(superset-mcp)是一個基于 Model Control Protocol(MCP)的服務器工具,旨在實現 AI 代理與 Apache Superset 的程序化交互。該項目通過提供標準化的工具接口,使 AI 助手&a…

Postman接口測試:postman設置接口關聯,實現參數化

🍅 點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快postman設置接口關聯在實際的接口測試中,后一個接口經常需要用到前一個接口返回的結果, 從而讓后一個接口能正常執行,這個過程的…

第一個,QT版本問題:no member named SkipEmptyParts‘in namespace ‘Qt

這是我朋友給我發過來的代碼,但是在我電腦上報錯了,遇到的問題是 Qt 版本兼容導致的編譯錯誤。這是因為我的是5.12版本,他的是6.4版本,Qt::SkipEmptyParts只能在6版本使用,無法在5.12甚至更早的版本使用,具…

【PostgreSQL內核學習:通過 ExprState 提升哈希聚合與子計劃執行效率(二)】

PostgreSQL內核學習:通過 ExprState 提升哈希聚合與子計劃執行效率(二)引言ExecBuildHash32FromAttrs示例 SQL 查詢函數運行流程與代碼解釋最終 ExprState 結構執行示例總結ExecComputeSlotInfo示例 SQL 查詢函數注釋與解釋作用參數返回值執行…

技術分析 | Parasoft C/C++test如何突破單元測試的隔離難題

單元測試是保證軟件質量的第一道防線,但其推行往往面臨兩大阻力:一是編寫和維護測試用例耗時費力,二是難以與現有項目和團隊習慣無縫集成。Parasoft C/Ctest 通過其強大的圖形化測試創建能力、自動樁函數技術以及卓越的生態集成性&#xff0c…

K8S架構與組件完全解析

目錄 K8S-組件介紹 一、概述 K8S的由來 K8S的功能 K8S解決的問題 K8S的特性 二、K8S架構與組件 K8S架構 K8S組件 master 節點組件 Kube-apiserver Kube-controller-manager Kube-scheduler etcd node節點組件 Kubelet Kube-Proxy Controller Runtime Pod 三…

Jenkins 執行器(Executor)并發數量修改

Jenkins 執行器(Executor)并發數量修改一、什么是 Jenkins 執行器(Executor)?二、為什么默認是 2?三、如何修改 Jenkins 執行器數量?1. 進入 Jenkins 管理頁面2. 找到節點配置3. 選擇需要修改的…

vue3使用reactive和ref

<script setup>import { ref } from vueconst count ref(0) console.log(count.value)</script><template></template>ref需要注意&#xff0c;在script腳本區域需要加上.value&#xff0c;然后在template模板區域使用不需要帶.value

(筆記)InputChannel跨進程傳輸機制深度分析

概述 InputChannel是Android輸入系統中負責跨進程事件傳輸的核心組件&#xff0c;它建立了InputDispatcher&#xff08;SystemServer進程&#xff09;與應用程序&#xff08;App進程&#xff09;之間的高效通信通道。本文深入分析InputChannel的實現機制&#xff0c;包括socket…

AI實時故障診斷系統(實時采集信號)

1.摘要 本文設計了一套“基于Labview的旋轉機械信號分析與故障診斷系統&#xff08;可部署AI模型和實時監測設備運行狀態&#xff09;”。首先&#xff0c;LabVIEW 端構建了信號采集與設備狀態實時監測模塊和本地數據故障診斷模塊。該系統實現了“數據采集、數據處理、時頻域特…

【51單片機】【protues仿真】基于51單片機籃球計時計分器數碼管系統

目錄 一、主要功能 二、使用步驟 三、硬件資源 四、軟件設計 五、實驗現象 一、主要功能 1、數碼管顯示 1、比賽時間為15&#xff1a;00&#xff0c;甲乙隊比分默認000&#xff0c;通過按鍵修改 3、比賽運行的狀態下&#xff0c;按開始暫停鍵&#xff0c;比賽暫停&#…

[讀論文]Hunyuan 3D 系列

1.0&#xff1a; &#xff08;adaptive clasisfier guidance&#xff0c;input 輸入一個沒cam的branch&#xff1b;提高triplane分辨率&#xff09; 總結&#xff1a; 大規模再train zero123&#xff0c;但角度設置不同&#xff1b;adaptive clasisfier guidance&#xff08;f…

深入理解文本向量嵌入(Vector Embeddings):原理、實踐與應用場景

深入理解文本向量嵌入&#xff08;Vector Embeddings&#xff09;&#xff1a;原理、實踐與應用場景 1. 什么是向量嵌入&#xff1f; 文本向量嵌入&#xff08;Vector Embedding&#xff09;是一種將文本轉化為數值向量的技術&#xff0c;使得字符串之間的關聯性可以通過數值…

微論-神經網絡中記憶的演變

從微突觸到宏認知&#xff1a;論神經網絡中記憶的生成、固化與演化人腦的智能&#xff0c;并非源于單個神經元的孤立活動&#xff0c;而是誕生于由萬億突觸連接所構成的龐大而復雜的網絡動態之中。在這個網絡中&#xff0c;連接權重的強度分布——即強的約束與弱的變數——共同…

機器視覺學習-day07-圖像鏡像旋轉

圖像的鏡像旋轉分為三種&#xff0c;分別使用filpcode的參數表示&#xff1a;flipcode0&#xff0c;垂直翻轉&#xff08;x軸為中線&#xff09; 垂直翻轉可以把src沿著x軸翻轉&#xff0c;坐標從&#xff08;x,y&#xff09;翻轉為(x,-y)。flipcode>0&#xff0c;水平翻轉&…

Python備份實戰專欄第2/6篇:30分鐘搭建企業級API認證系統,安全性吊打90%的方案

30分鐘搭建企業級API認證系統&#xff0c;安全性吊打90%的方案 專欄導語&#xff1a;《從零到一&#xff1a;構建企業級Python Web自動化備份系統實戰指南》第2篇 作者簡介&#xff1a;madechango架構師&#xff0c;負責設計零安全事故的API認證系統&#xff0c;攔截100%非法請…

第6篇:鏈路追蹤系統 - 分布式環境下的請求跟蹤

項目地址&#xff1a;https://github.com/nemoob/atlas-log 開箱即用。前言 在微服務架構中&#xff0c;一個用戶請求往往會經過多個服務的協作處理。本章將實現一個輕量級的鏈路追蹤系統&#xff0c;讓日志具備分布式追蹤能力。 分布式鏈路追蹤基礎概念 鏈路追蹤的核心價值 #m…

ubuntu25.04編譯最新版本qgroundcontrol

編譯系統版本: 編譯器版本: 編譯成功效果

如何在 Docker 和AKS上使用 IIS

前言 在我們的一個客戶項目中,我們有一個混合 Swarm 集群,其中包含 Linux 和 Windows 節點。在 Windows 節點上,我們運行了許多 IIS 容器,這些容器運行著多個 Web 應用程序。在這篇博文中,我想向您展示在 Docker 容器中將網站部署到 IIS 上是多么簡單。 Internet 信息服…

uniapp 頁面favicon.ico文件不存在提示404問題解決

1. uniapp 頁面favicon.ico文件不存在提示404問題解決 1.1. 場景 在uniapp中經常出現的&#xff0c;因為找不到 favicon.ico 而報404錯誤的問題。 GET http://localhost:5174/favicon.ico 404 (Not Found)1.2. 問題原因 在document.ejs中使用link標簽相對路徑引入文件。 <…