鴻蒙開發-一多開發之媒體查詢功能

在HarmonyOS中,使用ArkTS語法實現響應式布局的媒體查詢是一個強大的功能,它允許開發者根據不同的設備特征(如屏幕尺寸、屏幕方向等)動態地調整UI布局和樣式。以下是一個使用媒體查詢實現響應式布局的實例:

1. 導入必要的模塊

首先,需要導入媒體查詢相關的模塊。在ArkTS中,這通常是通過import語句來完成的。

typescript復制代碼import { mediaquery } from '@kit.ArkUI';

2. 創建媒體查詢監聽器

接下來,需要創建媒體查詢監聽器來監聽屏幕尺寸的變化。這可以通過mediaquery.matchMediaSync方法來實現,該方法接受一個條件字符串作為參數,并返回一個MediaQueryListener對象。

@Entry
@Component
struct TestPage {listenerXS: mediaquery.MediaQueryListener | null = null;listenerSM: mediaquery.MediaQueryListener | null = null;aboutToAppear(): void {// 創建監聽器,監聽不同的屏幕尺寸范圍this.listenerXS = mediaquery.matchMediaSync('(0vp <= width < 320vp)');this.listenerSM = mediaquery.matchMediaSync('(320vp <= width < 600vp)');// 注冊監聽器,當屏幕尺寸變化時執行相應的邏輯this.listenerXS.on('change', (res: mediaquery.MediaQueryResult) => {console.log('changeRes:', JSON.stringify(res));// 執行小屏幕下的布局邏輯});this.listenerSM.on('change', (res: mediaquery.MediaQueryResult) => {console.log('changeRes:', JSON.stringify(res));// 執行中等屏幕下的布局邏輯});}// 移除監聽器,避免性能浪費aboutToDisappear(): void {this.listenerXS?.off('change');this.listenerSM?.off('change');}build() {// 構建UI結構Column() {// 在這里根據屏幕尺寸動態調整UI布局}.height('100%')}
}

3. 在UI中使用媒體查詢結果

build方法中,可以根據媒體查詢的結果動態地調整UI布局。例如,可以使用條件渲染來根據不同的屏幕尺寸顯示不同的組件或樣式。

build() {return Column() {if (/* 條件:判斷當前屏幕尺寸是否在小屏幕范圍內 */) {// 小屏幕下的布局Text('小屏幕下的內容').fontSize(24).fontWeight(FontWeight.Bold);} else if (/* 條件:判斷當前屏幕尺寸是否在中等屏幕范圍內 */) {// 中等屏幕下的布局Text('中等屏幕下的內容').fontSize(32).fontWeight(FontWeight.Normal);} else {// 大屏幕下的布局Text('大屏幕下的內容').fontSize(40).fontWeight(FontWeight.Light);}}.height('100%');
}

注意:在實際代碼中,需要根據媒體查詢監聽器的結果來設置上述條件。例如,可以通過狀態變量來記錄當前屏幕尺寸所處的范圍,并在build方法中使用這些狀態變量來進行條件渲染。

4. 注意事項

  • 媒體查詢的條件字符串使用的是vp(視口寬度單位)作為單位,這是因為vp單位能夠更好地適應不同屏幕尺寸的設備。
  • 在使用媒體查詢時,需要注意性能問題。過多的媒體查詢監聽器可能會導致性能下降,因此建議在不需要時及時移除監聽器。
  • 響應式布局不僅僅依賴于媒體查詢,還可以結合其他布局方式(如Grid、Flex等)來實現更復雜的布局效果。

通過以上步驟,就可以在HarmonyOS中使用ArkTS語法實現響應式布局的媒體查詢功能了。
在這里插入圖片描述

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

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

相關文章

Docker運行hello-world鏡像失敗或超時:Unable to find image ‘hello-world:latest‘ locally Trying to pull reposi

Docker運行hello-world鏡像失敗或超時&#xff0c;報錯&#xff1a;Unable to find image ‘hello-world:latest’ locally Trying to pull repository docker.io/library/hello-world … /usr/bin/docker-current: missing signature key. See ‘/usr/bin/docker-current run …

MySQL連接較慢原因分析及解決措施

文章目錄 整體說明一、問題現象二、問題分析2.1、DNS反向解析問題2.2、網絡問題2.3、SSL/TLS協商問題2.4、自動補全的延遲 三、問題解決 摘要&#xff1a; MySQL連接較慢原因分析及解決措施 關鍵詞&#xff1a; MySQL、連接緩慢、客戶端、參數設置 整體說明 在使用MySQL的時候…

doris:安全概覽

oris 提供以下機制管理數據安全&#xff1a; 身份認證&#xff1a;Doris 支持用戶名/密碼與 LDAP 認證方式。 內置認證&#xff1a;Doris 內置了用戶名/密碼的認證方式&#xff0c;可以自定義密碼策略&#xff1b; LDAP 認證&#xff1a;Doris 可以通過 LDAP 服務集中管理用戶…

C++之文字修仙小游戲

1 效果 1.1 截圖 游戲運行&#xff1a; 存檔&#xff1a; 1.2 游玩警告 注意&#xff01;不要修改裝備概率&#xff0c;裝備的概率都是湊好的數字。如果想要速升&#xff0c;修改靈石數量 2 代碼 2.1 代碼大綱 1. 游戲框架與初始化 控制臺操作&#xff1a;通過 gotoxy() …

Docker安裝部署RabbitMQ

Docker安裝部署RabbitMQ 本文介紹了如何在Linux&#xff08;CentOS 7&#xff09;系統環境下的Docker上安裝部署RabbitMQ的詳細過程。 目錄 Docker安裝部署RabbitMQ一、環境準備1.Linux環境2.Docker3.停止并移除現有的 RabbitMQ 鏡像和容器 二、安裝部署RabbitMQ1.拉取 RabbitM…

【MyBatis Plus 邏輯刪除詳解】

文章目錄 MyBatis Plus 邏輯刪除詳解前言什么是邏輯刪除&#xff1f;MyBatis Plus 中的邏輯刪除1. 添加邏輯刪除字段2. 實體類的配置3. 配置 MyBatis Plus4. 使用邏輯刪除5. 查詢邏輯刪除的記錄 MyBatis Plus 邏輯刪除詳解 前言 MyBatis Plus 是一個強大的持久化框架&#xf…

線性代數(1)用 excel 計算雞兔同籠

線性代數excel計算雞兔同籠 案例&#xff1a;雞兔同籠問題的三種解法&#xff08;遞進式教學&#xff09;一、問題描述二、方程式解法&#xff08;基礎版&#xff09;步驟解析 三、線性代數解法&#xff08;進階版&#xff09;1. 方程組轉化為矩陣形式2. 矩陣求解&#xff08;逆…

Flask中使用WTForms處理表單驗證

在 Flask 中&#xff0c;WTForms 是一個用于 處理表單驗證 的庫&#xff0c;可以與 Flask 結合&#xff0c;提供表單驗證、數據清理、錯誤提示等功能。 1. 安裝 Flask-WTF 首先安裝 Flask-WTF&#xff1a; pip install Flask-WTFFlask-WTF 是 WTForms 的 Flask 擴展&#xff…

24.策略模式實現日志

日志的介紹 計算機中的日志是記錄系統和軟件運行中發送事件的文件&#xff0c;主要作用是監控運行狀態、記錄異常信息&#xff0c;幫助快速定位問題并支持程序員進行問題修復。它是系統維護、故障排查和安全管理的重要工具。 日志格式以下幾個指標是必須得有的&#xff1a; ?…

【網絡】簡單的 Web 服務器架構解析,包含多個服務和反向代理的配置,及非反向代理配置

這張圖片描述了一個簡單的 Web 服務器架構&#xff0c;包含多個服務和反向代理的配置。以下是對每個部分的詳細解釋&#xff0c;幫助你理解其中的技術內容&#xff1a; 1. Web Server: ifn666.com 這是你的主域名&#xff08;ifn666.com&#xff09;&#xff0c;所有服務都通過…

???????大語言模型安全風險分析及相關解決方案

大語言模型的安全風險可以從多個維度進行分類。 從輸入輸出的角度來看,存在提示注入、不安全輸出處理、惡意內容生成和幻覺錯誤等風險; 從數據層面來看,訓練數據中毒、敏感信息泄露和模型反演攻擊是主要威脅; 模型自身則面臨拒絕服務和盜竊的風險; 供應鏈和插件的不安全引…

貪心算法——c#

貪心算法通俗解釋 貪心算法是一種"每一步都選擇當前最優解"的算法策略。它不關心全局是否最優&#xff0c;而是通過局部最優的累積來逼近最終解。優點是簡單高效&#xff0c;缺點是可能無法得到全局最優解。 一句話秒懂 自動售貨機找零錢&#xff1a;用最少數量的…

STM32 - 在機器人領域,LL庫相比HAL優勢明顯

在機器人控制器、電機控制器等領域的開發&#xff0c;需要高實時性、精細化控制或者對代碼執行效率、占用空間有較高要求。所以&#xff0c;大家常用的HAL庫明顯不符合要求。再加上&#xff0c;我們學習一門技術&#xff0c;一定要學會掌握底層的原理。MCU開發的底層就是寄存器…

【計算機網絡】2物理層

物理層任務:實現相鄰節點之間比特(或)的傳輸 1.通信基礎 1.1.基本概念 1.1.1.信源,信宿,信道,數據,信號 數據通信系統主要劃分為信源、信道、信宿三部分。 信源:產生和發送數據的源頭。 信宿:接收數據的終點。 信道:信號的傳輸介質。 數據和信號都有模擬或數字…

deepseek GRPO算法保姆級講解(數學原理+源碼解析+案例實戰)

文章目錄 什么是GRPO群組形成(Group Formation):讓大模型創建多種解決方案偏好學習(Preference Learning)&#xff1a;讓大模型理解何為好的解答組內相對優勢 優化(optimization): 讓大模型從經驗中學習(learning from experience)目標函數 GRPO算法的偽碼表示GRPO算法的局限與…

使用 WebP 優化 GPU 紋理占用

WebP 格式相比 JPEG / PNG 文件更小&#xff0c;可以 減少 GPU 紋理內存占用&#xff0c;提高 WebGL / Three.js / 3D 渲染 的性能。 &#x1f539; 為什么 WebP 能減少 GPU 內存占用&#xff1f; 文件更小 → WebP 比 JPG/PNG 壓縮率更高&#xff0c;減少 紋理上傳 帶寬&…

Google Cloud Run 如何實現無服務器(Serverless)部署?

DDoS&#xff08;分布式拒絕服務&#xff09;攻擊是黑客常用的一種手段&#xff0c;通過大量惡意流量沖擊服務器&#xff0c;導致網站無法訪問。針對這種威脅&#xff0c;Cloudflare提供了一整套防護措施&#xff0c;包括流量過濾、速率限制、防火墻規則等&#xff0c;使網站能…

QuickAPI 和 DBAPI 誰更香?SQL生成API工具的硬核對比(一)

最近低代碼開發火得不行&#xff0c;尤其是能把數據庫秒變API的工具&#xff0c;簡直是開發者的救星。今天咱就聊聊兩款國內玩家&#xff1a;QuickAPI&#xff08;麥聰軟件搞出來的低代碼神器&#xff09;和 DBAPI&#xff08;開源社區的硬核作品&#xff09;。這兩貨都能靠SQL…

BigEvent項目后端學習筆記(一)用戶管理模塊 | 注冊登錄與用戶信息全流程解析(含優化)

&#x1f4d6; 模塊概述 用戶管理模塊是系統的核心基礎模塊&#xff0c;包含 注冊、登錄、用戶信息維護 等功能。本模塊涉及 JWT Token認證、密碼加密存儲、文件上傳 等關鍵技術點&#xff0c;是理解前后端分離架構中安全與數據交互的典型實踐。本篇對于原項目進行了代碼優化&…

c#:使用串口通訊實現數據的發送和接收

串口通訊&#xff08;Serial Communication&#xff09;是一種常見的硬件設備與計算機之間的數據傳輸方式&#xff0c;廣泛應用于工業控制、嵌入式系統、傳感器數據采集等領域。本文將詳細介紹如何使用C#實現基于串口通訊的數據發送和接收&#xff0c;并結合代碼示例解析其實現…