3 回答

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
此方法可以幫助:-
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貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
好吧,您可以找出@Urboss所說的當(dāng)前方向是什么。您無法以這種方式獲取布局(橫向/縱向),因此您必須獲取屏幕寬度/高度才能檢查當(dāng)前(是否已更改,但您已經(jīng)檢查過;))位置是否為橫向?;蛐は瘢?/p>
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
wPix = dm.widthPixels;
hPix = dm.heightPixels;
(因此,如果旋轉(zhuǎn)角度為0,并且您獲得的景觀水平高于metrix,則您的設(shè)備為默認(rèn)水平景觀。如果旋轉(zhuǎn)角度為90度并且您是縱向的,則默認(rèn)情況下也為水平景觀,依此類推)

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
經(jīng)過數(shù)小時(shí)的嘗試來解決這個(gè)問題。這是不可能的。但是,您最能做的是將方向設(shè)置為“ NOSENSOR”
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
這將把您的應(yīng)用程序設(shè)置為設(shè)備的自然方向。此時(shí),您可以使用DisplayMetrics類獲取顯示的高度和寬度,并計(jì)算您是橫向還是縱向。然后確定是橫向還是縱向后,即可執(zhí)行此操作
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_XXXXX);
其中XXXX是LANDSCAPE或PORTRAIT。
如果您有滑出式鍵盤,則可能無法執(zhí)行此操作。
- 3 回答
- 0 關(guān)注
- 823 瀏覽
添加回答
舉報(bào)