欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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);
  }
}

以上代码写的不好,还请各位大侠多多提出,同时希望本文分享对大家有所帮助。

上一篇:

下一篇: