概念
PixelRatio-像素密度
應(yīng)用場(chǎng)景
如果應(yīng)用運(yùn)行在一個(gè)高像素密度的設(shè)備上反肋,顯示的圖片也應(yīng)當(dāng)分辨率更高拖云。一個(gè)取得縮略圖的好規(guī)則就是將顯示尺寸乘以像素密度比:
var image = getImage({
width: PixelRatio.getPixelSizeForLayoutSize(200),
height: PixelRatio.getPixelSizeForLayoutSize(100),
});
<Image source={image} style={{width: 200, height: 100}} />
PixelRatio.getPixelSizeForLayoutSize(200)方法會(huì)根據(jù)當(dāng)前設(shè)備的pixelratio返回對(duì)應(yīng)值贷笛,比如當(dāng)前設(shè)備的pixelratio為2,則返回 200 * 2 = 400宙项,最后生成的參數(shù)為{ width: 400, height: 200 }乏苦,然后開(kāi)發(fā)者自己實(shí)現(xiàn)getImage方法,根據(jù)這一參數(shù)尤筐,返回最符合此尺寸的圖片地址邑贴。
方法
static get()
返回設(shè)備的像素密度,例如:
PixelRatio.get() === 1 mdpi Android 設(shè)備 (160 dpi)
PixelRatio.get() === 1.5 hdpi Android 設(shè)備 (240 dpi)
PixelRatio.get() === 2 iPhone 4, 4S iPhone 5, 5c, 5s iPhone 6 xhdpi Android 設(shè)備 (320 dpi)
PixelRatio.get() === 3 iPhone 6 plus xxhdpi Android 設(shè)備 (480 dpi)
PixelRatio.get() === 3.5 Nexus 6
static getFontScale()
返回字體大小縮放比例叔磷。這個(gè)比例可以用于計(jì)算絕對(duì)的字體大小,所以很多深度依賴字體大小的組件需要用此函數(shù)的結(jié)果進(jìn)行計(jì)算奖磁。
如果沒(méi)有設(shè)置字體大小改基,它會(huì)直接返回設(shè)備的像素密度。
目前這個(gè)函數(shù)僅僅在Android設(shè)備上實(shí)現(xiàn)了,它會(huì)體現(xiàn)用戶選項(xiàng)里的“設(shè)置 > 顯示 > 字體大小”秕狰。在iOS設(shè)備上它會(huì)直接返回默認(rèn)的像素密度稠腊。
static getPixelSizeForLayoutSize(layoutSize: number)
將一個(gè)布局尺寸(dp)轉(zhuǎn)換為像素尺寸(px)。
一定會(huì)返回一個(gè)整數(shù)數(shù)值鸣哀。
注意點(diǎn):
1架忌、PixelRatio.get() 使用最多的獲取像素密度的方法。
2我衬、px = dp / PixelRatio.get() .UI一般給出的設(shè)計(jì)稿單位都是px叹放,那我們RN中的單位是dp,那么我們就需要將px轉(zhuǎn)換為dp挠羔,這就需要使用像素密度了井仰。