harmony 鴻蒙ArkUI動畫/交互事件開發常見問題(ArkTS)

ArkUI動畫/交互事件開發常見問題(ArkTS)

焦點事件onBlur/onFocus回調無法觸發(API 9)

問題現象

焦點事件onBlur/onFocus回調無法觸發

解決措施

焦點事件默認情況下需要外接鍵盤的Tab鍵,或方向鍵觸發,點擊觸發焦點事件需要添加焦點控制屬性focusOnTouch。

參考鏈接

焦點控制

scroll里面套一個grid,如何禁用grid的滑動事件(API 9)

可以通過onScrollFrameBegin事件和scrollBy方法實現容器嵌套滾動。

參考鏈接

容器嵌套滾動樣例

如何實現一個組件不停地旋轉(API 9)

可以通過屬性動畫的方式實現。

列表目前無法鍵盤上下滑動,是否能力不支持(API 9)

解決措施

有以下兩種方案:

  1. 需要在列表子項中添加focusable(true)進行獲焦。

  2. 在每個item的外層嵌套一個可獲焦組件,例如Button。

鍵盤移動焦點對象按下enter,為什么不會觸發點擊事件(API 9)

組件的內置的點擊事件和開發者自定義的onClick點擊事件默認會和空格鍵綁定,并非與enter鍵綁定(UX規格)。

多層組件嵌套button,如何阻止事件傳遞(API 9)

可以通過將button組件綁定參數stopPropagation來控制冒泡傳遞。

使用router或Navigator實現頁面跳轉時,如何關閉頁面間轉場動效(API 9)

  1. 參考頁面間轉場示例在當前頁面和目標頁面中定義pageTransition方法。

  2. 將頁面入場組件PageTransitionEnter和頁面退場組件PageTransitionExit的動效參數duration都設置為0。

在容器組件嵌套的場景下,如何解決手勢拖拽事件出現錯亂的問題(API 9)

PanGesture用于觸發拖動手勢事件,滑動的最小距離distance默認為5vp時拖動手勢識別成功。可以將distance值設為1,使拖動更靈敏,避免造成事件錯亂。

參考鏈接

PanGesture

是否支持使用fontFamily屬性設置不同的字體(API 9)

默認字體’HarmonyOS Sans’,且當前只支持這種字體。

點擊輸入框時會拉起軟鍵盤,點擊button時軟鍵盤關閉要如何實現(API 9)

TextInput獲取焦點會彈出輸入法,失去焦點就會關閉軟鍵盤,使用focusControl控制焦點即可關閉軟鍵盤。

代碼示例

build() {Column() {TextInput()Button(`hide`).key('button').onClick(()=>{focusControl.requestFocus('button')})}
}

當父組件綁定了onTouch,其子組件Button綁定了onClick,如何做到點擊Button只響應Button的onClick,而不用響應父組件的onTouch(API 9)

可以在Button組件中綁定onTouch,并在onTouch中使用stopPropagation()阻止onTouch冒泡傳遞到父組件阻止冒泡傳遞。

代碼示例

build() {Row() {Button("點擊我").width(100).width(100).backgroundColor('#f00').onClick(()=>{console.log("Button onClick")}).onTouch((e) => {console.log("Button onTouch")e.stopPropagation()})}.onTouch(() => {console.log("Row onTouch")})
}

綁定菜單后無法使用右鍵觸發菜單(API 9)

解決措施

目前菜單僅支持點擊、長按觸發方式,沒有右鍵方式。

點擊文本輸入框,如何屏蔽系統默認鍵盤彈起行為(API 9)

設置TextInput組件的focusable屬性為false,此組件則不可獲焦,就不會拉起系統默認的鍵盤。

如何實現上下切換的頁面間跳轉動畫(API 9)

問題現象

頁面切換時如何實現上下切換動畫

解決措施

可以使用pageTransition函數來實現頁面轉場效果,通過PageTransitionEnter和PageTransitionExit指定頁面進入和退出的動畫效果,將其slide屬性設置為SlideEffect.Bottom,則頁面入場時從下邊劃入,出場時滑出到下邊,即可實現上下切換效果。

代碼示例

