android导航栏与状态栏颜色及透明度

首先创建一个空项目,如下图

image.png

可以看到状态栏是白字黑背景, 导航栏也是白图标黑背景
嘿嘿, 我们先把状态栏隐藏掉,在添加一个ImageView, 让ImageView做背景(方便查看)

    ImageView mImageView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (getSupportActionBar() != null) getSupportActionBar().hide();//隐藏标题栏

        mImageView = findViewById(R.id.image_view);//拿到imageView
        mImageView.setImageResource(R.drawable.logo);//设置一样图片, 并且让图片充满屏幕, 这里在ImageView里设置属性 scaleType="centerCrop" 来解决
    }

样子如下:


image.png

将状态栏和导航栏设置透明, 找到Manifest.xml文件, 在主题样式中修改


    
    

android:statusBarColor 设置状态栏背景色
android:navigationBarColor 同上
android:windowLightStatusBar 设置状态栏文字色, true为深色, false为白色
android:windowLightNavigationBar 同上
android:windowTranslucentStatus 设置状态栏半透明状态, true为半透明, false为不透明
android:windowTranslucentNavigation 同上

最后两个半透明状态下面没用, 可自己尝试看效果

效果图如下:


image.png

可以看到导航栏与状态栏并没有透明,原因是默认不能占用状态栏空间与导航栏空间,根布局背景为白色,所有这里显示白色
可以通过设置getWindow().getDecorView().setSystemUiVisibility()来适配

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...

        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
    }

View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 适配状态栏空间
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 适配导航栏空间
效果如下:

image.png

可以看到之前状态栏与导航栏之前是深色的字体变成白色了, 这是因为配置适配状态栏和导航栏之后, 系统会根据后面背景色自动来调节字色为深色还是白色

你可能感兴趣的:(android导航栏与状态栏颜色及透明度)