Android 的不同尺寸图片和布局(手机)

应对繁多的分辨率和尺寸。

图片的话,Android 是用 dpi 作为单位,你随便选择一个图片,在Win下面右键就会看到以dpi为单位的属性,dpi越高图片也就越精细。对于手机或显示设备来说,一个像素就是一个点,所以dpi=ppi,反过来,经常说的手机屏幕ppi高低数字等同于写程序时候考虑的dpi数值。

iPhone4的视网膜屏幕是326ppi,属于ldpi mdpi hdpi xhdpi的最后xhdpi(大约320ppi),后来的Android手机大抵也都这个数值,往上也没什么意义,反正你眼睛看不出来,处于能省尽量省的原则,图片都用xhdpi算了,低ppi的手机自个儿系统处理的了。

然后是布局,布局 4寸左右是normal,4寸到7寸是large(这些都是估算而已)。根据公式 px = dp * (dpi / 160)

和原则上 

  • large screens are at least 640dp x 480dp
  • normal screens are at least 470dp x 320dp

你计算下,normal的分辨率起码是宽 2*dpi,4.65寸,720p分辨率的galaxy nexus是315ppi,宽应该为起码 630,而720p的宽 720 正好符合。

再计算下 large,宽为3*dpi,连galaxy nexus都达不到要求。能达到要求的基本都是7寸+的平板。

所以手机来说,同一种高宽比的话你只要写normal的布局。

加上之前文章说的,分辨率有未来主流的16:9和当下主流的15:9 两种。

手机布局应该写2个,但是当下貌似没有办法(除非代码里判断)根据高宽比选择特定布局。

当然与其说是布局,还不如说是布局里面的图片的选择,用同一个图片资源,在2个不同的高宽比屏幕上有一定的差异,所以只能用到.9.png来处理。

Android 3 和 4 引入的新布局机制,比如 sw600dp,是给平板用的,跟手机木有关系。

结论就是:

res/layout/my_layout.xml            

res/drawable-xhdpi/my_icon.png      

16:9和15:9用.9.png来处理

Google 本意是想一个apk同时跑在手机和平板上,方便共用代码,但是我感觉明显同样的程序手机和平板的功能肯定会有不同的,大屏幕的可能性要比小屏幕大吧,而且各种界面布局+代码都有,放一个项目里反而感觉乱,还不如 iOS 那种平板的应用出个专门的 HD 版本。这种混合的策略很容易导致手机版本被装上平板,然后就碰到了难看变形的界面(我知道是可以声明针对特定屏幕,但是人家不一定会设置的,其中又牵扯到 Screen Compatibility Mode),这样的体验很糟糕的。

参考:http://developer.android.com/guide/practices/screens_support.html

你可能感兴趣的:(ios,android,Google,iPhone,手机)