Android竖屏切换在手机开发中很常见。为了避免竖屏切换带来不必要的麻烦,很多软件通常会禁止竖屏切换。
这是通过在AndroidManifest.xml的活动中设置android:screenOrientation属性的值来实现的
例如以下设置
android:screenOrientation= "纵向"
无论手机如何变化,具有该属性的活动都会是竖屏显示。
Android:screen orientation = " landscape ",这是一个水平显示。
上面的修改也可以通过类似下面的代码在Java代码中设置。
setrequesteorientation(activity info。屏幕_方向_横向)
另外,android中每一次屏幕切换都会重启活动,所以你要在活动被破坏前保存当前活动的状态,在活动再次创建时加载配置,这样进行中的游戏就不会自动重启了!
二、横屏和竖屏切换
如果您希望软件在水平和垂直屏幕之间切换,可能需要不同的布局,因为水平和垂直屏幕的高度和宽度会发生变化。您可以通过以下两种方式切换布局:
1)在res目录下创建layout-land和layout-port目录,对应的布局文件名保持不变,比如main.xml. layout-land是横屏的布局,Layout,layout-port是竖屏的布局,其余的不需要。当水平和垂直屏幕切换时,程序调用Activity的onCreate方法,从而加载相应的布局。
2)如果布局资源没有如上设置,可以通过java代码判断当前屏幕是水平还是垂直,然后加载相应的xml布局文件。因为当屏幕变成横向时,系统会再次调用当前活动的onCreate方法。可以在onCreate中放入以下方法来检查当前方向,然后可以让setContentView加载不同的布局xml。
if(this.getResources()。getConfiguration()。方位= =配置。方向_横向)
{
Log.i("info "," landscape ");//水平屏幕
} else if(this.getResources()。getConfiguration()。方位= =配置。方向_纵向)
{
Log.i("info "," portrait ");//垂直屏幕
}
第三,通过onConfigurationChanged拦截横竖屏变换。
根据第二个操作,活动将调用onPause-& gt;onStop-& gt;onde story-& gt;onCreate-& gt;onStart-& gt;OnResume,为此涉及到内容和数据的存储和读取,否则屏幕切换前的内容就会消失。很多时候,这样的结果让程序变得繁琐。为此,Android提供了在manifest中设置android:configChanges属性,这样活动就不会继续上面的重建过程。在Android项目的Mainfest.xml中配置activity:Android:config changes = " keyboard hidden | orientation"。横竖屏切换后,不会执行OnCreat函数,但会调用onConfigurationChanged(),这样就可以控制横竖屏了。用户可以在活动或视图的OnConfigurationChanged(配置新配置)函数中获取当前屏幕参数。至于它的调用顺序,类似于touch time的传输顺序,但是它没有消费事件的概念,会依次调用每个onConfigurationChanged函数。
您需要重写Activity的onConfigurationChanged方法。实现方法如下,没有太多内容:
@覆盖
public void onConfigurationChanged(配置新配置){
super . onconfigurationchanged(new config);
if (this.getResources()。getConfiguration()。方位==配置。方向_横向){
//土地什么都不做就可以了
} else if (this.getResources()。getConfiguration()。方位==配置。ORIENTATION_PORTRAIT) {
//端口什么都不做就可以了
}
}
需要注意的是,onConfigurationChanged函数中只能获得横竖屏切换后的参数,而新的布局以及控件的大小和位置信息在该函数中无法获得。如果要处理大小和位置信息,必须通过消息异步调用或延迟。
第四,完全禁止翻转
当然,如果想彻底禁止翻转,可以将android:screenOrientation的属性设置为nosensor,这样就可以忽略重力感应带来的麻烦。但是在模拟器上不行,在真机上是正确的。
这里有个小知识。在Android模拟器中,快捷键“Ctrl+F11/F12”可以实现屏幕切换。
第五,适应性转换
想让它横屏启动就横屏显示,竖屏显示就竖屏显示,然后手机在横屏和竖屏切换的时候就不能用了。如何解决这个问题?
第一:在Mainfest.xml中追加。
Android:screen orientation = " sensor " Android:config changes = " orientation | keyboard hidden "
这两个属性。