本篇文章将解释什么是屏幕适配,为什么要屏幕适配,屏幕适配的本质,和如何解决屏幕适配上的问题。(小白也能看懂哦)

什么是屏幕适配?

    屏幕适配就是让某一个元素或者是APP中的UI界面在不同分辨率、不同尺寸的屏幕上展示出同样的显示效果,这就是屏幕适配。

为什么要屏幕适配?

  因为Android系统的开放性,造成了所有的用户都可以对Android进行定制,于是导致了很多不同的屏幕尺寸和不同的分辨率,这时候就要进行屏幕适配使得我们的APP在任何设备上都能给用户一个相同的体验。

屏幕适配的本质

想搞好屏幕适配首先要知道设备的尺寸和分辨率分别是多少,从而能够根据屏幕的配置让我们的布局和组件能够去自适应屏幕(也可以理解为兼容)

搞明白了上边的三个问题,我们接下来就来说说屏幕适配的解决方案。

布局适配:

       布局适配的解决方法就是使用相对布局禁用绝对布局。

开发中我们常用的布局有:线性布局、相对布局、帧布局和绝对布局,由于绝对布局适配性极差所以在我们在开发中很少用到绝对布局。

对于线性布局、相对布局和帧布局就需要根据需求进行选择,但是要知道他们的特性

相对布局:相对布局的子控件使用相对位置排列所以即使屏幕大小改变了,控件之间的相对位置都没有有变化,灵活性很强。
线性布局:虽然能够通过多层嵌套“LinearLayout”和组合使用“wrap_content”和“match_parent”已经可以构建出足够复杂的布局,但是线性布局不能准确的去控制子视图之间的位置关系只能简单的让控件一个个的排列,很不方便,也没有相对布局灵活。

所以,对于屏幕适配来说,使用相对布局将会是更好的解决方案。

布局组件适配:

 布局组件适配的意思就是让布局的组件能够去自适应屏幕,也就是说我们可以使用"wrap_content"、"match_parent"和"weight“来控制视图组件的宽度和高度。在这我来说一下这三个属性的含义。

wrap_content:使用这个属性的视图的宽和高会被设定成所需要的最小尺寸以此来适应视图中的内容。

match_parent:使用这个属性的视图的宽和高会充满整个父布局

weight:(权重),这个属性是线性布局里的一个独特的属性,首先使用这个属性对属性设置权重,然后按照比例对界面进行分配。

使用了这三个属性,你的布局里的控件要么只占用了控件本身占用的空间,要么就是占用了整个父布局,所以我们可以根据自身的需要让我们的空间去适应屏幕尺寸

图片资源适配:

图片资源适配就是让我们的图片资源在不同屏幕上显示相同的效果,要实现图片适配可以使用自动拉伸位图(Nine-Patch的图片类型)。

自动拉伸位图(Nine-Patch图片):后缀名是.9.png,它是一种被特殊处理过的PNG图片,设计时可以指定图片的拉伸区域和非拉伸区域;使用时,系统就会根据控件的大小自动地拉伸你想要拉伸的部分,需要注意的是必须要使用“.9.png”作为后缀名,因为系统就是根据这个来区别Nine-Patch图片和普通的png图片的。

这个方法使用的场景比较少,比如说我们在开发中给我们的按钮设置背景图片的时候就需要用到这个功能,因为普通的图片无法去根据我们的控件去均匀的拉伸或者是压缩我们的图片,而这个时候就可以使用自动拉伸位图去完成