3 回答
TA贡献1878条经验 获得超4个赞
此方法可以帮助:-
public int getDeviceDefaultOrientation() {
WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Configuration config = getResources().getConfiguration();
int rotation = windowManager.getDefaultDisplay().getRotation();
if ( ((rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) &&
config.orientation == Configuration.ORIENTATION_LANDSCAPE)
|| ((rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270) &&
config.orientation == Configuration.ORIENTATION_PORTRAIT)) {
return Configuration.ORIENTATION_LANDSCAPE;
} else {
return Configuration.ORIENTATION_PORTRAIT;
}
}
TA贡献1818条经验 获得超3个赞
好吧,您可以找出@Urboss所说的当前方向是什么。您无法以这种方式获取布局(横向/纵向),因此您必须获取屏幕宽度/高度才能检查当前(是否已更改,但您已经检查过;))位置是否为横向。或肖像:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
wPix = dm.widthPixels;
hPix = dm.heightPixels;
(因此,如果旋转角度为0,并且您获得的景观水平高于metrix,则您的设备为默认水平景观。如果旋转角度为90度并且您是纵向的,则默认情况下也为水平景观,依此类推)
TA贡献1860条经验 获得超9个赞
经过数小时的尝试来解决这个问题。这是不可能的。但是,您最能做的是将方向设置为“ NOSENSOR”
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
这将把您的应用程序设置为设备的自然方向。此时,您可以使用DisplayMetrics类获取显示的高度和宽度,并计算您是横向还是纵向。然后确定是横向还是纵向后,即可执行此操作
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_XXXXX);
其中XXXX是LANDSCAPE或PORTRAIT。
如果您有滑出式键盘,则可能无法执行此操作。
- 3 回答
- 0 关注
- 771 浏览
添加回答
举报