鴻蒙OS開發:【一次開發,多端部署】(多設備自適應能力)簡單介紹

多設備自適應能力

介紹

本示例是《一次開發,多端部署》的配套示例代碼,展示了[頁面開發的一多能力],包括自適應布局、響應式布局、典型布局場景以及資源文件使用。

名稱簡介 開發前請熟悉鴻蒙開發指導文檔:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md點擊或者復制轉到。
自適應布局當外部容器大小發生變化時,元素可以根據相對關系自動變化以適應外部容器變化的布局能力。
響應式布局當外部容器大小發生變化時,元素可以根據斷點或特定的媒體特征(如屏幕方向、窗口寬高等)自動變化以適應外部容器變化的布局能力。
典型布局場景應用開發中的典型場景,包括運行橫幅、網格、側邊欄等。
資源文件使用根據當前的設備特征(如設備類型、屏幕密度等)或應用場景(如語言、國家、地區等),從resources目錄下不同的資源限定詞目錄中獲取相應的資源值。

說明:

  • 自適應布局能力僅可以保證在外部容器大小在一定范圍內變化時,容器內的元素布局合理。如果外部尺寸發生較大變化,需要借助響應式布局能力進一步適配(詳見《一次開發,多端部署》中關于斷點的介紹)。

  • 為簡化代碼、突出重點及方便讀者理解,本示例中的自適應布局部分未做多設備適配。此部分建議在DevEco自帶的MatePadPro預覽器中運行及查看效果,以獲得最佳的體驗。

  • 響應式布局、典型布局場景、資源文件使用均做了多設備適配,推薦參考如下方式查看代碼的運行效果:

    • 將應用安裝到不同類型的設備,查看運行效果。
    • 將應用安裝到開發板等設備中,開啟設備的自由窗口能力,查看不同窗口尺寸下的運行效果。
    • 通過創建不同屏幕尺寸多個預覽器,或者通過拖拽的方式改變預覽器的屏幕尺寸,查看不同情況下的運行效果。

效果預覽:

image.png

使用說明

  1. 啟動應用,首頁展示了自適應布局、響應式布局、典型布局場景和資源文件使用四個按鈕。
  2. 點擊"自適應布局"進入新頁面,分別展示拉伸能力、縮放能力、隱藏能力、折行能力、均分能力、占比能力和延伸能力共7種自適應布局能力。
  3. 點擊"響應式布局"進入新頁面,分別展示斷點、媒體查詢和柵格布局3種響應式布局能力。
  4. 點擊"典型布局場景"進入新頁面,展示了如何通過自適應布局能力和響應式布局能力,實現應用開發中的典型場景。
  5. 點擊"資源文件使用"進入新頁面,展示字符串和圖片資源的使用。

工程目錄

