學(xué)習(xí)ArkUI時(shí)铝噩,在Image使用icon,去官方圖片庫(kù) 下載的時(shí)候發(fā)現(xiàn)圖片單位為vp? pt和px單位我們很熟悉颖低,那什么是vp呢屠尊?
download.png
官方對(duì)于vp的解釋為:不管屏幕分辨率是多少,屏幕密度是多少,組件在視覺(jué)上呈現(xiàn)的效果是一致的宏多。
vp相比px的優(yōu)勢(shì)
vp具體計(jì)算公式為:vp = px /(DPI/160)
px就是屏幕真實(shí)物理像素值,densityPixels是屏幕密度澡罚,是和標(biāo)準(zhǔn)DPI的比例伸但,常見(jiàn)取值有0.75,1.0留搔,1.5更胖,2.0,3.0等,在HarmonyOS中却妨,標(biāo)準(zhǔn)DPI為160饵逐,以華為mate 40 pro為例,查詢得到的densityPixels=3.5彪标,densityDPI=560倍权。densityDPI就是我們通常所說(shuō)的系統(tǒng)屏幕密度,densityPixels就是屏幕密度和標(biāo)準(zhǔn)dpi(160)的比率捞烟。想要查看真機(jī)的dpi薄声,可以調(diào)用屏幕屬性中的display接口查詢。
import { display } from '@kit.ArkUI';
let displayClass: display.Display | null = null;
try {
displayClass = display.getDefaultDisplaySync();
} catch (exception) {
console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception));
}
如果原型圖沒(méi)有提供vp單位的布局题画,開(kāi)發(fā)者可以根據(jù)densityPixel把px轉(zhuǎn)為vp默辨,HarmonyOS也封裝了現(xiàn)成的接口px2vp()
和vp2px()
供開(kāi)發(fā)者直接調(diào)用。
其實(shí)我們?cè)谠O(shè)置寬高的時(shí)候苍息,寫完整應(yīng)該是如下的廓奕,本質(zhì)就是vp。
Text('abc')
// .width(200).height(200)
.width('200vp').height('200vp')