前言

 

屏幕适配一直作为Android开发中的痛点,对于开发者来说,适配形色各异的手机屏幕确实很头疼,今天小编就目前主流的三种屏幕适配方法进行详细讲解,希望能给大家带来更好的选择。

一、屏幕适配是什么?

由于安卓系统的开放性,不同的厂家都可以根据自己的需要修改Android系统,手机屏幕尺寸也各不相同,对于用户来说可以有不同的选择,但是对于软件开发者而言确实很头痛,一个软件需要同时适配不同尺寸的屏幕,确保给用户带来更好的体验。

二、主流适配

1.宽高限定符适配

 宽高限定符适配也可以叫屏幕分辨率适配,需要在res文件下创建各种针对不同屏幕分辨率对应的values文件夹。

Android popupwindow最小宽度更改_安卓

当软件运行在手机上时,系统会根据手机的屏幕分辨率去找对应的values文件,如手机分别率是1280X800,这个时候系统就会加载values-1280x800的dimens文件,这样设计图上设计的控件在手机上显示就正常了。达到了适配的需求,简而言之就是,需要创建不同分辨率的文件夹,系统会根据当前手机的分辨率去加载对应文件。如果手机的分辨率种类太多,就会造成需要创建的文件较多,导致apk包变大。而且只有屏幕分辨率和文件完全匹配才能进行适配。

 

2.SmallestWidth适配

SmallestWidth适配可以称为最小宽度适配。不管屏幕是横屏还是竖屏,都会以最小的那一边作为宽度进行适配。

SmallestWidth适配是以dp为单位进行适配,如设计图宽度为375,以最小宽度进行换算。

Android popupwindow最小宽度更改_控件_02

Android popupwindow最小宽度更改_移动开发_03

当手机宽度为300dp时,设计图上为375dp时,将300dp等分为375份,每一份对应的就是0.8dp。当手机为720x300时就会引用sw300dp文件的dimens文件进行适配。如果当手机宽度为311dp时,系统如果找不到sw311dp文件,就会找最小最接近的文件进行适配sw310dp文件。这样确保即使遇到手机分辨率对应的文件不存在时,也能对屏幕进行适配。

 

3.今日头条适配

在屏幕适配时有一个公式为 dp = px/ density。

px: 像素,在分辨率1080*1920的屏幕,单位就是px,横屏上有1080个物理像素点,竖屏上有1920个物理像素点。

dp:单位,Android上计算控件宽高的单位。

density:每个手机上固定的值。为1dp所占有的像素点。

通常情况下,不同分辨率的手机对应的px不同,经过计算后的dp值也不同,这就出现同一个软件中的控件在不同的手机上对应的dp值不同。就会出现展示的差异。如果保证不同分辨率的手机能正常显示相同dp宽高的控件。动态改变density的值,确保px与density的比值不变。今日头条的适配方法就是通过改变density的值来确保控件在不同分辨率下依然能够正常显示。

 


总结

通过以上三种适配方法的简单对比,可以为开发者根据业务需求的不同进行选择。如有不对之处,欢迎批评指正。