Android屏幕相關設置

博客導航

Android橫屏顯示

方案一:AndroidManifest.xml中配置裏面設置
設置activity的android:screenOrientation屬性。
“unspecified”:默認值 由系統來判斷顯示方向.判定的策略是和設備相關的,所以不同的設備會有不同的顯示方向.
“landscape”:橫屏顯示(寬比高要長)
“portrait”:豎屏顯示(高比寬要長)
“user”:用戶當前首選的方向
“behind”:和該Activity下面的那個Activity的方向一致(在Activity堆棧中的)
“sensor”:有物理的感應器來決定。如果用戶旋轉設備這屏幕會橫豎屏切換。根據物理傳感器方向轉動,用戶90度、180度、270度旋轉手機方向,activity都更着變化,會重啓activity(無論系統是否設置爲自動轉屏,activity頁面都會跟隨傳感器而轉屏)
“nosensor”:忽略物理感應器,這樣就不會隨着用戶旋轉設備而更改了("unspecified"設置除外)。旋轉設備時候,界面不會跟着旋轉。初始化界面方向由系統控制(無論系統是否設置爲自動轉屏,activity頁面都不會轉屏)
sensorLandscape,橫屏旋轉,就是可以上下旋轉,有兩個方向,不會重啓activity
sensorPortrait,豎屏旋轉,就是可以上下旋轉,有兩個方向,不會重啓activity
reverseLandscape,與正常的橫向方向相反顯示(反向橫屏)
reversePortrait,與正常的縱向方向相反顯示(反向豎屏)

方案二:代碼設置
activity裏面在setContentView()方法之前設置
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);它會調至默認的橫屏方向。

if(this.getResources().getConfiguration().orientation ==Configuration.ORIENTATION_PORTRAIT){
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}

全屏顯示

方案一:代碼設置
activity裏面的onCreate()裏面設置

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

加強版

private void hideStatusNavigationBar(){  
    if(Build.VERSION.SDK_INT<16){  
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
                WindowManager.LayoutParams.FLAG_FULLSCREEN);  
    }else{  
        int uiFlags = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION  
                | View.SYSTEM_UI_FLAG_FULLSCREEN //hide statusBar  
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; //hide navigationBar  
        getWindow().getDecorView().setSystemUiVisibility(uiFlags);  
    }  
}

private void hideNavigationBar() {  
    View decorView = getWindow().getDecorView();  
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION  
            | View.SYSTEM_UI_FLAG_FULLSCREEN;  
    decorView.setSystemUiVisibility(uiOptions);  
}  
  
private void showNavigationBar() {  
    View decorView = getWindow().getDecorView();  
    int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;  
    decorView.setSystemUiVisibility(uiOptions);  
}

private void setSystemUIVisible(boolean show) {  
    if (show) {  
        int uiFlags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE;  
        uiFlags |= 0x00001000;  
        getWindow().getDecorView().setSystemUiVisibility(uiFlags);  
    } else {  
        int uiFlags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE  
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION  
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION  
                | View.SYSTEM_UI_FLAG_FULLSCREEN;  
        uiFlags |= 0x00001000;  
        getWindow().getDecorView().setSystemUiVisibility(uiFlags);  
    }  
}

Attr Des
SYSTEM_UI_FLAG_VISIBLE 顯示狀態欄和導航欄
SYSTEM_UI_FLAG_LOW_PROFILE 此模式下,狀態欄的圖標可能是暗的
SYSTEM_UI_FLAG_HIDE_NAVIGATION 隱藏導航欄
SYSTEM_UI_FLAG_FULLSCREEN 全屏,隱藏狀態欄和導航欄
SYSTEM_UI_FLAG_LAYOUT_STABLE
SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 全屏,隱藏導航欄,狀態欄浮在佈局上
SYSTEM_UI_FLAG_IMMERSIVE 沉浸式:半透明的狀態欄和導航欄
SYSTEM_UI_FLAG_IMMERSIVE_STICKY 粘性沉浸式

方案二:AndroidManifest.xml中配置裏面設置

<activity
            android:name="MyActivity"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章