对于大多数的情况并不需要做如上的操作,所以需要谨慎使用这个行文,毕竟最好的
行为也并不适用于所有情况,如果应用的不好反而会给程序带来不必要的麻烦。
如果要彻底禁止翻转,可以设置 android:screenOrientaon 的属性为 nosensor,如此就
可以忽略重力感应带来的麻烦了。不过不知道为什么,在模拟器上不管用,听别人说在真
机上是正确的,我没有真机,等有了真机再试试看。
Android 横竖屏切换的问题
一、禁止横竖屏转换
Android 横竖屏切换在手机开发中比较常见,很多软件在开发过程中为了避免横竖屏
切换时引发不必要的麻烦,通常禁止掉横竖屏的切换,
通过在 AndroidManifest.xml 中设置 activity 中的 android:screenOrientation 属
性值来实现。
比如下列设置
android:screenOrientation="portrait"
则无论手机如何变动,拥有这个属性的 activity 都将是竖屏显示。
android:screenOrientation="landscape",为横屏显示。
上述修改也可以在 Java 代码中通过类似如下代码来设置
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
另外,android 中每次屏幕的切换动会重启 Activity,所以应该在 Activity 销毁前保
存当前活动的状态,在 Activity 再次 Create 的时候载入配置,那样,进行中的游戏就不
会自动重启了!
二、横竖屏切换
如果要让软件在横竖屏之间切换,由于横竖屏的高宽会发生转换,有可能会要求不同
的布局。可以通过以下两种方法来切换布局:
1)在 res 目录下建立 layout-land 和 layout-port 目录,相应的 layout 文件名不变,
比如 main.xml。layout-land 是横屏的 layout,layout-port 是竖屏的 layout,其他的不
用管,横竖屏切换时程序为调用 Activity 的 onCreate 方法,从而加载相应的布局。
2)假如布局资源不按照如上设置,则可以通过 java 代码来判断当前是横屏还是竖屏
然后来加载相应的 xml 布局文件。因为当屏幕变为横屏的时候,系统会重新呼叫当前
Activity 的 onCreate 方法,你可以把以下方法放在你的 onCreate 中来检查当前的方向,然
后可以让你的 setContentView 来载入不同的 layout xml。
if(this.getResources().getConguration().orientation==Conguration.ORIE
NTATION_LANDSCAPE)
{
Log.i("info", "landscape"); // 横屏
} else
if(this.getResources().getConguration().orientation==Conguration.ORIENTA
TION_PORTRAIT)
{
Log.i("info", "portrait"); // 竖屏
}
三、通过 onConguraonChanged 拦截横竖屏变换
按照二的操作,Activity 每次横竖屏切换都会重新调用 onPause-> onStop->
onDestory-> onCreate->onStart->onResume,为此涉及到内容和数据的保存和读