有一篇关于沉浸式的好博文:
http://blog.csdn.net/guolin_blog/article/details/51763825
一个Android应用程序的界面上其实是有很多系统元素的,观察下图:
---------------------MainActivity-----------------------
package com.example.earl.mychenjinshi;
import android.os.Bundle;
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected int bindLayout() {
return R.layout.activity_main;
}
@Override
protected void initView() {
}
@Override
protected void initData() {
//设置沉浸式状态栏
setStatus(true);
//是否显示actionbar
setShowActionBar(false);
//是否全屏
setFullScreen(true);
}
}
--------------------BaseActivity------------------------
package com.example.earl.mychenjinshi;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.WindowManager;
/**
* Description:基类,封装功用功能,方便子类继承,子类只需要实现子类需要的功能即可
*/
public abstract class BaseActivity extends AppCompatActivity{
private boolean isStatus = false;//沉浸式透明状态栏标示
private boolean isShowActionBar = true;//是否隐藏actionbar
private boolean isFullScreen = false;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(bindLayout());
initView();
initData();
}
protected abstract int bindLayout();//绑定布局
protected abstract void initView();//初始化控件
protected abstract void initData();//初始化数据
public void setStatus(boolean status) {
isStatus = status;
if (isStatus){
//判断当前设备的版本号》=19的时候,走这个代码块,这个用于版本适配
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.KITKAT){
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
}
/**
* 沉浸式AnctionBar
* @param showActionBar
*/
public void setShowActionBar(boolean showActionBar) {
isShowActionBar = showActionBar;
if (isShowActionBar){
getSupportActionBar().show();
}else{
getSupportActionBar().hide();
}
}
/**
* 沉浸式状态栏
* @param fullScreen
*/
public void setFullScreen(boolean fullScreen) {
isFullScreen = fullScreen;
if (isFullScreen){//是全屏的时候
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}
}