app直播源代码,JetpackCompose实现沉浸式导航条
app直播源代码,JetpackCompose实现沉浸式导航条
MainActivity.kt
首先在 oncreate 方法里面按照注释中的三步依次添加代码
1 | class MainActivity : ComponentActivity() {<br> @RequiresApi(Build.VERSION_CODES.R)<br> override fun onCreate(savedInstanceState: Bundle?) {<br> // 第一步<br> WindowCompat.setDecorFitsSystemWindows(window,false)<br> super.onCreate(savedInstanceState)<br> setContent {<br> AidtTheme {<br> // 第二步,强制设置状态栏的颜色<br> rememberSystemUiController().setStatusBarColor(<br> Blue500,<br> darkIcons = MaterialTheme.colors.isLight<br> )<br> // 第三步,ProvideWindowInsets嵌套主体<br> ProvideWindowInsets {<br> Surface(<br> modifier = Modifier.fillMaxSize(),<br> color = MaterialTheme.colors.background<br> ) {<br> mainBody()<br> }<br> }<br> }<br> }<br> }<br>}<br> |
mainBody 主体代码实现
主要方法就是让 scaffold 原理顶部一个状态栏的高度,然后底部导航条也这么做就 OK 了
1 | <br>@Composable<br> private fun mainBody() {<br> ...<br> // 第一步:获取顶部状态栏的高度<br> val statusBarHeight = with(LocalDensity.current){<br> LocalWindowInsets.current.statusBars.top.toDp()<br> }<br> Scaffold(<br> topBar = {<br> TopAppBar(<br> // 第二步:使用padding让scaffold与顶部隔开一个状态栏的高度<br> modifier = Modifier.padding(top = statusBarHeight),<br> title = { Text("主页") },<br> navigationIcon = {<br> IconButton(onClick = { scope.launch { scaffoldState.drawerState.open() } }) {<br> Icon(Icons.Filled.Menu, null)<br> }<br> }<br> )<br> },<br> bottomBar = {<br> BottomNavigation(<br> // 第三步:使底部导航条在底部控制条的上方<br> modifier = Modifier.navigationBarsPadding()<br> ) {<br> items.forEachIndexed { index, item -><br> BottomNavigationItem(<br> selected = selectedItem == index,<br> onClick = {<br> selectedItem = index<br> navChangePath(item.route)<br> },<br> icon = { Icon(painterResource(item.icon), null) },<br> alwaysShowLabel = false,<br> label = { Text(item.name) }<br> )<br> }<br> }<br> },<br> ) {<br> ...<br> }<br>} |
以上就是app直播源代码,JetpackCompose实现沉浸式导航条, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现