Harmony 应用开发之size 脚本

作者:麦客奥德彪

在应用开发中,最终呈现在用户面前的UI,是用户能否继续使用应用的强力依据之一,在之前的开发中,Android 屏幕碎片化严重,所以出现了很多尺寸适配方案。 最小宽适配、百分比适配等等。

还有一个点,就是为了能在项目中统一管理尺寸,我们一般会在values下生成一个dimens.xml 文件,然后将尺寸和文字大小进行统一管理,提供阅读性。

Harmony的像素单位

并且提供了像素转换的方式

再看下他的使用方式:

// xxx.ets
@Entry
@Component
struct Example {build() {Column() {Flex({ wrap: FlexWrap.Wrap }) {Column() {Text("width(220)").width(220).height(40).backgroundColor(0xF9CF93).textAlign(TextAlign.Center).fontColor(Color.White).fontSize('12vp')}.margin(5)Column() {Text("width('220px')").width('220px').height(40).backgroundColor(0xF9CF93).textAlign(TextAlign.Center).fontColor(Color.White)}.margin(5)Column() {Text("width('220vp')").width('220vp').height(40).backgroundColor(0xF9CF93).textAlign(TextAlign.Center).fontColor(Color.White).fontSize('12vp')}.margin(5)Column() {Text("width('220lpx') designWidth:720").width('220lpx').height(40).backgroundColor(0xF9CF93).textAlign(TextAlign.Center).fontColor(Color.White).fontSize('12vp')}.margin(5)Column() {Text("width(vp2px(220) + 'px')").width(vp2px(220) + 'px').height(40).backgroundColor(0xF9CF93).textAlign(TextAlign.Center).fontColor(Color.White).fontSize('12vp')}.margin(5)Column() {Text("fontSize('12fp')").width(220).height(40).backgroundColor(0xF9CF93).textAlign(TextAlign.Center).fontColor(Color.White).fontSize('12fp')}.margin(5)Column() {Text("width(px2vp(220))").width(px2vp(220)).height(40).backgroundColor(0xF9CF93).textAlign(TextAlign.Center).fontColor(Color.White).fontSize('12fp')}.margin(5)}.width('100%')}}
}

在这种申明式布局中,直接写‘12vp’ 更加不好管理了。

官方推荐的写法是在

float.json 文件中进行管理

没有单位时默认vp

用脚本生成

使用脚本直接生成常用的尺寸,

#!/bin/bash
vp="vp"
fp="fp"
size_num=300
font_size_num=100
# Generate JSON for size_1 to size_300 and save to float.json
echo "{ "float": [" > float.json
for ((i=1; i<=$size_num; i++)); doecho "{"name": "size_$i","value": "$i$vp"}" >> float.jsonif [ $i -lt $size_num ]; thenecho "," >> float.jsonfi
done
if [ $font_size_num -gt 0 ]; thenecho "," >> float.jsonfor ((i=1; i<=$font_size_num; i++)); doecho "{"name": "size_text_$i","value": "$i$fp"}" >> float.jsonif [ $i -lt $font_size_num ]; thenecho "," >> float.jsonfidone
fi
echo "] }" >> float.jsonecho "float.json file has been generated."

输出之后可以表现为:

使用时直接

Column() {Text("fontSize($r('app.float.size_1'))").width(220).height(40).backgroundColor(0xF9CF93).textAlign(TextAlign.Center).fontColor(Color.White).fontSize($r('app.float.size_text_12'))}.margin(5)

为了能让大家更好的学习鸿蒙 (Harmony OS) 开发技术,这边特意整理了《鸿蒙 (Harmony OS)开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙 (Harmony OS)开发学习手册》

入门必看

  1. 应用开发导读(ArkTS)
  2. 应用开发导读(Java)

HarmonyOS 概念:https://qr21.cn/FV7h05

  1. 系统定义
  2. 技术架构
  3. 技术特性
  4. 系统安全

如何快速入门

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. 构建第一个JS应用
  4. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知虾shopee收费,多少钱一个月

