1. 程式人生 > >Android 設定狀態列及Activity橫屏或豎屏。

Android 設定狀態列及Activity橫屏或豎屏。

設定橫屏或豎屏:
方法一:
在xml中新增android:screenOrientation屬性(portrait是縱向,landscape是橫向)

android:screenOrientation="portrait"
"unspecified"   預設值 由系統來判斷顯示方向.判定的策略是和裝置相關的,所以不同的裝置會有不同的顯示方向.
"landscape" 橫屏顯示(寬比高要長)
"portrait"  豎屏顯示(高比寬要長)

"user"  使用者當前首選的方向
"behind"    和該Activity下面的那個Activity的方向一致(在Activity堆疊中的)
"sensor"
有物理的感應器來決定。如果使用者旋轉裝置這螢幕會橫豎屏切換。 "nosensor" 忽略物理感應器,這樣就不會隨著使用者旋轉裝置而更改了 ( "unspecified"設定除外 )。

方法二:
重寫Activity的onResume方法

@Override
protected void onResume() {
 /**
  * 設定為橫屏
  */
 if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
  setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
 }
 super
.onResume(); }

設定全屏(縮排隱藏狀態列,同時用才有效果):

requestWindowFeature(Window.FEATURE_NO_TITLE);//隱藏標題欄 在setContentView之前用.
setContentView(R.layout.activity_main);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);//設定全屏

縮排隱藏狀態列

getWindow().setFlags
(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

透明狀態列

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

透明導航欄

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

注意:部分手機底部有虛擬按鍵,如果想達到沉浸狀態列的效果,可以將狀態列設定透明,底部導航欄不設定,這樣就不會和虛擬按鍵衝突。
更多點這裡 Android動態顯示和隱藏狀態列
Android App 隱藏標題欄+狀態列+導航欄