鸿蒙OS开发学习:【尺寸适配实现】

 概述

在鸿蒙开发中,尺寸适配是一个重要的概念,它可以帮助我们在不同屏幕尺寸的设备上正确显示和布局我们的应用程序。本文将介绍如何在鸿蒙开发中实现尺寸适配的方法。

流程图

image.png

详细步骤

1. 定义适配方案

在鸿蒙开发中,我们可以通过定义适配方案来指定不同屏幕尺寸下的适配策略。这些适配方案通常包括不同屏幕尺寸下的像素密度、字体大小、布局占比等信息。

2. 获取屏幕信息

在代码中,我们需要获取当前设备的屏幕信息,包括屏幕宽度、高度、像素密度等。可以使用以下代码获取屏幕信息:

DisplayAttributes displayAttributes = DisplayManager.getInstance().getDefaultDisplay(this).getAttributes();
int screenWidth = displayAttributes.width; // 屏幕宽度
int screenHeight = displayAttributes.height; // 屏幕高度
float density = displayAttributes.density; // 像素密度
3. 计算适配比例

根据获取到的屏幕信息,我们可以根据定义好的适配方案计算出适配比例,用于后续的尺寸适配计算。适配比例可以通过以下代码计算得出:

float targetDensity = screenWidth / 360f; // 根据设计稿的宽度来计算适配比例
float targetScaledDensity = targetDensity * (scaledDensity / density); // 根据像素密度来调整字体大小
int targetDensityDpi = (int) (targetDensity * 160); // 计算适配后的像素密度
4. 设置适配参数

在应用程序的入口处,我们需要设置适配参数,使得应用程序在不同屏幕尺寸下能够正确适配。可以使用以下代码设置适配参数:

Resources resources = this.getResourceManager();
Configuration config = resources.getConfiguration();
config.fontScale = 1.0f; // 设置字体缩放比例
config.density = targetDensity; // 设置像素密度
config.scaledDensity = targetScaledDensity; // 设置字体像素密度
config.densityDpi = targetDensityDpi; // 设置像素密度
resources.updateConfiguration(config, resources.getDisplayMetrics());
5. 编写布局代码

在编写布局代码时,可以使用鸿蒙开发中提供的尺寸单位来实现尺寸适配。使用vp单位可以根据屏幕密度自动调整尺寸,使用fp单位可以根据屏幕字体大小自动调整尺寸。

<text
    width="100vp"
    height="50vp"
    font-size="18fp"
    text="Hello, World!" />
6. 进行适配测试

完成以上步骤后,我们可以在不同尺寸的设备上进行适配测试,确保应用程序在不同屏幕尺寸下显示和布局正常。

关系图

erDiagram
    尺寸适配方案 ||--o 屏幕信息 : 获取
    尺寸适配方案 ||--o 适配比例 : 计算
    适配比例 ||--o 适配参数 : 设置
    适配参数 ||--o 布局代码 : 编写
    布局代码 ||--o 适配测试 : 进行

搜狗高速浏览器截图20240326151547.png

通过以上步骤,我们可以成功地实现鸿蒙开发中的尺寸适配。

最后呢,很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。

而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点

如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。

高清完整版请点击→《鸿蒙NEXT星河版开发学习文档》

针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细资料鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,帮助大家在技术的道路上更进一步。

《鸿蒙 (OpenHarmony)开发学习视频》

图片

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

获取这份鸿蒙星河版学习资料,请点击→《鸿蒙NEXT星河版开发学习文档》

OpenHarmony北向、南向开发环境搭建

图片

《鸿蒙开发基础》

  1. ArkTS语言

  2. 安装DevEco Studio

  3. 运用你的第一个ArkTS应用

  4. ArkUI声明式UI开发

  5. .……

图片

《鸿蒙开发进阶》

  1. Stage模型入门

  2. 网络管理

  3. 数据管理

  4. 电话服务

  5. 分布式应用开发

  6. 通知与窗口管理

  7. 多媒体技术

  8. 安全技能

  9. 任务管理

  10. WebGL

  11. 国际化开发

  12. 应用测试

  13. DFX面向未来设计

  14. 鸿蒙系统移植和裁剪定制

  15. ……

