我试过这个,不行,我总是有0度
Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int screenOrientation = display.getRotation();
如果使用SensorManager,它也不起作用,因为如果我不移动手机就不会触发
mOrientationEventListener = new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL) {
@Override
public void onOrientationChanged(int orientation) {
}
};
更新
请尝试完整演示
https://github.com/sochap/getorientationquestdemo
由于显示未更改,请使用display确定不可能
我将获得设备方向,而不是显示方向
OrientationEventListener
可以使用,但不能在onCreate
答案 0 :(得分:1)
这可能对你有用。试试这个。
Configuration config = getResources().getConfiguration();
if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// set Values for landscape
} else if (config.orientation == Configuration.ORIENTATION_PORTRAIT) {
// set Values for portrait
}
答案 1 :(得分:0)
尝试
int currentOrientation = getResources().getConfiguration().orientation;
if (currentOrientation == Configuration.ORIENTATION_PORTRAIT) {
//do something
} else {
//do something
}
答案 2 :(得分:-1)
使用Activity的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();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
您还必须编辑清单文件中的相应元素以包含android:configChanges只需看下面的代码:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
注意:对于Android 3.2(API级别13)或更高版本,当设备在纵向和横向之间切换时,“屏幕尺寸”也会发生变化。因此,如果您想在开发API级别13或更高级别时因为方向更改而阻止运行时重新启动,则必须为API级别13或更高级别设置decalare android:configChanges =“orientation | screenSize”。
希望这会对你有所帮助.. :)