// Index.ets
@Entry
@Component
struct PageTransition1 {build() {Stack({alignContent: Alignment.Bottom}) {Navigator({ target: 'pages/Page1'}) {Image($r('app.media.ic_banner01')).width('100%').height(200) // 圖片存放在media文件夾下}}.height('100%').width('100%')}pageTransition() {PageTransitionEnter({ duration: 500, curve: Curve.Linear }).slide(SlideEffect.Bottom)PageTransitionExit({ duration: 500, curve: Curve.Ease }).slide(SlideEffect.Bottom)}
}
// Page1.ets
@Entry
@Component
struct PageTransition2 {build() {Stack({alignContent: Alignment.Bottom}) {Navigator({ target: 'pages/Index'}) {Image($r('app.media.ic_banner02')).width('100%').height(200) // 圖片存放在media文件夾下}}.height('100%').width('100%')}pageTransition() {PageTransitionEnter({ duration: 500, curve: Curve.Linear }).slide(SlideEffect.Bottom)PageTransitionExit({ duration: 500, curve: Curve.Ease }).slide(SlideEffect.Bottom)}
}

參考鏈接

頁面間轉場

自定義組件間如何實現從底部滑入滑出的效果(API 9)

問題現象

一個頁面底部默認顯示自定義組件A,點擊自定義組件A,則A消失,自定義組件B從底部出現;點擊自定義組件B,則組件B消失,A從底部出現。這個效果要如何實現?

解決措施

可以使用transition產生組件轉場動畫,其參數type用來設置組件變化場景,包括新增和刪除;參數translate用來設置轉場時的平移效果。注意transition需要配合animateTo才能生效,動效時長、曲線、延時跟隨animateTo中的配置。

代碼示例

@Entry
@Component
struct ComponentTransition {@State flag: boolean = true;build() {Stack({alignContent: Alignment.Bottom}) {if (this.flag) {ComponentChild1({ flag: $flag }).transition({ type: TransitionType.Insert,translate: { x: 0, y: 200 } })}if (!this.flag) {ComponentChild2({ flag: $flag }).transition({ type: TransitionType.Insert, translate: { x: 0, y: 200 } })}}.height('100%').width('100%')}
}@Component
struct ComponentChild1 {@Link flag: booleanbuild() {Column() {Image($r('app.media.ic_banner01')).width('100%').height(200).onClick(() => {animateTo({ duration: 1000 }, () => {this.flag = !this.flag;})})}}
}@Component
struct ComponentChild2 {@Link flag: booleanbuild() {Column() {Image($r('app.media.ic_banner02')).width('100%').height(200).onClick(() => {animateTo({ duration: 1000 }, () => {this.flag = !this.flag;})})}}
}

參考鏈接

出現/消失轉場

文件管理器短按不響應(API 10)

問題現象

短按文件夾圖標,如點擊時長在200-500ms松手會觸發文件管理器點擊不響應。

原因分析

拖拽手勢識別邏輯存在異常分支未處理,短按特定時間段松手會導致手勢識別器處于pending狀態,不再響應用戶輸入導致文件管理器出現卡死現象。

解決措施

長按文件圖標或者空白區域即可恢復。

僅供參考!!!

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

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

相關文章

Linux 監控USB硬盤插拔事件并自動掛載和卸載

定義udev規則來監控USB插拔事件。 一、在/etc/udev/rules.d目錄下隨意創建一個規則文件,例:99-usb-mount.rules KERNEL"sd[b-z]?",SUBSYSTEM"block",RUN"/usr/local/src/mountusb.sh %k $env{ACTION}"二、創建 /usr/lo…

基于arm64架構國產操作系統|Linux下的RTMP|RTSP低延時直播播放器開發探究

技術背景 2014年4月8日起,美國微軟公司停止了對Windows XP SP3操作系統提供服務支持,這引起了社會和廣大用戶的廣泛關注和對信息安全的擔憂。而2020年對Windows7服務支持的終止再一次推動了國產系統的發展。工信部對此表示,將繼續加大力度&a…

C++ 紅黑樹

目錄 1.紅黑樹的概念 2.紅黑樹的性質 3.紅黑樹節點的定義 4.紅黑樹的插入操作 5.數據測試 1.紅黑樹的概念 紅黑樹,是一種二叉搜索樹,但在每個結點上增加一個存儲位表示結點的顏色,可以是Red或Black。 通過對任何一條從根到葉子的路徑上各個…

C++基礎與深度解析 | 泛型算法 | bind | Lambda表達式

文章目錄 一、泛型算法1.泛型算法的分類2.迭代器分類 二、bind與lambda表達式1.bind2.lambda表達式 三、泛型算法的改進--ranges(c20) 一、泛型算法 C中的泛型算法是標準模板庫(STL)的一部分(這里重點討論 C 標準庫中定義的算法,而…

【vue-cli搭建vue項目的過程2.x】

vue-cli搭建vue項目 vue-cli搭建vue項目安裝node安裝vue-cli腳手架并創建項目安裝 Ant Design Vue或element-ui(筆者使用Ant-design-vue組件,并全局引入)開發安裝三方庫包1、Package.json文件---引入如下package.json文件執行npm i或npm install命令即可下載如下依賴…

數據結構~~鏈式二叉樹

目錄 一、基本概念 鏈式存儲概念 二、鏈式二叉樹的結構 鏈式二叉樹結構 構建鏈式二叉樹 二叉樹的遍歷 二叉樹節點和高度等 二叉樹銷毀 三、鏈式二叉樹的練習 相同的樹 對稱二叉樹 另外一顆子樹 二叉樹前序遍歷 二叉樹遍歷 四、完整代碼 Tree.h Tree.c 五、總結 一…

Linux服務升級:Predixy 升級代理 Redis-cluster 集群

目錄 一、實驗 1.環境 2. 啟動Redis服務 3.Predixy 升級代理 Redis-cluster 集群 二、問題 1. Predixy進行set操作報錯 2.如何創建腳本啟動predixy 3.Redis代理對比 一、實驗 1.環境 (1)主機 表1 主機 系統版本節點軟件IP備注CentOS7.9Redis…

Springboot開發 -- Postman 調試類型詳解

引言 在 Spring Boot 應用開發過程中,接口測試是必不可少的一環。Postman 作為一款強大的 API 開發和測試工具,可以幫助開發者輕松構建、測試和管理 HTTP 請求。本文將為大家介紹如何在 Spring Boot 開發中使用 Postman 進行接口測試。 一、準備工作 安…

C/C++|malloc分配內存詳解

看本節前,希望讀者有linux內存分布的基本概念,可以閱讀這篇文章: 進程虛擬地址空間和函數調用棧 在本節中希望讀者可以一口氣閱讀完所有內容。 本博客內容全部來自小林coding:malloc 是如何分配內存的? 這里僅為筆記記…

Python-圖片旋轉360,保存對應圖片

#Author :susocool #Creattime:2024/5/25 #FileName:turn360 #Description: 會旋轉指定的圖像文件360度,并將每個旋轉后的圖像保存到指定目錄,文件名以旋轉角度命名。 from PIL import Imagedef rotate_and_save(image_path, output_dir) :# …

Linux/Ubuntu 中安裝 ZeroTier,實現內網穿透,2分鐘搞定

相信很多人都有遠程連接家中設備的需求,如遠程連接家中的NAS、Windows等服務,所以會涉及到一個內網穿透工具的使用,如果沒有公網IP的情況下,推薦大家使用ZeroTier,這是一款強大的內網穿透工具。 mac和windows版的操作…

Nginx-狂神說

Nginx概述 公司產品出現瓶頸? 我們公司項目剛剛上線的時候,并發量小,用戶使用的少,所以在低并發的情況下,一個jar包啟動應用就夠了,然后內部tomcat返回內容給用戶。 但是慢慢的,使用我們平臺…

HTTP 各版本差異

http1.0 它的特點是每次請球和響應完畢后都會銷毀TCP 連接。同時規走前一個響應完成后才發送下一個請求。這樣做有兩個問題: 無法復用連接了。 每次請求都要創建新的TCP連接,完成三次握手和四次揮手。網絡利用率低 隊頭阻塞 如果前一個請求被某種原因阻…

K8S認證|CKA題庫+答案| 13. sidecar 代理容器日志

目錄 13、使用 sidecar 代理容器日志 CKA v1.29.0模擬系統免費下載試用: 題目: 開始操作: 1)、切換集群 2)、生成yaml文件 3)、官網找模板 4)、編輯yaml文件 5)、應用yaml…

車載電子電器架構 —— 智能座艙技術

車載電子電器架構 —— 智能座艙技術 我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 屏蔽力是信息過載時代一個人的特殊競爭力,任何消耗你的…

qt multiple definition of 報錯解決

qt編譯報了很多錯, multiple definition of xxx 原來一維設計文件ui 的問題 后來發現是pro中頭文件和cpp文件重寫了,導致重復編譯報的錯 解決方法:把重復的頭文件和cpp文件刪了就可以了。

如何解決0.1+0.2!=0.3的問題

var x 0.1; var y 0.2; var z x y // z 的結果為 0.30000000000000004 if (z 0.3) // 返回 false 可以用整數的乘除法來解決 var z (x * 10 y * 10) / 10; // z 的結果為 0.3

GEO數據挖掘-GEO背景知識+表達芯片分析思路

From生物技能樹 GEO數據挖掘第一節 (pipeline) 文章目錄 1.圖表分析2.GEO背景介紹及分析思路3.代碼分析流程4.復雜數據分析理論知識1.數據從哪里來2.有什么類型的數據可挖掘3.如何篩選基因(分析方法)在這里插入圖片描述 圖表介紹1…

Jenkins + github 自動化部署配置

1 Jenkins安裝 AWS EC2安裝Jenkins:AWS EC2 JDK11 Jenkins-CSDN博客 AWS EC2上Docker安裝Jenkins:https://blog.csdn.net/hhujjj2005/article/details/139078402 2 登錄jenkins http://192.168.1.128:8080/ $ docker exec -it d1851d9e3386 /bin/ba…

Multi-objective reinforcement learning approach for trip recommendation

Multi-objective reinforcement learning approach for trip recommendation A B S T R A C T 行程推薦是一項智能服務,為游客在陌生的城市提供個性化的行程規劃。 它旨在構建一系列有序的 POI,在時間和空間限制下最大化用戶的旅行體驗。 將候選 POI 添…