Android面试专题Android学习安卓屏幕适配

安卓学习 --- 安卓屏幕适配

2017-03-06  本文已影响598人  Zero零夜

这个知识点已经有很多人写过相应的博客,但是自己一直没有能够深入的理解,最近终于抽出时间,决定把这个问题彻底的梳理清楚,这篇文章以安卓适配作为最终目的,一些基础知识的概念需要自己去百度这里就不再细说,毕竟知识只有使用才能发挥他的价值。

一、基本单位

首先介绍基本单位,这四个单位是必须要理解的,也是互相关联的,请注意他们之间的关联性。

二、dp和屏幕适配

从上面对dp的形象解释,我们就知道了,为什么安卓要用dp作为单位,而不是px。接下来,还有几个概念需要解释:

三、屏幕适配

理解了上面的概念,我们就明白了为什么安卓的适配难,因为有不同的尺寸和不同的分辨率,这个不同尺寸不同分辨率的组合出来的dpi,导致了安卓手机屏幕碎片化,那么我们要解决的就是如何让同样一张图片,在不同的屏幕上,看起来都一样大小,这里的一样大小指的是比例一样大,比如在10801920的5寸屏幕上占了屏幕的一半,那么在10801920的5.5寸屏幕上也占一半,在1280*720的5寸屏幕上还是占了屏幕的一半,这就是我们最重要达到的目标。
在安卓机还没有碎片化到如此地步的时候,谷歌官方推出了dp这个概念,但是明白dp适配原理的开发者都知道,dp只能适配四种屏幕,就是所谓的ldpi,mdpi,xdpi,xxdpi,甚至xxxdpi(这里l代表low,m代表middle,可以帮助记忆这四种尺寸的顺序),而现在各种碎片化,导致dp的适配并不那么准确,也因此我们有了如下方案。

dp_file.png dp_content.png

嗯,对的,就是给每一个常用分辨率设置一个dimen文件,当app运行的时候,就会自动去寻找对应分辨率下面的dimen文件,从第二张图我们可以看出,dimen单位命名是1080,也就是说,我只需要一套1080的图,就能够适配几乎所有的屏幕,那么大家要问了,这么多文件难道都是自己手写么,显然不是,身为一个程序员,全部自己手写简直太傻了,这里我是使用了一个可以自动生成适配文件的jar文件,并用.bat执行,可以生成,具体的适配工具已经上传到github,可以从github上下载https://github.com/ZeroNightStr/AndroidDimensTools

这个方案是我的朋友给我的解决方案,目前使用良好,所以想推荐给大家, 在写博客的过程中,为了查找一些资料,找到了鸿神的博客,发现他的解决方案和我的很相似,但是鸿神是用的生成value-1080*720+px这种方案,这里我用的是生成value-w1080dp+dp的方案,目前使用感觉良好。

四、注意点

1、多套图片
有了以上方案,可以让图片适配,但是我们还是建议两套图或者三套图,为什么?因为dp会拉伸或者缩小图片,影响图片的像素点数,导致图片模糊或者失真,极限想象一下,50px的图被拉伸成500px,肯定会有影响,所以为了防止这样的情况,有必要使用多套图片。

2、横屏竖屏
这个方法只适用于竖屏,对于横屏没办法适配,可以自己参考这个思路制作横屏适配。

3、文字适配
我使用的适配工具也生成了sp的适配,但是文字适配在实际使用过程中并不理想,给文字使用sp,在不同手机上字体大小是一样的,在小分辨率手机上文字占了一半,但是可能在大屏幕手机上就占了四分之一,用sp一直是谷歌官方建议,我也一直遵循这个建议,但是发现无法成功适配,于是做了测试,发现用dp反而能够好的让文字按照百分比适配,所以目前我的方案就是,用dp设置文字。

下面是使用sp设置图片的效果,可以明显看出一个基本占满整个屏幕,一个还留有一部分空隙

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="你好"
        android:textSize="150sp"
        />
720*1280.png 1080*1920.png

那么我们尝试使用生成的适配dp作为单位呢?

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="你好"
        android:textSize="@dimen/dp1080_530"
        />
dp01.png dp02.png

可以看到使用dp的时候比例是一样的,所以目前文字的适配,我使用的是dp,当然我不知道这样有什么影响,不过目前来说很好用。

上一篇下一篇

猜你喜欢

热点阅读