在当今电商行业的竞争激烈的环境下&#xff0c;许多商家都在寻求更好的方式来推广和销售他们的产品。这就是为什么越来越多的商家选择使用知虾shopee这样的平台来展示和销售他们的商品。但是&#xff0c;对于许多商家来说&#xff0c;他们可能会对知虾shopee的收费情况感到好奇…

MySql 计算同比、环比

一、理论 国家统计局同比、环比计算公式 增长速度是反映经济社会某一领域发展变化情况的重要数据&#xff0c;而同比和环比是反映增长速度最基础、最核心的数据指标&#xff0c;也是国际上通用的指标。在统计中&#xff0c; 同比和环比通常是同比变化率和环比变化率的简称&…

关于2023年11月25日PMI认证考试有关事项的通知

PMP项目管理学习专栏https://blog.csdn.net/xmws_it/category_10954848.html?spm1001.2014.3001.54822023年8月PMP考试成绩出炉|微思通过率95%以上-CSDN博客文章浏览阅读135次。国际注册项目管理师(PMP) 证书是项目管理领域含金量最高的职业资格证书&#xff0c;获得该资质是项…

CentOS简介、ISO类型、CentOS7安装与配置以及远程连接。

目录 1.CentOS简介 2.CentOS ISO类型 3.CentOS7安装与配置 4.远程连接 1.CentOS简介 CentOS&#xff08;Community Enterprise Operating System&#xff0c;中文意思是社区企业操作系统&#xff09;是Linux发行版之一&#xff0c;它是来自于Red Hat Enterprise Linux依照…

代码随想录算法训练营第23期60天完结总结

这六十天在自己准备中期答辩、完成中期答辩中度过了 其实挺惭愧的&#xff0c;60天里&#xff0c;每天能塌下心来的时间每日递减&#xff0c;从打卡的情况上也能看出来。最后十天都是补打卡&#xff0c;每道题都是想了几分种&#xff0c;不会就开始看解析&#xff0c;然后凭着…

微软Copilot即将对大陆开放,一起来看看都有什么好用的功能

微软发布了Copilot&#xff0c;12月1日起对大陆用户开放&#xff0c;以下是Copilot的11个新功能&#xff0c;你一定不想错过&#xff1a;1. PowerPoint&#xff1a; 将Word文档转换为演示文稿。从文件中快速创建演示文稿。通过关键幻灯片总结冗长的演示文稿。使用提示添加新的…

基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制总结版(11.22)

1.任务需求 基于MS16F3211芯片实现功能一个按键通过长按可以控制当前处于亮状态的灯的亮度&#xff0c;当灯从最亮达到最暗时&#xff0c;所用时为3s。现有三盏颜色分别为红绿蓝的灯&#xff0c;在处于关机状态时红灯亮&#xff0c;处于开机状态时红灯灭。点按第一次仅绿灯亮&…

postgresql新增非空默认值字段是否需要重写表

简介&#xff1a; PostgreSQL 10 版本前表新增不带默认值的DDL不需要重写表&#xff0c;只需要更新数据字典&#xff0c;因此DDL能瞬间执行&#xff0c;如下: ALTER TABLE table_name ADD COLUMN flag text; 如果新增的字段带默认值&#xff0c;则需要重写表&#xff0c;表越大…

mysql使用--数据的插入,删除和更新

1.UNION合并多个结果集 如&#xff1a;SELECT m1, n1 FROM t1 WHERE m1 < 2 UNION SELECT m2, n2 FROM t2 WHERE m2 > 2; 默认下&#xff0c;某行在参与合并两个结果集均存在时&#xff0c;最终结果集中只包含一行。 如希望最终结果集包含两行&#xff0c;用UNION ALL。 …

慕尼黑电子展Samtec Demo | 回环测试带来Samtec产品组合优异表现

