Android实现通知栏透明的方法

 更新时间:2016年01月05日 11:04:12   作者:Jum开发实录  
这个特性是andorid4.4支持的,最少要api19才可以使用,也就是说如果Android的机子是低于4.4,沉浸通知栏是没有效果的。下面介绍一下使用的方法,非常得简单,对android通知栏透明相关知识感兴趣的朋友一起学习吧

这个特性是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);
  }
}

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

相关文章

  • Android SdkVersion的区别及获取版本信息方法

    Android SdkVersion的区别及获取版本信息方法

    下面小编就为大家带来一篇Android SdkVersion的区别及获取版本信息方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Android 如何获取设备唯一标识

    Android 如何获取设备唯一标识

    这篇文章主要介绍了Android 如何获取设备唯一标识,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下
    2021-03-03
  • Android获取手机屏幕宽高、状态栏高度以及字符串宽高信息的方法

    Android获取手机屏幕宽高、状态栏高度以及字符串宽高信息的方法

    这篇文章主要介绍了Android获取手机屏幕宽高、状态栏高度以及字符串宽高信息的方法,涉及Android获取文字宽高、状态栏高度、textView宽度及屏幕尺寸的相关技巧,需要的朋友可以参考下
    2015-04-04
  • android设备间实现无线投屏的示例代码

    android设备间实现无线投屏的示例代码

    Android提供了MediaProjection来实现录屏,通过MediaProjection可以获取当前屏幕的视频流,而视频流需要通过编解码来压缩进行传输,通过MediaCodec可实现视频的编码和解码,这篇文章主要介绍了android设备间实现无线投屏,需要的朋友可以参考下
    2022-06-06
  • Android 中ImageView的ScaleType使用方法

    Android 中ImageView的ScaleType使用方法

    这篇文章主要介绍了Android 中ImageView的ScaleType使用方法的相关资料,希望通过本能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • kotlin gson反序列化默认值失效深入讲解

    kotlin gson反序列化默认值失效深入讲解

    这篇文章主要大家介绍了关于kotlin gson反序列化默认值失效的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • Android编程实现禁止系统锁屏与解锁亮屏的方法

    Android编程实现禁止系统锁屏与解锁亮屏的方法

    这篇文章主要介绍了Android编程实现禁止系统锁屏与解锁亮屏的方法,实例分析了Android关闭屏幕、锁屏及解锁屏幕的相关技巧,需要的朋友可以参考下
    2015-12-12
  • Android 布局控件之LinearLayout详细介绍

    Android 布局控件之LinearLayout详细介绍

    Android 布局控件之LinearLayout详细介绍,需要的朋友可以参考一下
    2013-05-05
  • Flutter实现矩形取色器的封装

    Flutter实现矩形取色器的封装

    这篇文章主要为大家详细介绍了Flutter实现矩形取色器的封装,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Android开发中的重力传感器用法实例详解

    Android开发中的重力传感器用法实例详解

    这篇文章主要介绍了Android开发中的重力传感器用法,简单分析了Android重力传感器的基本功能、使用方法,并结合实例形式分析了Android基于重力传感器实现横竖屏切换的相关操作技巧,需要的朋友可以参考下
    2017-11-11

最新评论