检查手机方向是否更改而不更改布局

时间:2014-04-07 14:48:54

标签: android orientation

我想完成以下任务:

  1. 当我将手机变为横向模式时,我希望启动一项活动。
  2. 当我再次将其转回纵向模式时,我希望再次关闭该活动。
  3. 本质上我想知道我的方向何时改变,但不改变布局。这可能吗?

2 个答案:

答案 0 :(得分:0)

我不是100%肯定你在问什么,因为1和2并不等同于你的最后一个问题。无论哪种方式,您正在寻找的答案都是onConfigurationChanged。

如果您已经有一项活动正在运行,您可以告诉AndroidManfest中您想要处理轮换的Android。然后重写onConfigurationChange以启动新活动。在该活动中还告诉android你想要处理配置更改,并且在ondonfigurationchange中它可以调用finish()来返回上一个活动。

请参阅: Android Activity onConfigurationCjhanged

将此代码放入Android清单中以进行活动:

<activity android:name=".MyActivity" android:label="@string/appName"
                android:configChanges="orientation|keyboard|keyboardHidden">

答案 1 :(得分:0)

Android Developer Guide here

以下清单代码声明了一个处理屏幕方向更改和键盘可用性更改的活动:

<activity android:name=".MyActivity"
          android:configChanges="orientation|keyboardHidden|screenSize"
          android:label="@string/app_name">

现在,当其中一个配置发生更改时,您的活动不会重新启动。相反,您的活动会收到对onConfigurationChanged()的调用。

以下onConfigurationChanged()实施检查当前设备方向:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
        //call new Activity here  
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
    }
}