Android视角看鸿蒙第六课(module.json5中的各字段含义之pages)designWidth的用法

news/2024/7/21 9:43:22 标签: android, harmonyos, 鸿蒙, 华为, json

json5pages_0">Android视角看鸿蒙第六课(module.json5中的各字段含义之pages)

导读

前面几篇文章,我们陆续分析了entry->src->main下的module.json5中的各个字段的含义及作用。目前剩余pages和abilities两个字段,本篇文章一起来了解pages。
过程有错误,一定要看到最后

pages

官方文档

在这里插入图片描述
在这里插入图片描述

字段定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到pages的值是String,通过正则要求值的格式必须是
$profile: 开始的,作用是定义了所有page的路径

需要注意的是官方文档中说明除默认存在的src外,还可以存在window标签(可缺省),缺省状态下designWidth默认为720,目测类似于autosize.

思考

1、page的路径仅仅是说明,还是必须声明?
2、window下的designWidth的作用
3、autoDesignWidth的作用

尝试

1、page的路径仅仅是说明,还是必须声明?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
EntryAbility目前是程序的入口,EntryAbility加载了pages/Index, pages/Index在main_pages.json中的src下存在。
现在把main_pages.json中的pages/Index注释看看会发生什么。
在这里插入图片描述
报错了,json不允许注释
直接删除
在这里插入图片描述
ok,有警告但不报错。
运行看看效果.
在这里插入图片描述
日志显示的是成功的,但是界面无内容.
在这里插入图片描述
改回来,再上个正常的
在这里插入图片描述

结论

被调用的page必须在pages所配置的profile中声明,未声明时不会报错,不影响运行,不会闪退但加载不出内容且
在这里插入图片描述

1.1 重复声明会如何

突发奇想,不声明不行,那么如果声明了两个会如何
在这里插入图片描述
有警告,运行看看
在这里插入图片描述
ok,没有什么问题

结论

重复声明会有警告,建议删除重复项,虽然不影响运行

2、window下的designWidth的作用

默认是没有这个值的,我们先手写一个这个字段,看看字段描述
在这里插入图片描述
Defines window-related configurations. This attribute is not supported by devices running the OHOS.
定义窗口属性,但OHOS不支持。
在这里插入图片描述
看看其他同学对于OHOS的描述,简单来说就是和鸿蒙OS不是一回事。 先不管他。

根据这个我们定义了一个designWidth,和缺省值一致,为720
在这里插入图片描述
同时,也看下designWidth的字段描述
在这里插入图片描述
Indicates the baseline width for page design, in pixels. The size of an element is scaled by the actual device width. This label is an integer.
指示页面设计的基线宽度(以像素为单位)。元素的大小按实际设备宽度进行缩放。此标签是一个整数。

为了更好的看出效果,我们修改一下page/index中的宽度和背景色
在这里插入图片描述
看效果
在这里插入图片描述

虚拟机效果不太对,理论上应该正好全屏,看看真机。

真机效果一致,这是什么原因呢?

继续修改designWidth的值,为72,相比之前缩小10倍,视图应该放大10倍才对
在这里插入图片描述
看看效果
无任何变化-_
郁闷了

结论

并无任何影响,可能我的方向是错误的,想参考一下其他同学的帖子,也未能发现有效的资料。有其他想法的同学欢迎反馈吧。

3、autoDesignWidth的作用

看一下autoDesignWidth的值

在这里插入图片描述

在这里插入图片描述
按照文档说明,当autoDesignWidth=true时,designWidth设置的值会被忽略,将会自动计算的得出。
看看效果
在这里插入图片描述
依然一致,无任何变化
在这里插入图片描述
研究了半天,在这个目录下看到了window的更多说明,疑似专用于类web开发范式
基于类web开发范式,我找到了这个
在这里插入图片描述
Stage模型下的应用或服务的页面仅支持声明式开发范式(推荐),Stage模型下的卡片支持声明式和类web两种开发范式。

上个官方链接

结论(错误的)

在Stage模型下,确定window下的designWidth及autoDesignWidth字段,无任何作用。

修正

发布之后其实我是很放心的,所以我去研究UI了,我很好奇,
我们在上述篇幅中修改的
width(720)
中的720是什么单位,如何保证屏幕兼容的。
我去看文档,无意中看到了这个
在这里插入图片描述

我门上述的720,默认使用的vp,等同于Android中的dp
而lpx是和designwidth有关系的

下图是designWidth和lpx的使用方式
在这里插入图片描述

在这里插入图片描述

结论

designWidth类似于autosize,可以等比例还原设计图,但是组件的width默认输入number是Vp单位的,等同于DP,不受designWidth影响,必须通过==width(px2vp(lpx2px(70)))==将lpx转换为px,暂未发现lpx直接转vp的办法。
所以designWidth和autoDesignWidth都是有效的,只是需要配合**px2vp(lpx2px(70)**使用


http://www.niftyadmin.cn/n/5437624.html

相关文章

中文编程入门(Lua5.4.6中文版)第七章 Lua 字符串与模式

在网游的符文之地中,我们可以通过神秘的“字符串法术”来处理和操作一系列字符。以下是如何在Lua的魔法卷轴上施展这种法术: 字符串的表示与召唤: 在Lua的魔法治则中,你可以运用三种方式召唤出一串字符(即字符串&…

宠物智能喂食机方案设计

我们都知道,现如今养宠物的人群已经很多了,主要是青年人居多,他们在独自漂泊的在外的工作,免不了情感泛滥,养一些小动物也是在预料之中。但由于工作或者其他各种因数,养宠人不可时时刻刻在家,对…

【教程】为什么要为 App 应用加固 ?如何为 App 应用加固 ?

一:为什么要为 App 应用加固来看下 腾讯开放平台 官方的解释说明 若应用不做任何安全防护,极易被病毒植入、广告替换、支付渠道篡改、钓鱼、信息劫持等,严重侵害开发者的利益。App 加固后,可以对应用进行安全防护,防止…

【Java基础知识总结 | 第四篇】Java基础重要知识(面试题)

文章目录 4.Java基础重要知识(面试题)4.1基本数据类型4.1.1 八种基本数据类型4.1.2 基本类型和包装类型的区别4.1.3包装类型的缓存机制4.1.4自动装箱和拆箱?原理?(1)定义(2)原理 4.2…

Django templates 存放html目录

模板 一概述 模板由两部分组成,一部分是HTML代码,一部分是逻辑控制代码(变量,标签,过滤器) 作用:可以通过一些逻辑控制代码减少一些重复的操作更快速的生成HTML代码,并且实现简单的…

鸿蒙Harmony应用开发—ArkTS声明式开发(绘制组件:Rect)

矩形绘制组件。 说明&#xff1a; 该组件从API Version 9开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Rect(value?: {width?: string | number,height?: string | number,radius?: string | number | Array<s…

TCP - 传输控制协议

TCP - 传输控制协议 是一种面向连接的可靠传输协议。 特点&#xff1a; TCP是面向连接&#xff08;虚连接&#xff09;的传输层协议。 每一条TCP连接有且只能有两个端点。 可靠、有序、无丢弃和不重复。 TCP协议提供全双工通讯。 发送缓存 存放发送方TCP准备发送的数据。T…

java 自己总结的二分查找法及其变种

主函数的套路 import java.io.*; public class Main{public static void main(String[] args) throws IOException {BufferedReader br new BufferedReader(new InputStreamReader(System.in));String[] s1 br.readLine().split(" ");int n Integer.parseInt(s…