mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-15 09:57:04 +05:30
android: integrate ClawNavigationBar
This commit is contained in:
parent
0e87507e63
commit
e15244b5db
4 changed files with 37 additions and 2 deletions
|
@ -16,6 +16,7 @@ import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.platform.LocalUriHandler
|
import androidx.compose.ui.platform.LocalUriHandler
|
||||||
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
import androidx.navigation.compose.NavHost
|
import androidx.navigation.compose.NavHost
|
||||||
import androidx.navigation.compose.composable
|
import androidx.navigation.compose.composable
|
||||||
|
@ -25,12 +26,16 @@ import com.google.accompanist.insets.ProvideWindowInsets
|
||||||
import com.google.accompanist.insets.navigationBarsPadding
|
import com.google.accompanist.insets.navigationBarsPadding
|
||||||
import com.google.accompanist.insets.statusBarsPadding
|
import com.google.accompanist.insets.statusBarsPadding
|
||||||
import com.google.accompanist.systemuicontroller.rememberSystemUiController
|
import com.google.accompanist.systemuicontroller.rememberSystemUiController
|
||||||
|
import dev.msfjarvis.claw.android.R
|
||||||
import dev.msfjarvis.claw.android.ui.decorations.ClawAppBar
|
import dev.msfjarvis.claw.android.ui.decorations.ClawAppBar
|
||||||
import dev.msfjarvis.claw.android.ui.decorations.ClawFab
|
import dev.msfjarvis.claw.android.ui.decorations.ClawFab
|
||||||
|
import dev.msfjarvis.claw.android.ui.decorations.ClawNavigationBar
|
||||||
|
import dev.msfjarvis.claw.android.ui.decorations.NavigationItem
|
||||||
import dev.msfjarvis.claw.android.ui.lists.DatabasePosts
|
import dev.msfjarvis.claw.android.ui.lists.DatabasePosts
|
||||||
import dev.msfjarvis.claw.android.ui.lists.HottestPosts
|
import dev.msfjarvis.claw.android.ui.lists.HottestPosts
|
||||||
import dev.msfjarvis.claw.android.ui.navigation.Destinations
|
import dev.msfjarvis.claw.android.ui.navigation.Destinations
|
||||||
import dev.msfjarvis.claw.android.viewmodel.ClawViewModel
|
import dev.msfjarvis.claw.android.viewmodel.ClawViewModel
|
||||||
|
import dev.msfjarvis.claw.common.R as commonR
|
||||||
import dev.msfjarvis.claw.common.comments.CommentsPage
|
import dev.msfjarvis.claw.common.comments.CommentsPage
|
||||||
import dev.msfjarvis.claw.common.comments.HTMLConverter
|
import dev.msfjarvis.claw.common.comments.HTMLConverter
|
||||||
import dev.msfjarvis.claw.common.comments.LocalHTMLConverter
|
import dev.msfjarvis.claw.common.comments.LocalHTMLConverter
|
||||||
|
@ -52,8 +57,8 @@ fun LobstersApp(
|
||||||
val savedListState = rememberLazyListState()
|
val savedListState = rememberLazyListState()
|
||||||
val navController = rememberNavController()
|
val navController = rememberNavController()
|
||||||
val postActions = rememberPostActions(urlLauncher, navController, viewModel)
|
val postActions = rememberPostActions(urlLauncher, navController, viewModel)
|
||||||
val currentDestination by currentNavigationDestination(navController)
|
|
||||||
val nestedScrollConnection = rememberNestedScrollConnection { isFabVisible = it }
|
val nestedScrollConnection = rememberNestedScrollConnection { isFabVisible = it }
|
||||||
|
val currentDestination by currentNavigationDestination(navController)
|
||||||
|
|
||||||
val networkPosts = viewModel.pagerFlow.collectAsLazyPagingItems()
|
val networkPosts = viewModel.pagerFlow.collectAsLazyPagingItems()
|
||||||
val savedPosts by viewModel.savedPosts.collectAsState(emptyList())
|
val savedPosts by viewModel.savedPosts.collectAsState(emptyList())
|
||||||
|
@ -71,6 +76,20 @@ fun LobstersApp(
|
||||||
systemUiController.setNavigationBarColor(color = Color.Transparent)
|
systemUiController.setNavigationBarColor(color = Color.Transparent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val navItems =
|
||||||
|
listOf(
|
||||||
|
NavigationItem(
|
||||||
|
label = "Hottest",
|
||||||
|
route = Destinations.Hottest.getRoute(),
|
||||||
|
icon = painterResource(R.drawable.ic_whatshot_24dp),
|
||||||
|
),
|
||||||
|
NavigationItem(
|
||||||
|
label = "Saved",
|
||||||
|
route = Destinations.Saved.getRoute(),
|
||||||
|
icon = painterResource(commonR.drawable.ic_favorite_24dp),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
Scaffold(
|
Scaffold(
|
||||||
topBar = { ClawAppBar(modifier = Modifier.statusBarsPadding()) },
|
topBar = { ClawAppBar(modifier = Modifier.statusBarsPadding()) },
|
||||||
floatingActionButton = {
|
floatingActionButton = {
|
||||||
|
@ -80,6 +99,13 @@ fun LobstersApp(
|
||||||
modifier = Modifier.navigationBarsPadding(),
|
modifier = Modifier.navigationBarsPadding(),
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
bottomBar = {
|
||||||
|
ClawNavigationBar(
|
||||||
|
navController = navController,
|
||||||
|
items = navItems,
|
||||||
|
modifier = Modifier.navigationBarsPadding(),
|
||||||
|
)
|
||||||
|
},
|
||||||
) {
|
) {
|
||||||
NavHost(navController, startDestination = Destinations.Hottest.getRoute()) {
|
NavHost(navController, startDestination = Destinations.Hottest.getRoute()) {
|
||||||
composable(Destinations.Hottest.getRoute()) {
|
composable(Destinations.Hottest.getRoute()) {
|
||||||
|
|
|
@ -45,7 +45,7 @@ fun ClawFab(
|
||||||
) {
|
) {
|
||||||
FloatingActionButton(onClick = { coroutineScope.launch { listState.animateScrollToItem(0) } }) {
|
FloatingActionButton(onClick = { coroutineScope.launch { listState.animateScrollToItem(0) } }) {
|
||||||
Icon(
|
Icon(
|
||||||
painter = painterResource(R.drawable.ic_arrow_upward_24),
|
painter = painterResource(R.drawable.ic_arrow_upward_24dp),
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
9
android/src/main/res/drawable/ic_whatshot_24dp.xml
Normal file
9
android/src/main/res/drawable/ic_whatshot_24dp.xml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:pathData="M13.5,0.67s0.74,2.65 0.74,4.8c0,2.06 -1.35,3.73 -3.41,3.73 -2.07,0 -3.63,-1.67 -3.63,-3.73l0.03,-0.36C5.21,7.51 4,10.62 4,14c0,4.42 3.58,8 8,8s8,-3.58 8,-8C20,8.61 17.41,3.8 13.5,0.67zM11.71,19c-1.78,0 -3.22,-1.4 -3.22,-3.14 0,-1.62 1.05,-2.76 2.81,-3.12 1.77,-0.36 3.6,-1.21 4.62,-2.58 0.39,1.29 0.59,2.65 0.59,4.04 0,2.65 -2.15,4.8 -4.8,4.8z" />
|
||||||
|
</vector>
|
Loading…
Add table
Add a link
Reference in a new issue