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

Android沉浸式状态栏设计的实例代码

程序员文章站 2024-02-09 15:04:10
本文介绍了android沉浸式状态栏,分享给大家,希望对大家有帮助 一、概述 现在主流的app设计风格很多都用到了materail design,今天我们就来简单的实现...

本文介绍了android沉浸式状态栏,分享给大家,希望对大家有帮助

一、概述

现在主流的app设计风格很多都用到了materail design,今天我们就来简单的实现一下改变状态栏颜色、让状态栏透明这两种效果。

二、实现状态栏设置颜色

我们写一个工具类statusbarutils

代码如下:

/**
   * 设置状态栏颜色
   *
   * @param activity
   */
  public static void setstatuscolor(activity activity, int color) {
    if (build.version.sdk_int > build.version_codes.lollipop) {
      //直接调用系统提供的方法 setstatusbarcolor
      activity.getwindow().setstatusbarcolor(color);
    } else if (build.version.sdk_int > build.version_codes.kitkat) {
      // 4.4 - 5.0 之间 采用一个技巧,首先把他弄成全屏,在状态栏的部分加一个布局
      activity.getwindow().addflags(windowmanager.layoutparams.flag_fullscreen);
      view view = new view(activity);
      viewgroup.layoutparams params = new viewgroup.layoutparams(viewgroup.layoutparams.match_parent, getstatusbarheight(activity));
      view.setlayoutparams(params);
      view.setbackgroundcolor(color);
      viewgroup viewgroup = (viewgroup) activity.getwindow().getdecorview();
      viewgroup.addview(view);
      // 获取activity中setcontentview布局的根布局
      viewgroup contentview = (viewgroup) activity.findviewbyid(android.r.id.content);
      view activityview = contentview.getchildat(0);
      activityview.setfitssystemwindows(true);
    }
  }

  private static int getstatusbarheight(activity activity) {
    resources resources = activity.getresources();
    int statusheightid = resources.getidentifier("status_bar_height", "dimen", "android");
    return resources.getdimensionpixeloffset(statusheightid);
  }

在android5.0以上直接调用系统提供的方法 setstatusbarcolor,4.4-5.0之间,首先弄成全屏,然后在状态栏的部分加一个布局。

三、设置状态栏透明

代码:

  public static void setactivitytranslucent(activity activity) {
    if (build.version.sdk_int > build.version_codes.lollipop) {
      activity.getwindow().getdecorview().setsystemuivisibility(view.system_ui_flag_layout_fullscreen);
      activity.getwindow().setstatusbarcolor(color.transparent);
    } else if (build.version.sdk_int > build.version_codes.kitkat) {
      activity.getwindow().addflags(windowmanager.layoutparams.flag_translucent_status);
    }
  }

代码就这么多,分析完毕,效果大家可以自己去试一试,我这就不上图了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。