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"/>