图片

《鸿蒙开发实战》

  1. ArkTS实践

  2. UIAbility应用

  3. 网络案例

  4. ……

图片

 获取这份鸿蒙星河版学习资料,请点击→《鸿蒙NEXT星河版开发学习文档》

总结

鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发

并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/531199.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot+vue实现的的成人教育教务系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

Windows Nginx 启动

先解压 nginx安装包&#xff0c;进入到安装目录下(配置环境变量没有用) 解压后的目录结构如上。 #启动服务 默认是80端口&#xff0c; #如果端口被占用&#xff0c;是启动不了的&#xff0c;会生成error log在log目录下 start nginx#停止nginx 服务 nginx -s stop#重新加载配置…

C语言进阶课程学习记录-第29课 - 指针和数组分析(下)

C语言进阶课程学习记录-第29课 - 指针和数组分析&#xff08;下&#xff09; 数组名与指针实验-数组形式转换实验-数组名与指针的差异实验-转化后数组名加一的比较实验-数组名作为函数形参小结 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程&#xff0c;图片全部来源于课…

数字社会下的智慧公厕:构筑智慧城市的重要组成部分

智慧城市已经成为现代城市发展的趋势&#xff0c;而其中的数字化转型更是推动未来社会治理体系和治理能力现代化的必然要求。在智慧城市建设中&#xff0c;智慧公厕作为一种新形态的信息化公共厕所&#xff0c;扮演着重要角色。本文智慧公厕源头实力厂家广州中期科技有限公司&a…

线圈大小的测量和圈数的绕制办法

测量一根线圈的大小&#xff0c;让线圈多出来一公分多一点&#xff01;&#xff01;&#xff01; 我在这简称样圈 然后在模具上进行绕制。 把样圈放在模具上&#xff0c;松紧度要刚好&#xff0c;确定好模具 具体位置 线记在 中间铁心上 开始绕制 这叫做一圈 绕好相应的圈数后…

如何通过代码混淆绕过苹果机审,解决APP被拒问题

目录 iOS代码混淆 功能分析 实现流程 类名修改 方法名修改 生成垃圾代码 替换png等静态资源MD5 info.plist文件添加垃圾字段 功能分析 实现流程 类名修改 方法名修改 生成垃圾代码 替换png等静态资源MD5 info.plist文件添加垃圾字段 混淆前后对比 iOS代码混淆 …

自定义树形筛选选择组件

先上效果图 思路&#xff1a;刚开始最上面我用了el-input&#xff0c;选择框里面内容用了el-inputel-tree使用&#xff0c;但后面发现最上面那个可以输入&#xff0c;那岂不是可以不需要下拉就可以使用&#xff0c;岂不是违背了写这个组件的初衷&#xff0c;所以后面改成div自定…

【ZZULIOJ】1053: 正弦函数(Java)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy code 题目描述 输入x&#xff0c;计算上面公式的前10项和。 输入 输入一个实数x。 输出 输出一个实数&#xff0c;即数列的前10项和&#xff0c;结果保留3位小数。 样例输入 Copy 1 样例输出 Copy 0.841 c…

