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"/>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章