我想找出设备的详细方向,最好是来自ActivityInfo
的SCREEN_ORIENTATION_LANDSCAPE
,SCREEN_ORIENTATION_PORTRAIT
,SCREEN_ORIENTATION_REVERSE_LANDSCAPE
,SCREEN_ORIENTATION_REVERSE_PORTRAIT
或类似产品之一。
StackOverflow上的一些答案包括
getWindowManager().getDefaultDisplay().getRotation()
但这并不能真正告诉我设备是处于纵向模式还是横向模式,只会告诉我它是如何参考其自然位置转动的--而自然位置首先可以是横向或纵向的。
getResources().getConfiguration().orientation
返回以下三个参数之一:ORIENTATION_LANDSCAPE
、ORIENTATION_PORTRAIT
、ORIENTATION_SQUARE
,它不会告诉我手机是朝哪个方向转动的(它是上下颠倒还是朝哪个方向转动)。
我知道我可以将后者与DisplayMetrics
结合使用来找出设备的自然方向,但真的没有更好的方法了吗?
发布于 2014-05-02 04:35:14
简单的方法是使用
getResources().getConfiguration().orientation
1表示纵向,2表示横向。
发布于 2013-03-25 19:32:01
public static int getScreenOrientation(Activity activity) {
int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
int orientation = activity.getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_270) {
return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
} else {
return ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
}
}
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90) {
return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
} else {
return ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
}
}
return ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
}
https://stackoverflow.com/questions/10380989
复制相似问题