package cn.com.demo.demoacivity ;
import android.app.Activity;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
public class DemoAcivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getSupportActionBar() != null)
getSupportActionBar().hide();
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus)
setGeneralView(this);
}
/**
* SYSTEM_UI_FLAG_VISIBLE :状态栏和Activity共存,Activity不全屏显示。
* 也就是应用平常的显示画面
*
* SYSTEM_UI_FLAG_LOW_PROFILE:设置状态栏和导航栏中的图标变小,变模糊或者弱化其效果
*
* SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION: 将布局内容拓展到导航栏的后面
*
* SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏导航栏,
* 点击屏幕任意区域,导航栏将重新出现,并且不会自动消失
*
* View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN: 将布局内容拓展到状态栏的后面
*
* SYSTEM_UI_FLAG_FULLSCREEN:隐藏状态栏,需要从状态栏位置下拉才会出现。
*
* View.SYSTEM_UI_FLAG_LAYOUT_STABLE:稳定布局,
* 主要是在全屏和非全屏切换时,布局不要有大的变化。
* 一般和View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN、
* View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION搭配使用。
* 同时,android:fitsSystemWindows要设置为true(默认设置即是true)。
*
* View.SYSTEM_UI_FLAG_IMMERSIVE:使状态栏和导航栏真正的进入沉浸模式,即全屏模式,
* 如果没有设置这个标志,设置全屏时,我们点击屏幕的任意位置,
* 就会恢复为正常模式。所以,View.SYSTEM_UI_FLAG_IMMERSIVE都是
* 配合View.SYSTEM_UI_FLAG_FULLSCREEN
* 和View.SYSTEM_UI_FLAG_HIDE_NAVIGATION一起使用的。
*
* View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY:它的效果跟View.SYSTEM_UI_FLAG_IMMERSIVE一样。
* 但是,它在全屏模式下,用户上下拉状态栏或者导航栏时,
* 这些系统栏只是以半透明的状态显示出来,并且在一定时间后会自动消失。
*/
/**
* 设置透明状态栏,导航栏效果
*/
public static boolean setTransparentView(Activity activity) {
if (Build.VERSION.SDK_INT < 21)
return false;
activity.getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
activity.getWindow().setNavigationBarColor(Color.TRANSPARENT);
return true;
}
/**
* 设置为沉浸模式
*/
public static boolean setImmersiveView(Activity activity) {
if (Build.VERSION.SDK_INT < 19)
return false;
activity.getWindow().getDecorView().setSystemUiVisibility(
//activity layout 入侵状态栏,导航栏
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
//隐藏状态栏,导航栏功能
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
return true;
}
/**
* 沉浸模式但状态栏透明显示
*/
public static boolean setGeneralView(Activity activity) {
if (Build.VERSION.SDK_INT < 21)
return false;
activity.getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
return true;
}
}
Android 透明状态栏,沉浸式状态栏
猜你喜欢
转载自blog.csdn.net/baidu_41743921/article/details/81158922
今日推荐
周排行