entry/src/main/ets/
|---Application
|   |---AbilityStage.ts
|---common
|   |---BreakpointSystem.ets                    
|   |---DirectoryList.ets
|   |---GetValueOnBreakpoint.ets
|---MainAbility
|   |---MainAbility.ts
|---model
|   |---Logger.ts                                       // 日志工具
|---pages
|   |---Index.ets                                       // 首頁
|   |---atomicLayoutCapability                          
|   |   |---equipartitionCapability
|   |   |   |---EquipartitionCapability.ets             // 均分能力
|   |   |---extensionCapability
|   |   |   |---ExtensionCapability1.ets                // 延伸能力1
|   |   |   |---ExtensionCapability2.ets                // 延伸能力2
|   |   |---flexibleCapability
|   |   |   |---FlexibleCapability1.ets                 // 拉伸能力2
|   |   |   |---FlexibleCapability2.ets                 // 拉伸能力2
|   |   |---hiddenCapability
|   |   |   |---HiddenCapability.ets                    // 隱藏能力
|   |   |---proportionCapability
|   |   |   |---ProportionCapability.ets                // 占比能力
|   |   |---scaleCapability
|   |   |   |---ScaleCapability.ets                     // 縮放能力
|   |   |---wrapCapability
|   |   |   |---WrapCapability.ets                      // 拆行能力
|   |   |---AtomicLayoutCapabilityIndex.ets             // 自適應布局
|   |---gridRow                       
|   |   |---gridRow
|   |   |   |---GridRowSample1.ets                      // 柵格斷點1
|   |   |   |---GridRowSample2.ets                      // 柵格斷點2
|   |   |   |---GridRowSample3.ets                      // 柵格columns和gutter
|   |   |   |---GridRowSample4.ets                      // 柵格margin
|   |   |   |---GridRowSample5.ets                      // 柵格span
|   |   |   |---GridRowSample6.ets                      // 柵格offset
|   |   |   |---GridRowSample7.ets                      // 柵格order
|   |   |   |---GridRowSample8.ets                      // 柵格span/offset/order繼承性
|   |   |   |---GridRowSample9.ets                      // 柵格嵌套
|   |   |   |---GridRowSample10.ets                     // 柵格對齊
|   |   |---GridRowLayoutIndex.ets                      // 柵格布局
|   |---interactionNormCapability
|   |   |---InteractionNormCapability.ets                // 交互歸一能力
|   |---resourceQualifier
|   |   |---ResourceQualifier.ets                        // 資源文件使用
|   |---responsiveLayout
|   |   |---ResponsiveLayoutIndex.ets                    
|   |   |---breakpoint
|   |   |   |---BreakpointSample.ets                     // 斷點
|   |   |---mediaQuery
|   |   |   |---MediaQuerySample.ets                     // 媒體查詢
|   |---typicalScene
|   |   |---banner
|   |   |   |---BannerSample.ets                         // 廣告欄
|   |   |---bigImage
|   |   |   |---BigImageSample.ets                       // 大圖瀏覽
|   |   |---diversion
|   |   |   |---DiversionSample.ets                      // 挪移布局
|   |   |---header
|   |   |   |---HeaderSample.ets                         // 頂部布局
|   |   |---indentation
|   |   |   |---IndentationSample.ets                    // 縮進布局
|   |   |---multiLaneList
|   |   |   |---MultiLaneListSample.ets                  // 多列列表
|   |   |---multiScene                               
|   |   |   |---data	
|   |   |   |   |---apliications	
|   |   |   |   |   |---Apliications.ets		
|   |   |   |   |---home
|   |   |   |   |   |---Home.ets					
|   |   |   |---pages    
|   |   |   |   |---apliications
|   |   |   |   |   |---Apliications.ets	
|   |   |   |   |---home	
|   |   |   |   |   |---Home.ets
|   |   |   |   |---player	
|   |   |   |   |   |---Player.ets
|   |   |   |   |---MultiScene.ets	                     // 一多典型場景
|   |   |---operationEntries
|   |   |   |---OperationEntriesSample.ets               // 操作入口
|   |   |---repeat
|   |   |   |---RepeatSample.ets                         // 重復布局
|   |   |---responsiveGrid
|   |   |   |---ResponsiveGridSample.ets                 // 網格視圖
|   |   |---sidebar
|   |   |   |---SidebarSample.ets                        // 側邊欄
|   |   |---tabs
|   |   |   |---TabsSample.ets                           // 頁簽布局
|   |   |---TypicalSceneIndex.ets                        // 典型布局場景`HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`

搜狗高速瀏覽器截圖20240326151450.png

具體實現

  • 該示例使用了路由跳轉接口,實現了各個不同布局之間的頁面跳轉,通過MediaQueryListener方法查詢媒體,matchMediaSync方法設置媒體查詢的查詢條件。
  • 源碼:[BreakpointSystem.ets],[DirectoryList.ets]
  • 接口參考:[@ohos.router],[@ohos.mediaquery]

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

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

相關文章

數據可視化技術頭歌測試合集

