美文网首页Android UIAndroid知识
android案例---透明状态栏

android案例---透明状态栏

作者: return_toLife | 来源:发表于2018-07-05 17:18 被阅读91次

想要实现的效果:

微信图片_20171107222158.png
  1. 设置透明状态栏
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
        }

设置之后虽然状态栏隐藏了,但是状态栏的高度被填充了(少了状态栏的高度),如下:


11.jpg
  1. 解决步骤一,使用fitssystemwindows预留系统空间,也可以在xml的根布局里设置
 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            //透明状态栏
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            ViewGroup rootView = (ViewGroup) ((ViewGroup) activity.getWindow().findViewById(android.R.id.content)).getChildAt(0);
            //预留系统空间
            rootView.setFitsSystemWindows(true);
            //绘制区域在padding里面
            rootView.setClipToPadding(true);
        }

设置预留系统空间之后,用的是小米5s手机,状态栏变成白色,效果如下:


222.png
  1. 继续解决问题,加入一个自定义系统状态栏,获取系统状态栏高度,设置其背景颜色和自定义bar背景一致
 /**
     * 为activity添加状态栏颜色
     *
     * @param activity
     * @param color
     */
    public static void addStatusViewWithColor(Activity activity, int color) {
        //获取contentview布局
        ViewGroup contentView = (ViewGroup) activity.findViewById(android.R.id.content);
        //新建一个new
        View statusBarView = new View(activity);
      //设置宽高
        ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                getStatusBarHeight(activity));
        statusBarView.setBackgroundResource(color);
        contentView.addView(statusBarView, lp);
    }

    /**
     * 获取状态栏高度
     *
     * @param activity
     * @return
     */
    public static int getStatusBarHeight(Activity activity) {
        int result = 0;
        //获取状态栏高度的资源id
        int resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            result = activity.getResources().getDimensionPixelSize(resourceId);
        }
        return result;
    }

更多透明状态栏内容参考

http://www.jianshu.com/p/aca4fd6743b1

相关文章

  • android案例---透明状态栏

    想要实现的效果: 设置透明状态栏 设置之后虽然状态栏隐藏了,但是状态栏的高度被填充了(少了状态栏的高度),如下: ...

  • Flutter 开发常见 tips

    1.Android 手机设置状态栏透明 如果想实现在 Android 手机上实现透明状态栏的需求,可以在 main...

  • Android面试题整理

    一、View树/View的绘制流程Android View的绘制流程 二、透明状态栏Android 系统状态栏沉浸...

  • AndroidView

    Android 沉浸式 (透明) 状态栏适配 Android 沉浸式状态栏仿淘宝、京东拖拽商品详情(可嵌套View...

  • 沉浸式效果

    Android 5.0 设置状态栏全透明,将布局顶到status bar上 StatusBarUtil 状态栏工具...

  • Android 沉浸式状态栏

    关于如何实现Android透明状态栏的总结 - 简书

  • 沉浸式

    google在Android4.4以后提供了设置沉浸式状态栏的方法 true 设置状态栏为透明android:fi...

  • Android 沉浸式状态栏原理

    首先: android 的透明状态栏和沉浸式是两个不同的东西,但是又相互交错,不要混淆。透明状态栏是指将状态栏设置...

  • 透明statusbar的一些小建议

    大家都知道android4.4出现了沉浸式状态栏一说,5.0以上则是透明状态栏,其实呢都是透明状态栏。最近公司要求...

  • Github上最好用的 Android 状态栏导航栏库分享,没有

    从 Android 4.4 开始,Android 支持了状态栏和导航栏的透明效果,并在 Android 5.0 上...

网友评论

    本文标题:android案例---透明状态栏

    本文链接:https://www.haomeiwen.com/subject/oaesmxtx.html