android 适配原理

作者: 奋斗的犇犇 | 来源:发表于2017-02-18 10:05 被阅读144次

    首先介绍几个概念

    屏幕分辨率

    屏幕分辨率不是一个屏幕的概念,是手机屏幕宽度和高度两个方向上的像素点的总和,单位是像素(pixel), 1px=1个像素点,例子,htcdr6w手机是5寸的手机,宽1080,高1920。他的分辨率要这样表示,1080x1920,含义宽度方向上有1080个像素点,高度方向上有1920个像素点。

    像素密度

    密度,即每英寸像素点的个数,单位dpi(注意,dpi),android开发中google规定
    mdpi---160dpi(每英寸160dpi)
    hdpi---240dpi(mdpi x 1.5)
    xhdpi---320dpi(mdpi x 2)
    xxhdpi---480dpi(mdpi x 3)
    xxxhdpi---640dpi(mdpi x 4)
    如何计算你自己手机的每英寸的像素点的个数即每英寸的像素
    如果你的手机是1080 x 1920
    1,先按照初中所学的求正方形对角线的公式(勾股定理)求出对角线的的像素
    y=长的平方 +宽的平方
    再对y值开根号,得到w
    2,用w除以你的手机的尺寸,比如 5英寸的手机就可以得到你的手机每英寸额像素点的个数了,就是你的手机每英寸的像素

    android 屏幕密度(与像素无关,单位为 dp)

    这也是我们android xml文件中使用dp就可以适配不同屏幕的原因。
    举个例子
    最早的android手机的分辨率为320 x 480
    通过计算像素密度可以得到,该分辨率的手机的每英寸的像素为160dpi,在这个像素密度下,1dp=1px,即在320 x 480的手机分辨率上,1dp=1px。
    其他的如下:
    160dpi,1dp=1px;
    240dpi,1dp=1.5px;
    320dpi,1dp=2px;
    480dpi,1dp=3px;
    640dpi,1dp=4px;
    这样在android 开发中xml文件中使用dp为单位,就可以适应不同分辨率的手机
    再次,加深记忆,手机分辨率是指手机屏幕长,宽方向上的像素点的个数;像素密度是每英寸有多少像素点,屏幕密度与像素无关自适应,当在320 x 480的屏幕分辨率上时 1dp=1px。

    和px,dp没有关系的sp

    Scale Indelpendent Pixels,既 sp
    android 开发中,用此单位设置文字大小。

    图片适配

    在设计图时,对于不同像素密度的应该有对应的图片大小,我记得第一次负责整个项目时,不太懂和美工说做多大的图,我就瞎点,哎,当我们新建一个工程时,有默认的ic_launcher,然后把它复制出来,到桌面上,右键属性--详细信息,就会出现图片的像素大小。那个就是美工用ps等工具做图的大小。
    mdpi(48x48)
    hdpi(72x72)
    xhdpi(96x96)
    xxhdpi(144x144)
    xxxhdpi(192x192)

    就写到这里吧,这些东西在开发中没卵用,但是面试有时候会问到,比如:
    请问你知道对于不同的分辨率的手机google对于像素密度的规则是什么。
    你知道dp吗,和px有啥区别。
    像素密度和屏幕密度的区别。
    dp和dpi有啥区别。
    ...
    等等,大同小异。
    本文到此结束希望对初学android的人有所帮助。大神请绕道,毕竟大神面试基本不会问这些,啊哈哈。

    相关文章

      网友评论

        本文标题:android 适配原理

        本文链接:https://www.haomeiwen.com/subject/hbokwttx.html