求三角形面积(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <math.h>int main() {//初始化变量值&#xff1b;double a, b, c, s, area;//赋值&#xff1b;a 3.67;b 5.43;c 6.21;//运算求s&#xff1b…

快速掌握SpringBoot多环境开发

多环境开发 在一个项目当中可能同一套代码需要用于多种环境进行不同的用途例如&#xff1a;生产环境&#xff0c;开发环境&#xff0c;测试环境&#xff0c;需要通过配置进行不同环境的开发切换&#xff1a; spring:profiles:active: shengchan # 通过属性active进行选择 …

二阶巴特沃兹滤波器的数字推导

二阶巴特沃兹滤波器的数字推导 原型双线性变换no warpper双线性变换warpper或者 参考 原型 H ( s ) Ω c 2 s 2 2 ∗ Ω ∗ s Ω c 2 H(s)\frac{\Omega_c^2}{s^2\sqrt{2}*\Omega * s\Omega_c^2} H(s)s22 ​∗Ω∗sΩc2​Ωc2​​ 双线性变换no warpper Ω c ω c T \Omega…

Elastic:加速生成式人工智能体验

作者&#xff1a;Matt Riley 搜索驱动的人工智能和开发人员工具专为速度和规模而打造。 在大型语言模型&#xff08;LLM&#xff09;和生成式 AI 的每日突破中&#xff0c;开发者站在了这场运动的最前沿&#xff0c;影响着它的方向和可能性。在这篇博客中&#xff0c;我将分享…

STL容器之unordered_map类

文章目录 STL容器之unordered_map类1、unordered_map1.1、unordered_map介绍1.2、unordered_map的使用1.2.1、unordered_map的常见构造1.2.2、unordered_map的迭代器1.2.3、unordered_map的容量1.2.4、unordered_map的增删查1.2.5、unordered_map的桶操作 2、unordered_multima…

白盒测试-条件覆盖

​ 条件覆盖是指运行代码进行测试时&#xff0c;程序中所有判断语句中的条件取值为真值为假的情况都被覆盖到&#xff0c;即每个判断语句的所有条件取真值和假值的情况都至少被经历过一次。 ​ 条件覆盖率的计算方法为&#xff1a;测试时覆盖到的条件语句真、假情况的总数 / 程…

redis开源协议变更了?我们还能用吗?

Redis是一款广泛使用的开源键值存储数据库&#xff0c;其开源协议的变更引起了社区和行业的广泛关注。根据搜索结果&#xff0c;Redis Labs宣布Redis将采用双重源代码可用许可证&#xff08;RSALv2&#xff09;和服务器端公共许可证&#xff08;SSPLv1&#xff09;&#xff0c;…

AI自我推理和规划,OpenAI和Meta今年要打开“潘多拉盒子”了 油价100美元几乎已经成了华尔街的共识

OpenAI和Meta今年要打开“潘多拉盒子”了 OpenAI首席运营官Brad Lightcap表示&#xff0c;“我们将开始看到AI能够以更复杂的方式执行更复杂的任务。” OpenAI和Meta正准备发布新的AI模型&#xff0c;他们称这些模型将能够进行自我推理和规划&#xff0c;而这是实现机器“超…

Jmeter —— 自动录制脚本

1、Jmeter配置 1.1新增一个线程组 1.2Jmeter中添加HTTP代理 1.3配置HTTP代理服务器 修改端口 修改Target Cintroller(目标控制器) 修改Grouping(分组) 编辑录制中的包含和排除 在“URL Patterns to include包含模式”中填入.*(123456).*用以过滤请求地址中不包含123456的请求…

设计模式-接口隔离原则

基本介绍 客户端不应该依赖它不需要的接口&#xff0c;即一个类对另一个类的依赖应该建立在最小的接口上先看一张图: 类A通过接口Interface1 依赖类B&#xff0c;类C通过接口Interface1 依赖类D&#xff0c;如果接口Interface1对于类A和类C来说不是最小接口&#xff0c;那么类…

LangChain入门:17.使用 ConversationChain实现对话记忆功能

在默认情况下&#xff0c;无论是 LLM 还是代理都是无状态的&#xff0c;每次模型的调用都是独立于其他交互的。也就是说&#xff0c;我们每次通过 API 开始和大语言模型展开一次新的对话&#xff0c;它都不知道你其实昨天或者前天曾经和它聊过天了。 你肯定会说&#xff0c;不可…

3.2.k8s搭建-kubeadm

目录 一、虚拟机准备 二、所有节点环境准备 1.所有节点做hosts解析 2.所有节点重新命名 3.所有节点安装docker 4.所有节点为docker做linux内核转发 5.所有节点配置docker 6.所有节点关闭swap分区 7.所有节点验证网卡硬件编号是否冲突 8.所有节点配置允许iptables桥接…