努力是為了不平庸~ 學習的最大理由是想擺脫平庸,早一天就多一份人生的精彩;遲一天就多一天平庸的困擾 目錄 時間趨勢可視化-柱形圖 第1關:“大胃王”比賽數據柱形圖繪制——繪制柱形圖的基本步驟 任務描述 相關知識 觀察和處理數據 繪…

Linux中gcc/g++的基本使用

目錄 gcc/g的使用gcc/g是如何生成可執行文件的預處理編譯匯編鏈接 庫.o文件是如何與庫鏈接的? debug版本和release版本 gcc/g的使用 在windows中,我們在VS中編寫好了代碼之后就可以直接在VS中對源碼進行編譯等操作后運行 而在Linux下,我們可…

LeetCode 279 —— 完全平方數

閱讀目錄 1. 題目2. 解題思路3. 代碼實現 1. 題目 2. 解題思路 此圖利用動態規劃進行求解,首先,我們求出小于 n n n 的所有完全平方數,存放在數組 squareNums 中。 定義 dp[n] 為和為 n n n 的完全平方數的最小數量,那么有狀態…

vue 展示svg矢量圖可縮放拖動

使用插件&#xff1a;svg-pan-zoom <template> <!-- svg圖--><div id"svgContainer"></div> </template><script> import svgPanZoom from svg-pan-zoom import svgFile from ../datav/img/220kVscb.svg // 路徑根據實際情況調…

MySQL存儲過程實現累加運算 1+2+…+n 等于多少?

MySQL創建存儲過程&#xff0c;實現累加運算&#xff0c;計算 12…n 等于多少。具體的代碼如下 1、實現計算123…n的和 DELIMITER // CREATE PROCEDURE sp_add_sum_num(IN n INT) BEGIN DECLARE i INT; DECLARE sum INT; SET i 1; SET sum 0;WHILE i < n DO SET sum …

若依框架實戰指南:從入門到精通

在當今快節奏的軟件開發環境中&#xff0c;選擇一個高效、可靠的開發框架至關重要。若依框架&#xff08;RuoYi&#xff09;作為一個基于Spring Boot和MyBatis的快速開發平臺&#xff0c;以其強大的功能和易用性受到了廣泛歡迎。本文將詳細介紹若依框架的使用方式&#xff0c;包…

計算機組成結構—中斷和異常

一、基本概念和分類 計算機在執行程序的過程中&#xff0c;有時會遇到一些異常情況或者特殊請求&#xff1b;這時就需要計算機暫停正在運行的程序&#xff0c;轉而先去處理這些異常或特殊請求&#xff0c;處理結束之后再返回程序的斷點處繼續執行。這種處理方式就被稱為 “中斷…

頂堅北斗有源終端有什么功能跟用途

頂堅北斗有源終端作為現代衛星導航與通信技術融合的杰出代表&#xff0c;其用途廣泛且功能強大。在廣袤無垠的偏遠山區、深邃的海洋以及荒蕪的沙漠中&#xff0c;當用戶面臨移動通信信號無法覆蓋的困境時&#xff0c;北斗有源終端便成為了連接世界的橋梁。 該終端的核心功能之一…

PE文件(六)新增節-添加代碼作業

一.手動新增節添加代碼 1.當預備條件都滿足&#xff0c;節表結尾沒有相關數據時&#xff1a; 現在我們將ipmsg.exe用winhex打開&#xff0c;在節的最后新增一個節用于存放我們要增加的數據 注意&#xff1a;飛鴿的文件對齊和內存對齊是一致的 先判斷節表末尾到第一個節之間…

奧德彪的幸福VS碼農的幸福

奧德彪的幸福 非洲國家布隆迪是一個全球最不發達國家之一&#xff0c;大部分居民以農業為生&#xff0c;其中包括香蕉&#xff0c;人們拿香蕉用來做飯也用來釀酒。 香蕉產地距離布隆迪首都布瓊布拉很遠&#xff0c;而這個國家又缺乏規模化的物流企業&#xff0c;于是就誕生了…

