由于项目中有一个问题没有解决,那就是不同手机屏幕的尺寸是不一样的,这尺寸是一个大问题,越到最后需要修改的尺寸越多,所以今天我抽空研究了一下,首先回忆,android的屏幕尺寸是根据不同手机的values里面的值来进行适配的,但是RN是作桥接到android的,所以在andoid values文件夹中获取尺寸数据是有点困难,然后就开始百度搜索,百度给出的答案是,主要看公式:
设计稿元素宽度(px) / 设计稿总宽度(px) = 元素的宽度(dp) / 屏幕的总宽度(dp)
公式先在上面放着,等会解释,先来解释RN设计稿单位与RN单位,设计稿的单位是px,rn的单位是dp,代码中输入的纯阿拉伯数字就是px也就是设计稿,rn就是通过自身的java或者ObjectC语言算出来的单位dp,因为设计稿元素宽度、设计稿总宽度,屏幕总宽度已知,要求的是元素的宽度,所以:
元素的宽度(dp)= 设计稿元素宽度(px)* 屏幕的总宽度(dp) / 设计稿总宽度(px)
以上算法是不同屏幕之间的尺寸适配,但有时,我们的ui设计师给我们的图片大小是px的,或者是dp的,这时候就需要用到rn官方给出的api:
export const px2dp = px => PixelRatio.roundToNearestPixel(px);
export const dp