/**
* 设置沉浸式效果
*/
public void setImmersionStyle() {
//只对api18以下版本设置全屏模式 低于19以下是不能修改的
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR2) {
setFullscreen();
} else if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1 && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//小于22大于等于19
Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
if (true) {
winParams.flags |= bits;
} else {
winParams.flags &= ~bits;
}
win.setAttributes(winParams);
//为状态栏着色
SystemBarTintManager tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
tintManager.setStatusBarTintResource(R.color.top_bg_color);
}
//大于等于23
/**
* 设置全屏
*/
public void setFullscreen() {
requestWindowFeature(Window.FEATURE_NO_TITLE); // 设置窗体无标题
// 设置全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
使用方法:需要在 setContentView 之前设置
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setImmersionStyle();
setContentView(R.layout.xx);
init();
}
以上的配置是兼容API 23一下的 下面配置23以上的,在theme.xml中定义 一个主题
<style name="AppCompatTitle" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/top_bg_color</item>
<item name="colorPrimaryDark">@color/top_bg_color</item>
</style>
<activity
android:name="xxx"
android:screenOrientation="portrait"
android:theme="@style/AppCompatTitle"></activity>
以上亲测可用...有什么不对的 请大神指点.
效果: