沉浸式

作者: 7i昂 | 来源:发表于2019-11-05 20:41 被阅读0次

google在Android4.4以后提供了设置沉浸式状态栏的方法

<item name="android:windowTranslucentStatus">true</item>
设置状态栏为透明
android:fitsSystemWindows=”true”

在Android5.0以后,增加了新的API android:statusBarColor 用于设置状态栏的颜色,同时以前的windowTranslucentStatus也是对它有效的,所以如果想通过新的API设置状态栏颜色的话,首先应该将windowTranslucentStatus设置为false,不然是没有效果的。

代码设置:

protected void setImmerseLayout(View view) {// view为标题栏
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            int statusBarHeight = getStatusBarHeight(this.getBaseContext());
            view.setPadding(0, statusBarHeight, 0, 0);
        }
    }
public int getStatusBarHeight(Context context) {
        int result = 0;
        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen",
                "android");
        if (resourceId > 0) {
            result = context.getResources().getDimensionPixelSize(resourceId);
        }
        return result;
}

设置全屏,设置状态栏透明

public static void fullScreen(Activity activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                //5.x开始需要把颜色设置透明,否则导航栏会呈现系统默认的浅灰色
                Window window = activity.getWindow();
                View decorView = window.getDecorView();
                //两个 flag 要结合使用,表示让应用的主体内容占用系统状态栏的空间
                int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
                decorView.setSystemUiVisibility(option);
                window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
                window.setStatusBarColor(Color.TRANSPARENT));
            } else {
                Window window = activity.getWindow();
                WindowManager.LayoutParams attributes = window.getAttributes();
                int flagTranslucentStatus = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
                int flagTranslucentNavigation = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
                attributes.flags |= flagTranslucentStatus;
                window.setAttributes(attributes);
            }
        }
    }

给头布局设置布局的paddingtop

public void setBarPadding(View view) {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
            view.setPadding(view.getPaddingLeft(),UIUtils.dip2px(8),view.getPaddingRight(), view.getPaddingBottom());
        } else {
            view.setPadding(view.getPaddingLeft(), getStatuBarHeight(), view.getPaddingRight(), view.getPaddingBottom());
        }
    }

相关文章

  • 沉浸式学习

    怎么样才能沉浸式学习,为什么我只能沉浸式玩手机? 他们沉浸式回家,沉浸式学习,沉浸式生活,总之,都能够沉浸进去。而...

  • 适配Android刘海屏小结

    by hzwusibo 20180907 一、沉浸式与非沉浸式来回切换页面适配 二、沉浸式页面适配 (非沉浸式...

  • Android 沉浸式模式与常见状态栏和导航栏效果

    Android沉浸式模式 官方称沉浸式状态栏为沉浸式模式。 什么是沉浸式?沉浸式就是让人专注当前的(由设计者营造)...

  • 沉浸式阅读 沉浸式生活

    10.13陪女儿上课,突然感受到那种沉浸式快乐,完全投入,女儿配合,我也很开心。下午还发现一个青年作家,喜欢这种有...

  • 被打乱了的生活节奏

    沉浸式追剧,沉浸式护肤,沉浸式逛街,沉浸式购物,沉浸式工作……这些,都远我而去了 本学年第一次月考,请假,因为哺乳...

  • “沉浸式”体验

    最近注意到一个新词儿“沉浸式”,偶尔刷视频,总是能看到各种沉浸式标题的视频,“沉浸式看房”,“沉浸式做饭”,“沉浸...

  • 沉浸式

    http://www.cnblogs.com/android-blogs/p/5690725.htmlhttp:/...

  • 沉浸式

    我对沉浸式的理解就是状态栏和导航栏变为透明把背景图片和标题栏显示出来比如 通过theme实现方式 通过代码设置 图...

  • 沉浸式

    通过主题设置状态栏 通过代码设置 上述代码实现了沉浸式,但是控件会跑到状态栏上,解决方法1、 在布局文件中设置一...

  • 沉浸式

    最近几年社会提倡更多的是阅读,都腹中有书气质华,读书可以改变生活,改变气质,不管是央视的诗词大塞,还是个个公众号a...

网友评论

      本文标题:沉浸式

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