一、.布局文件中单位适配。
需要清除了解 布局文件中使用单位 px,dp,sp 基本概念:
像素:视频监视器显示的最小部分是一个小矩形或方形点,称为像素。
DPI:1英寸的像素数量。 可通过:Android API中 dm.densityDpi 得到当前手机的DPI值,主要用于区分 大众说法的 为高或中或低分辨率手机,其实区分就是像素密度。
density: 密度,可通过 Android API中 dm.density 得到当前手机的 密度值。 其实就是 比列值,它等于
DPI/160 (国际公约标准值:160即 1英寸的像素数为 160 )。作用,同上。
px,也叫pix: 即是手机设备的物理像素单位,是绝对单位。
dp,也叫dip:根据公认的转化公式:dp=pix*density 或者 dp=pix* (x dpi)/160 dpi x为当前显示手机的 DPI值 ,所以可 理解为抽象意义上的像素。所以
可推想为什么要想更好 屏幕适配,则xml布局文件里的 所使用单位 都建议使用 dp 而不是 pix了。
sp : scaled pixels(放大像素) 。同dp,主要用于文字大小。
小结:
公约定 在160DPI的手机设备上,则 转化关系是: 1dp=1sp=1px,推理:若在240DPI的手机设备上,则转化关系是:1dp=1sp=1.5px,可见dp和sp比较灵活,因此为能更好的屏幕适配,则需将 xml布局文件里的 所使用单位 都建议使用 空间单位为dp,文字大小单位为sp 。
二 、图片适配
如图:
Andriod系统会根据手机屏幕的大小及屏幕密度去选择不同文件夹下的图片资源,以此来实现在不同大小不同屏幕分辨率下适配的问题。
如:比如在一个低分辨率的手机上,
Android就会选择ldpi文件夹下的图片,但是如果没有在ldpi的文件夹下找见相关的资源文件,Android系统会首先从hdpi文件夹中选择文件,然后对图片资源进行缩放处理,显示在屏幕上;如果hdpi文件夹下也没有的话,会在默认的drawable文件夹中寻找。
三 、代码或布局文件中 定义的 系统组件和自定义组件 所占空间值,并支持语言适配,根据手机屏幕不同尺寸来适配文件。
主要是需要定义 适合手机的不同的
存放在如上不同的目录下适配。适配原则也同上图片。
四、在AndroidManifest.xml 文件控制多屏幕适配,如下图
名如其意,以上是为我们的屏幕设置多分辨率支持(更准确的说是适配大、中、小三种密度)。android:anyDensity="true" ,这一句对整个的屏幕都起着十分重要的作用,值为true,我们的应用程序当安装在不同密度的手机上时,程序会分别加载hdpi,mdpi,ldpi文件夹中的资源。相反,如果值设置为false,即使我们在hdpi,mdpi,ldpi文件夹下拥有同一种资源,那么应用也不会自动地去相应文件夹下寻找资源,这种情况都是出现在高密度,以及低密度的手机上,比如说一部240×320像素的手机,如果设置android:anyDensity="false",Android系统会将240 x 320(低密度)转换为 320×480(中密度),这样的话,应用就会在小密度手机上加载mdpi文件中的资源。
小结:手机上最终显示APK的UI界面,则是根据布局资源文件中定义的控件大小(按手机的DPI,自身尺寸等来分类) 来换算出 即将画出每个控件的所占空间后,画出来显示,适配屏幕不难,但是比较繁琐,最终是能够调整到最优的UI界面。