【HarmonyOS Next】鴻蒙監聽手機按鍵

【HarmonyOS Next】鴻蒙監聽手機按鍵

一、前言

應用開發中我們會遇到監聽用戶實體按鍵,或者擴展按鍵的需求。亦或者是在某些場景下,禁止用戶按下某些按鍵的業務需求。

這兩種需求,鴻蒙都提供了對應的監聽事件進行處理。
onKeyEvent 默認的按鈕監聽事件

onKeyPreIme 這是優先級最高的監聽回調,別上面多了一個return開關,用于告訴系統監聽事件是否再向下傳遞。
在這里插入圖片描述
窗口是第一級接收按鈕事件的實體。后續會傳遞給后三級。

二、解決方案參考

我們以音量實體按鍵舉例,
通過綁定onKeyEvent按鍵監聽來獲取按鍵事件的回調。需要注意的是,綁定了按鍵事件需要控件獲得焦點時,用戶去操作按鍵才會有監聽回調。

		// 給控件添加默認聚焦.defaultFocus(true)// 給Button設置onKeyEvent事件.onKeyEvent((event?: KeyEvent) => {})

使用onKeyPreIme屏蔽音量使用下鍵。

import { KeyCode } from '@kit.InputKit';

struct PreImeEventExample {build() {Column() {Search({placeholder: "Search..."}).width("80%").height("40vp").border({ radius:"20vp" }).onKeyPreIme((event:KeyEvent) => {// 屏蔽音量使用下鍵if (event.keyCode == KeyCode.KEYCODE_VOLUME_DOWN) {return true;}return false;})}}
}

三、DEMO源碼示例:

import { KeyCode } from '@kit.InputKit'

struct KeyClickTestPage { text: string = '' eventType: string = ''build() {Column() {Button('KeyEvent').defaultFocus(true)// 給Button設置onKeyEvent事件.onKeyEvent((event?: KeyEvent) => {if(event){if (event.type === KeyType.Down) {this.eventType = 'Down' // 按鈕 按下}if (event.type === KeyType.Up) {this.eventType = 'Up'// 按鈕 抬起}// KEYCODE_VOLUME_UP	16	音量增加鍵// KEYCODE_VOLUME_DOWN	17	音量減小鍵// KEYCODE_POWER	18	電源鍵this.text = 'onKeyEvent KeyType:' + this.eventType + '\nkeyCode:' + event.keyCode + '\nkeyText:' + event.keyText + '\nintentionCode:' + event.intentionCode}}).onKeyPreIme((event:KeyEvent) => {// 屏蔽音量使用下鍵if (event.keyCode == KeyCode.KEYCODE_VOLUME_DOWN) {return true;}this.text = 'onKeyPreIme KeyType:' + this.eventType + '\nkeyCode:' + event.keyCode + '\nkeyText:' + event.keyText + '\nintentionCode:' + event.intentionCodereturn false;})Text(this.text).padding(15)}.height(300).width('100%').padding(35)}
}

擴展資料

點擊跳轉參考按鍵Code列表:
在這里插入圖片描述

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

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

相關文章

IC設計版圖中GDS2文件格式詳解

版圖中GDS2文件格式詳解 目錄 什么是GDS2文件?GDS2文件的歷史與發展GDS2文件的結構解析GDS2文件的核心元素GDS2 vs. OASIS: 核心差異如何生成與查看GDS2文件?GDS2文件的局限性應用場景總結 什么是GDS2文件? GDS2(Graphic Data …

KMP算法:字符串匹配的智慧跳躍

文章目錄 起因:暴力法的致命缺陷暴力搜索的局限性 KMP核心思想:避免重復理解前綴表(PMT)不匹配時的回退機制代碼:高效字符串匹配補充:next表和PMT表 暴力法 vs KMP總結:KMP 是如何改變游戲規則的…

上位機知識篇---setuptools

文章目錄 前言簡介一、核心功能1.依賴管理自動安裝依賴版本約束額外依賴組命令行工具插件系統 2.開發模式安裝3.資源文件管理4.Egg 分發(已逐漸被 Wheel 取代)5.命名空間包 二、基礎用法1. 項目結構示例2. 配置文件 setup.cfg3. setup.py 最小化示例&…

藍橋杯學習大綱

(致酷德與熱愛算法、編程的小伙伴們) 在查閱了相當多的資料后,發現沒有那篇博客、文章很符合我們備戰藍橋杯的學習路徑。所以,干脆自己整理一篇,歡迎大家補充! 一、藍橋必備高頻考點 我們以此為重點學習…

Go 錯誤處理與調試:面向對象的入門教程

Go 錯誤處理與調試:面向對象的入門教程 Go 語言因其簡潔、高效和易于并發編程的特性,逐漸成為后端開發的主流語言之一。錯誤處理是任何編程語言中非常重要的一部分,尤其是在 Go 語言中,Go 提供了一種不同于傳統異常處理機制的錯誤…

Linux探秘坊-------4.進度條小程序

1.緩沖區 #include <stdio.h> int main() {printf("hello bite!");sleep(2);return 0; }執行此代碼后&#xff0c;會 先停頓兩秒&#xff0c;再打印出hello bite&#xff0c;但是明明打印在sleep前面&#xff0c;為什么會后打印呢&#xff1f; 因為&#xff…

基于Python的Diango旅游數據分析推薦系統設計與實現+畢業論文(15000字)

基于Python的Diango旅游數據分析推薦系系統設計與實現畢業論文指導搭建視頻&#xff0c;帶爬蟲 配套論文1w5字 可定制到某個省份&#xff0c;加40 基于用戶的協同過濾算法 有后臺管理 2w多數據集 可配套指導搭建視頻&#xff0c;加20 旅游數據分析推薦系統采用了Python語…

Scrapy:DownloaderAwarePriorityQueue隊列設計詳解

DownloaderAwarePriorityQueue 學習筆記 1. 簡介 DownloaderAwarePriorityQueue 是 Scrapy 中一個高級的優先級隊列實現&#xff0c;它不僅考慮請求的優先級&#xff0c;還會考慮下載器的負載情況。這個隊列為每個域名&#xff08;slot&#xff09;維護獨立的優先級隊列&#…

dify-AI 私有部署可修改前端頁面

dify文檔 官方文檔&#xff1a;歡迎使用 Dify | Dify 源碼&#xff1a;https://github.com/langgenius/dify.git 安裝docker 官網&#xff1a;https://www.docker.com/ 部署服務到docker cd dify cd docker cp .env.example .env docker compose up -d查看效果 http://localh…

PHP基礎部分

但凡是和輸入、寫入相關的一定要預防別人植入惡意代碼! HTML部分 語句格式 <br> <hr> 分割符 <p>插入一行 按住shift 輸入! 然后按回車可快速輸入html代碼(VsCode需要先安裝live server插件) html:<h1>標題 數字越大越往后</h1> <p…

【Elasticsearch】Retrieve inner hits獲取嵌套查詢的具體的嵌套文檔來源,以及父子文檔的來源

Retrieve inner hits 是 Elasticsearch 中的一個功能&#xff0c;用于在嵌套查詢或父子查詢中&#xff0c;返回導致主文檔匹配的具體嵌套對象或子/父文檔的詳細信息&#xff0c;幫助用戶更直觀地理解查詢結果的來源。 在 Elasticsearch 中&#xff0c;Retrieve inner hits是一…

SpringCloud面試題----eureka和zookeeper都可以提供服務注冊與發現的功能,請說說兩個的區別

dEureka 和 Zookeeper 都可以提供服務注冊與發現的功能,它們的區別主要體現在以下幾個方面: 設計理念 Eureka:是基于 RESTful 風格設計的,強調簡單、輕量級,旨在為微服務架構提供一種易于使用的服務發現解決方案,注重服務的可用性和靈活性。Zookeeper:最初是為分布式協…

數據庫提權總結

Mysql提權 UDF提權是利用MYSQL的自定義函數功能&#xff0c;將MYSQL賬號轉化為系統system權限 前提&#xff1a; 1.UDF提權條件 &#xff08;1&#xff09;Mysql版本大于5.1版本udf.dll文件必須放置于MYSQL安裝目錄下的lib\plugin文件夾下。 &#xff08;2&#xff09;Mysql…

“深入淺出”系列之QT:(10)Qt接入Deepseek

項目配置&#xff1a; 在.pro文件中添加網絡模塊&#xff1a; QT core network API配置&#xff1a; 將apiUrl替換為實際的DeepSeek API端點 將apiKey替換為你的有效API密鑰 根據API文檔調整請求參數&#xff08;模型名稱、溫度值等&#xff09; 功能說明&#xff1a; 使…

【Linux探索學習】第二十七彈——信號(上):Linux 信號基礎詳解

Linux學習筆記&#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 前面我們已經將進程通信部分講完了&#xff0c;現在我們來講一個進程部分也非常重要的知識點——信號&#xff0c;信號也是進程間通信的一…

nginx負載均衡, 解決iphash不均衡的問題之consistent

原因分析 客戶端IP分布不均&#xff1a;部分IP段請求集中&#xff0c;導致哈希到同一后端。 服務器數量變動&#xff1a;增刪節點時&#xff0c;傳統ip_hash未使用一致性哈希&#xff0c;導致分布重置。 哈希鍵范圍過小&#xff1a;例如僅使用IPv4前24位&#xff0c;不同IP可…

[C++]多態詳解

目錄 一、多態的概念 二、靜態的多態 三、動態的多態 3.1多態的定義 3.2虛函數 四、虛函數的重寫&#xff08;覆蓋&#xff09; 4.1虛函數 4.2三同 4.3兩種特殊情況 &#xff08;1&#xff09;協變 &#xff08;2&#xff09;析構函數的重寫 五、C11中的final和over…

WEB安全--SQL注入--PDO與繞過

一、PDO介紹&#xff1a; 1.1、原理&#xff1a; PDO支持使用預處理語句&#xff08;Prepared Statements&#xff09;&#xff0c;這可以有效防止SQL注入攻擊。預處理語句將SQL語句與數據分開處理&#xff0c;使得用戶輸入的數據始終作為參數傳遞給數據庫&#xff0c;而不會直…

ES12 weakRefs的用法和使用場景

ES12 (ECMAScript 2021) 特性總結&#xff1a;WeakRef 1. WeakRef 概述 描述 WeakRef 是 ES12 引入的一個新特性&#xff0c;用于創建對對象的弱引用。弱引用不會阻止垃圾回收器回收對象&#xff0c;即使該對象仍然被弱引用持有。WeakRef 通常與 FinalizationRegistry 結合使…

50頁精品PPT | 某大數據資產平臺建設項目啟動會材料

該PPT主要介紹了某集團大數據資產平臺建設項目的啟動會材料&#xff0c;圍繞數據作為數字經濟時代核心生產要素的背景&#xff0c;結合國家戰略和集團數字化轉型需求&#xff0c;分析了當前數據資源整合不足、孤島現象嚴重、質量管控薄弱及共享機制不完善等問題&#xff0c;提出…