手机网站制作行业排行,最适合穷人的四种保险,网站ip改变 备案,wordpress 腾讯云插件目录 概述效果展示代码实现总结 概述
说到沉浸式状态栏#xff0c;很多小伙伴可能不太熟悉#xff0c;其实让Android的状态栏的颜色和APP的主题颜色相同#xff0c;给人感觉状态栏和APP就是一体的。沉浸式的状态栏让页面看起来更舒服#xff0c;实现沉浸式状态栏也很简单很多小伙伴可能不太熟悉其实让Android的状态栏的颜色和APP的主题颜色相同给人感觉状态栏和APP就是一体的。沉浸式的状态栏让页面看起来更舒服实现沉浸式状态栏也很简单首先就是配置主题然后设置状态栏的颜色之前的博客中实现沉浸式状态栏是通过将状态栏的颜色设置成页面背景的颜色这样状态栏就和背景融为一体了但是这种办法在每个页面都需要设置一遍非常费力最好的 方式就是将状态栏设置成透明的颜色然后将我们的页面顶到屏幕的顶部而不是位于状态栏下面。下面就是实现沉浸式状态栏的方法
效果展示
如果没有实现沉浸式状态栏的界面如下所示 我们可以看到状态栏的颜色和我们的页面背景色不相同而且状态栏的颜色还会随着手机的不同而不同这让界面看起来很不协调。而加了沉浸式状态栏后效果如下 我们发现加入沉浸式状态栏后界面和状态栏的颜色就融为一体了不管是啥品牌的手机展示的效果都是一样的这样就会让我们的界面看起来比较舒服。
代码实现
实现沉浸式状态栏我们首先需要引入一个库 // 系统UI控制库实现沉浸式状态栏implementation(com.google.accompanist:accompanist-systemuicontroller:0.31.0-alpha)使用这个库我们可以设置系统状态栏的颜色查看状态栏和导航栏是否显示等功能。引入库后我们需要给我们应用添加一个主题。 主题的内容如下 注意设置主题时我们需要使用包含NoActionBar的主题否则我们的界面中会多出一个系统的ActionBar
?xml version1.0 encodingutf-8?
resourcesstyle nameTheme.ImmersiveBar parentandroid:Theme.Material.Light.NoActionBar/
/resources主题的文件位置如下图所示 配置完主题后我们就可以去修改系统状态栏的颜色了。
class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {ImmersiveBarTheme {// A surface container using the background color from the themeenableEdgeToEdge()val systemUiController rememberSystemUiController()SideEffect {// 因为我们目前没有暗色主题的UI所以都是亮色主题UI我们默认使用暗色的状态栏ICON// 防止出现标题栏字体颜色和UI背景融合的情况systemUiController.setSystemBarsColor(Color.Transparent, darkIcons true)//window.statusBarColor Color.Transparent.toArgb()}Surface(modifier Modifier.fillMaxSize(),color MaterialTheme.colorScheme.background) {Image(painter painterResource(R.drawable.m11),contentDescription null,contentScale ContentScale.Crop,modifier Modifier.fillMaxSize())}}}}
}上面的代码中实现沉浸式状态栏的主要代码为 enableEdgeToEdge()val systemUiController rememberSystemUiController()SideEffect {// 因为我们目前没有暗色主题的UI所以都是亮色主题UI我们默认使用暗色的状态栏ICON// 防止出现标题栏字体颜色和UI背景融合的情况// darkIcons 的值控制状态栏显示的图标字体样式systemUiController.setSystemBarsColor(Color.Transparent, darkIcons true)//window.statusBarColor Color.Transparent.toArgb()}首先enableEdgeToEdge是让我们的界面可以”顶“到屏幕的最顶端然后我们使用systemUiController将状态栏的颜色设置成透明的就可以实现沉浸式状态栏了这里需要注意我们设置状态栏颜色时需要放到SideEffect 或者是LaunchedEffect副作用API中这样状态栏颜色才能设置成功否者颜色会设置不成功导致无法实现沉浸式状态栏。这两个副作用API感兴趣的小伙伴可以去百度下这里就不展开说了。
总结
本文主要介绍了在Android Compose下沉浸式状态栏的实现方法实现沉浸式状态栏还有其他各种各样的方式这里只是提供了一种仅供参考。我们如果不想引入设置系统状态栏颜色的库我们也可以去看下设置系统状态栏颜色使用的系统API然后自己在代码中实现即可。如果读者有更好的沉浸式状态栏的实现方式欢迎评论区讨论