Android实现通知栏透明的方法
程序员文章站
2023-12-18 14:21:46
这个特性是andorid4.4支持的,最少要api19才可以使用,也就是说如果android的机子是低于4.4,沉浸通知栏是没有效果的。下面介绍一下使用的方法,非常得简单。...
这个特性是andorid4.4支持的,最少要api19才可以使用,也就是说如果android的机子是低于4.4,沉浸通知栏是没有效果的。下面介绍一下使用的方法,非常得简单。
/** * 设置通知栏 这个方法在oncreate()实现,如果是在父类的oncreate()中添加,即使所有继承了该父类都会有沉浸通知栏。 */ public void initsystembar() { if (build.version.sdk_int >= build.version_codes.kitkat) { settranslucentstatus(true); systembartintmanager tintmanager = new systembartintmanager(this); tintmanager.setstatusbartintenabled(true); tintmanager.setstatusbartintresource(r.color.red); } } /** * 设置通知栏的状态 * @param on */ @suppresslint("inlinedapi") private void settranslucentstatus(boolean on) { window win = this.getwindow(); windowmanager.layoutparams winparams = win.getattributes(); final int bits = windowmanager.layoutparams.flag_translucent_status; if (on) { winparams.flags |= bits; } else { winparams.flags &= ~bits; } win.setattributes(winparams); }
在最后在布局文件中添加:android:fitssystemwindows="true"
即可实现。
android5.0全透明状态栏效果,具体实例代码如下所示:
实现上述效果的代码如下:
public class mainactivity extends activity { @suppresslint("inlinedapi") @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); getwindow().requestfeature(window.feature_no_title); if(version.sdk_int >= version_codes.lollipop) { window window = 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); } }
以上代码写的不好,还请各位大侠多多提出,同时希望本文分享对大家有所帮助。