Linux進程--函數 system 和 popen 的區別

system() 和 popen() 是 C 語言中用于執行外部命令的兩個函數&#xff0c;它們的功能類似&#xff0c;但在使用方式和特性上有一些區別。 system() system() 函數允許您在程序中執行外部命令&#xff0c;并等待該命令執行完成后繼續執行程序。其基本語法如下&#xff1a; in…

如何使用腳本執行SQL Server 數據庫壓縮備份?

SQL Server 數據庫壓縮備份是否可以實現&#xff1f; 使用時&#xff0c;SQL Server 數據庫會變得非常大&#xff0c;備份也是如此。它們占用大量磁盤空間&#xff0c;并且每次備份數據庫或四處移動都非常耗時。因此&#xff0c;您可能想知道是否有任何方法可以創建壓縮備份。…

pikachu靶場(SQL注入基于布爾的盲注)python實現

import requests from bs4 import BeautifulSoupurl "http://localhost:8086/pikachu-master/vul/sqli/sqli_blind_b.php"def get_database_name(url):dataname # 初始化一個空字符串用于存儲數據庫名dict abcdefghijklmnopqrstuvwxyz # 數據庫名可能存在這些…

docker實戰之搭建MYSQL8.0主從同步

目錄 環境配置容器創建主服務器創建MYSQL容器新增my.cnf文件創建用戶并授權 從服務器創建MYSQL容器新增my.cnf文件重啟MYSQL容器配置主從同步 驗證主從同步彩蛋 MySQL 主從同步&#xff08;Master-Slave Replication&#xff09;是一種常用的解決方案&#xff0c;它允許一個主服…

Golang實現根據文件后綴刪除文件和遞歸刪除文件

概述 這個功能會非常強大&#xff0c;因為在日常工作中&#xff0c;我通常會遇到需要批量刪除文件的場景&#xff0c;通過這個方法&#xff0c;再結合我的另一個 命令行開發框架&#xff0c;能夠很輕松的開發出這個功能。 代碼 package zdpgo_fileimport ("errors"…

LabVIEW與串口通訊在運行一段時間后出現數據接收中斷的問題

這些問題可能與硬件、軟件或通信協議有關。以下是詳細的原因分析和可能的解決方案&#xff1a; 一、硬件原因 串口線纜或接口問題&#xff1a; 由于長時間使用&#xff0c;串口線纜可能出現接觸不良或損壞。接口松動也可能導致通訊中斷。 解決方案&#xff1a;檢查并更換串口…

C語言基礎-內存申請和釋放

在C語言中&#xff0c;malloc 和 free 是用于動態內存分配和釋放的函數。而在C中&#xff0c;new 和 delete 提供了類似的功能&#xff0c;但它們之間有一些重要的區別。 1. malloc 和 free malloc malloc 函數用于在堆上動態地分配指定字節數的內存。它的原型在 stdlib.h 頭…

【Text2SQL 經典模型】X-SQL

論文&#xff1a;X-SQL: reinforce schema representation with context ???? Microsoft, arXiv:1908.08113 X-SQL 與 SQLova 類似&#xff0c;使用 BERT style 的 PLM 來獲得 representation&#xff0c;只是融合 NL question 和 table schema 的信息的方式不太一樣&#…

一種獲取java代碼結構的實現思路

一種獲取java代碼結構的實現思路 有時,我們需要獲取java文件里的代碼結構,即,只需要里面的class定義、方法聲明、屬性定義。不需要額外的方法實現 這里提供一下實現思路: 采用語法解析器Tree-sitter對java代碼進行解析,獲取里面的方法實現遍歷第一步獲取到的方法列表,在源…

Linux c開發線程鎖和條件變量使用

#include <pthread.h> #include <stdio.h> #include <unistd.h>pthread_mutex_t mutex PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond PTHREAD_COND_INITIALIZER;void* thread_function(void* arg) {printf("線程等待喚醒,鎖定互斥量...\n");…