首先创建一个空项目,如下图
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
文件, 在主题样式中修改
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
...
<item name="android:statusBarColor">#00000000</item> <!-- 设置状态栏背景色为透明 -->
<item name="android:navigationBarColor">#00000000</item> <!-- 设置导航栏背景色为透明 -->
<item name="android:windowLightStatusBar">true</item> <!-- 设置状态栏文字色为深色, true为深色, false为白色 -->
<item name="android:windowLightNavigationBar">true</item> <!-- 设置导航栏文字色为深色, true为深色, false为白色 -->
</style>
</resources>
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
适配导航栏空间
效果如下:
可以看到之前状态栏与导航栏之前是深色的字体变成白色了, 这是因为配置适配状态栏和导航栏之后, 系统会根据后面背景色自动来调节字色为深色还是白色
网友评论