猪头小队长 on November 18th, 2008

Android手机有两种手持方式,通俗的说,就是横着拿和竖着拿。那么在Android系统中,如何识别是哪种手持方式来决定屏幕的布局呢?
在程序的res目录下有一个layout目录,也就是res/layout/,有关于布局的东西在这里面描述。如果是竖着拿,那么会自动寻找res/layout-port(port意即portrait)目录作为缺省布局,如果是横着拿,那么会用res/layout-land(land意即landscape)目录作为缺省布局。这样,就可以为两种屏幕尺寸定义不同的布局方式了。
如果在res目录下,既有layout,也有layout-port、layout-land,那么在横着用的时候,会用哪个捏,是layout-land。如果layou-land没有,才会使用layout。
针对不同的屏幕尺寸,除了在布局上会有不同之外,在操作上也可能会用不同,那么在操作时如何识别两种尺寸捏?可以通过这个方法来判断屏幕的方向:

Context.getResources().getConfiguration().orientation

这里的Context,是Activity的超类,也就是在Activity中直接用getResources()..就可以了,和通常的获得图片等resource的方式是一样的,可能的值有:

Configuration.ORIENTATION_PORTRAIT 也就是竖着
Configuration.ORIENTATION_LANDSCAPE 也就是横着
Configuration.ORIENTATION_SQUARE 方的?不清楚
Configuration.ORIENTATION_UNDEFINED

Continue reading about 如何使程序自动适应屏幕的尺寸?