如何查找设备方向是否与屏幕方向相同

时间:2016-10-31 09:17:24

标签: android

使用

@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();
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
    }
}

我可以找到布局的方向。现在我想以某种方式锁定我的布局,例如setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);并查找真正的手机方向(布局设置为纵向,但用户出于某种原因将其设备保存在横向中)

1 个答案:

答案 0 :(得分:0)

您有2个选项。

  • 使用配置更改:
  

Manifiest

<activity android:name=".HelloAndroid"
android:label="@string/app_name"
android:configChanges="orientation">
  

在您的代码中

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.main);      
    // TODO
}

您必须覆盖此方法。

Here是一个很好的处理运行时更改教程。

修改

试试这个:

if (this.getWindow().getWindowManager().getDefaultDisplay()
     .getOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
     // portrait mode
} else if (this.getWindow().getWindowManager().getDefaultDisplay()
     .getOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
     // landscape
}

我已经通过这种方式进行了测试,它对我有用。