【摘要/前言】 大家好&#xff01;Electronica虎家展台Demo系列回来咯。 实践出真知&#xff0c;再好的纸面数据都不如来一场实际的测试和演示。Samtec团队始终在努力为客户带来卓越的产品和优质服务。而这其中&#xff0c;Demo演示的存在至关重要。演示过程可以为大家带来了…

关于Flink的旁路缓存与异步操作

1. 旁路缓存 1. 什么是旁路缓存? 将数据库中的数据,比较经常访问的数据,保存起来,以减少和硬盘数据库的交互 比如: 我们使用mysql时 经常查询一个表 , 而这个表又一般不会变化,就可以放在内存中,查找时直接对内存进行查找,而不需要再和mysql交互 2. 旁路缓存例子使用 dim层…

Vue-报错No “exports“ main defined in xx

vue报错&#xff1a;No "exports" main defined in F:\wjh\vue#Practice\EasyQuestionnaire-web-master\EasyQuestionnaire-web-master\node_modules\babel\helper-compilation-targets\package.json 1.在文件中找到该路径的package.json文件&#xff0c; 2.按照提示…

人工智能:拥抱未来之手

人工智能对我们的生活影响有多大 人工智能给我们的生活带来了巨大的影响&#xff01;它像魔术师一样&#xff0c;帮我们解决问题、提供建议&#xff0c;甚至预测未来。从智能手机到智能家居&#xff0c;人工智能让我们的生活变得更便捷、更智能。它是我们生活中的得力助手&…

MEMS制造的基本工艺——晶圆键合工艺

晶圆键合是一种晶圆级封装技术&#xff0c;用于制造微机电系统 (MEMS)、纳米机电系统 (NEMS)、微电子学和光电子学&#xff0c;确保机械稳定和气密密封。用于 MEMS/NEMS 的晶圆直径范围为 100 毫米至 200 毫米&#xff08;4 英寸至 8 英寸&#xff09;&#xff0c;用于生产微电…

java序列化与反序列化

java中序列化与反序列化 概念 在Java中&#xff0c;序列化是指将对象转换为字节流的过程&#xff0c;而反序列化则是将字节流转换回对象的过程。序列化和反序列化通常用于在网络上传输对象或将对象持久化到磁盘上。 要对一个对象进行序列化&#xff0c;可以使用ObjectOutput…

github访问失败

1. 问题场景 今天了解到notepad可以安装许多插件&#xff0c;但是自动下载插件时总是失败&#xff0c;这些插件的下载源都是github&#xff0c;将地址复制到浏览器也打不开&#xff0c;所以查了下github的访问问题&#xff0c;目前插件已正常下载。 2. 解决方法 gitee上搜索…

facebook如何群发小组贴

Facebook是一款非常流行的社交媒体平台&#xff0c;它可以让人们与朋友、家人和同事进行交流和分享。在Facebook上&#xff0c;用户可以加入各种小组&#xff0c;与志同道合的人交流和分享。而群发小组贴是一种在小组内发布消息的方式&#xff0c;让小组的成员都能够收到消息。…

BUUCTF [SWPU2019]神奇的二维码 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 得到的 flag 请包上 flag{} 提交。 密文&#xff1a; 下载附件&#xff0c;得到一个.png图片。 解题思路&#xff1a; 1、使用QR research扫一下&#xff0c;得到“swpuctf{flag_is_not_here}”的提示。 2、放到0…

orvibo的Mini网关VS20ZW玩法

概述 闲鱼淘来一个2016年生产的网关,此网关的型号:VS20ZW。 已经不能用APP入网了,没事拆来玩玩。 此设备已经被淘汰,很多新的zigbee产品不再支持入网。 官网设备的简介: ZigBee Mini网关,智能家居网关,智能家居主机|ORVIBO欧瑞博智能网关 设备概貌: 主要器件: …

微信小程序 获取微信头像和昵称的低版本兼容问题

<template> <uni-forms-item label"头像" nameimg><!-- #ifndef MP || MP-WEIXIN --><view click"addFile1"><u-avatar size"46":src"this.$utils.baseUrl/file/download/customFormData.avatar"></…