HarmonyOS鸿蒙Next中单位fp使用时遇到的疑惑
HarmonyOS鸿蒙Next中单位fp使用时遇到的疑惑
我配置了跟随系统字号,然后使用vp和fp作为fontSize的值,两个文字字号都同样放大了。
但是根据官方文档,参数单位类型详细区别,
“ 如果用户在设置中选择了更大的字体,字体的实际显示大小就会在vp的基础上乘以scale系数,即 1 fp = 1 vp * scale。 ”
我的理解是两个文本应该大小不同,所以这个scale不是下图系统字体大小吗?
是鸿蒙专属的屏幕适配单位,1fp约等于1px在160PPI屏幕上的物理尺寸。与Android的dp不同,fp会根据系统字体大小设置自动缩放。使用时需注意:
- 在arkTS声明式开发中直接使用数字+fp后缀(如12fp)
- 在资源文件中用"fp"作为单位标识
- 实际渲染尺寸= fp值×(屏幕PPI/160)×(字体缩放系数)
- 系统默认字体缩放系数为1.0,用户可调整,
更多关于HarmonyOS鸿蒙Next中单位fp使用时遇到的疑惑的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,fp和vp单位的行为确实与系统字体缩放相关。根据您的描述,当使用fp和vp作为fontSize时,两者都放大了,这与预期一致。关键点在于:
-
fp单位已经包含了系统字体缩放系数(scale),所以1fp = 1vp * scale。当系统字体放大时,fp会自动应用这个缩放。
-
vp是虚拟像素单位,不随系统字体设置变化,但当用作字体大小时,系统会额外应用字体缩放,这是为了确保文字可读性。
-
您观察到的两者都放大的现象是正确的,区别在于fp是显式声明要跟随字体缩放,而vp作为字体大小时系统会隐式应用缩放。
总结:在字体大小场景下,fp和vp都会响应系统字体缩放,这是设计预期行为。fp更明确表达了跟随字体设置的意图,而vp作为字体大小时系统会做自动适配。