React Native移动开发实战-4-Android平台的适配

打开Android开发工具Android Studio,选择菜单 Open an existing AndroidStudio project,打开ch04项目的android文件夹,如图5.8所示。android

图片描述

图5.8 Android原生项目结构工具


从Android的项目结构,想必读者能够隐约感觉到:Android适配是基于文件夹的,不一样分辨率和尺寸的屏幕会自动适配相应的文件夹下的布局或资源文件。可是,想要进一步理解Android的适配,有必要先了解Android适配的一些基本概念:布局

  • 屏幕尺寸:屏幕尺寸是指手机屏幕对角线的英寸数。
  • 屏幕分辨率:屏幕分辨率是指屏幕宽高像素数。
  • 屏幕像素密度:屏幕像素密度是指手机屏幕对角线上单位英寸内的像素数。

另外,编写代码时经常使用的尺寸单位有:开发工具

  • px:像素。
  • dp(dip的缩写):规定密度为160的屏幕上,1像素对应的尺寸为1dp。320密度的屏幕上,1像素对应0.5dp,以此类推。在密度为160的屏幕上,1英寸有160个像素,那么
    px对应的尺寸=1/160英寸。因此说dp是个物理尺寸,跟像素无关。因此,100dp的尺寸在不一样手机上显示出来,物理尺寸看上去基本是同样的。
  • sp(Scale-independentPixel),即与缩放无关的抽象像素。sp和dp很相似但惟一的区别是,Android系统容许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时,1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。

在建立项目的时候,会自动建立不一样的mipmap或layout文件夹(在不一样像素密度上提供不一样的图片),文件夹的后缀代表了该布局或资源的像素密度(dp)范围,对应关系以下参见5.1。spa

后缀 像素密度(dp)的范围
mdpi 120dp ~ 160dp
hdpi 160dp ~ 240dp
xhdpi 240dp ~ 320dp
xxhdpi 320dp ~ 480dp
xxxhdpi 480dp ~ 640dp图片


对于上述Android项目中的mipmap文件夹,Android的适配机制是这样的:系统会先到后缀与设备匹配的mipmap目录下找对应的图片,当找不到的时候会去“更高”一级的目录去找,再找不到,继续往高一级的找,若是仍是找不到就退而求其次去低一级的找,依次类推。ip

例如:在密度为xxhdpi的手机上运行Android App,首先会在drawable-xxhdpi目录下寻找图片资源,找不到再去drawable-xxxhdpi找,若是没有比drawable-xxxhdpi更高的,则再找不到就去drawable-xhdpi找,接着drawable-hdpi,直到找到对应的图片资源,当找到后,系统会按密度对图片作缩放处理,而后再显示到屏幕上,因此若是图片放的目录不正确的话,有可能形成图片因缩放而变得模糊。资源

一样,用于存放布局文件的layout目录也是经过后缀名来适配的,只不过layout文件夹一般添加设备分辨率做为后缀,如:layout-1280x720、layout-1920x1080以及layout-land-1280x720等。开发

不难看出,以上适配方法和上述iOS开发中的Size Class是相似的:用于分类适配.it

和我一块儿学吧,《React Native移动开发实战》
图片描述
图片描述

相关文章
相关标签/搜索