屏幕适配

     缘由:我当时刚开始做android的时候,我接触过不同的人,也看到网络上看到的别人的问答。我发现,他们在一些认识上是错误的。

我这篇文章,权当作自己的复习,和方便其他人学习。

基本概念:

1.分辨率:

1920x1080,1280x720。它表示的是,在一个固定的屏幕尺寸下,该屏幕包含的像素数量。注意,这里有个条件,是在一个固定的屏幕尺寸下来考虑的。

千万不要忘记这个条件,屏幕尺寸。

问题:4.3英寸,1280*720;与5.5英寸1280*720,两者的屏幕清晰度,是谁更大---答案,是4.3英寸的。

通常,平时大家在说,分辨率越大,那么清晰度越大,然后,你认真细究细节,你会发现,其实他们不太清楚。在一个固定尺寸下,比如是4.3英寸,那么,分辨率越大,

的确是屏幕清晰度越大;但是,如果,分辨率在变大的时候,屏幕尺寸也在变大,那么,清晰度就未必会越清晰了。

-----如此,分辨率不是描述屏幕清晰度的单位。平时人们在说分辨率越大,越清晰时,必须要加一个条件,那就是,在一个固定的尺寸下。

2.屏幕密度(Density)

屏幕上每英寸拥有的像素数量(Pixels Per Inch)。

每英寸拥有的像素数量越多,屏幕就越清晰。这个才是衡量屏幕是否清晰的单位。

计算公式(来自维基百科):

要计算显示器的每英寸像素值,首先要确定屏幕的尺寸和分辨率

PPI = frac{d_p}{d_i} = frac{sqrt{w_p^2 + h_p^2}}{d_i}

其中,

  • d_p为屏幕对角线的分辨率
  • w_p为屏幕横向分辨率
  • h_p为屏幕纵向分辨率
  • d_i为屏幕对角线的长度(单位为英寸)。

---上述公式,你无需记住它,根据上述公式可以知道,是屏幕的尺寸和屏幕的分辨率二者的比值决定了一个屏幕的密度,也就是屏幕的清晰度。

上述公式表示的意思,就是每英寸的像素数量。所以,在考虑清晰程度的时候,是要用屏幕密度去衡量。

这两个概念,先搞清楚,才去搞屏幕适配,才去搞Android是怎样处理不同屏幕下图片的渲染。

关于android如何适配多种屏幕,可以阅读这篇文章http://developer.android.com/guide/practices/screens_support.html

-----结合实际,个人的总结:

    要关注是这张图:

      图片适配方面:

     1.在开发的时候,先让美工按照某种屏幕来做UI。通常,按照最大的屏幕密度来说xhdpi。做好之后,图片放在xhdpi。

原因:使用dp来定义UI的宽度,当程序运行在低的屏幕密度手机上时,系统会缩小图片(高清晰往低缩小),从而来达到适配的效果,保证在不同屏幕上,用户看起来该图片的物理大小是一样的。

     2.然后,在开发时候,按照某种固定的屏幕进行开发。设定各种宽度,高度的时候,使用dp来设定,确保在不同屏幕上,看到的物理大小是一样的。

    

     屏幕尺寸方面:

     1.要花心思的话,的确是可以按照上述图片所述的,在不同的屏幕尺寸上设定,small, normal, large, xlarge。但是,实际上,不会这么做。选定normal的,然后,

采用scrollview的方式,进行处理。

     2.如果是要考虑xlarge,large这种的,那么,就只能专门去考虑它了。把它纳入考虑的范围。

     其它方面的技巧,像是使用wrap_content,match_parent之类的;如何在多种屏幕上进行测试,在这篇文章http://developer.android.com/guide/practices/screens_support.html有描述。

版权声明:
作者:ttylinux
         
本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/ttylinux/p/3757930.html