Android实现通知栏透明的方法
这个特性是andorid4.4支持的,最少要api19才可以使用,也就是说如果Android的机子是低于4.4,沉浸通知栏是没有效果的。下面介绍一下使用的方法,非常得简单。
/**
*设置通知栏这个方法在onCreate()实现,如果是在父类的onCreate()中添加,即使所有继承了该父类都会有沉浸通知栏。
*/
publicvoidinitSystemBar(){
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.KITKAT){
setTranslucentStatus(true);
SystemBarTintManagertintManager=newSystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
tintManager.setStatusBarTintResource(R.color.red);
}
}
/**
*设置通知栏的状态
*@paramon
*/
@SuppressLint("InlinedApi")
privatevoidsetTranslucentStatus(booleanon){
Windowwin=this.getWindow();
WindowManager.LayoutParamswinParams=win.getAttributes();
finalintbits=WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
if(on){
winParams.flags|=bits;
}else{
winParams.flags&=~bits;
}
win.setAttributes(winParams);
}
在最后在布局文件中添加:android:fitsSystemWindows="true"
即可实现。
Android5.0全透明状态栏效果,具体实例代码如下所示:
实现上述效果的代码如下:
publicclassMainActivityextendsActivity{
@SuppressLint("InlinedApi")
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
if(VERSION.SDK_INT>=VERSION_CODES.LOLLIPOP){
Windowwindow=getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
|WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
window.setNavigationBarColor(Color.TRANSPARENT);
}
setContentView(R.layout.activity_main);
}
}
以上代码写的不好,还请各位大侠多多提出,同时希望本文分享对大家有所帮助。