Skip to content

Instantly share code, notes, and snippets.

@Farhandroid
Farhandroid / SetupAppNavigation.kt
Created March 8, 2022 11:29
SetupAppNavigation
@Composable
fun SetupAppNavigation(navController: NavHostController) {
NavHost(navController = navController,
startDestination = Screens.SplashScreen.name) {
composable(Screens.SplashScreen.name) {
SplashScreen(navController = navController)
}
composable(Screens.MainScreen.name) {
MainScreen()
}
@Farhandroid
Farhandroid / SplashScreenAnimation.kt
Created March 8, 2022 10:59
SplashScreenAnimation
val scale = remember {
Animatable(0f)
}
LaunchedEffect(key1 = true, block = {
scale.animateTo(targetValue = 1f,
animationSpec = tween(
durationMillis = 2000,
))
delay(2000L)
@Farhandroid
Farhandroid / SplashScreenDesign.kt
Created March 8, 2022 10:50
SplashScreenDesign
Box(
modifier = Modifier
.background(color = Purple700)
.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Column(modifier = Modifier,
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center) {
Image(painter = painterResource(id = R.drawable.love),
@Composable
fun Content(
title: String,
onTitleChange: (String) -> Unit,
onResetClicked: () -> Unit,
) {
Column(
modifier = Modifier
.fillMaxSize()
.background(MaterialTheme.colors.background)
@Farhandroid
Farhandroid / MainContent.kt
Last active March 3, 2022 10:11
MainContent
private val viewModel = AppViewModel()
@Composable
fun MainContent(viewModel: AppViewModel) {
val title by viewModel.titleInputFlow.collectAsState()
Content(title = title, onTitleChange = {
viewModel.setTitle(it)
}, onResetClicked = { viewModel.resetTitle() })
}
@Farhandroid
Farhandroid / AppViewModel.kt
Last active March 3, 2022 11:46
AppViewModel
class AppViewModel : ViewModel() {
private val _titleInputFlow = MutableStateFlow<String>("")
val titleInputFlow: StateFlow<String> get() = _titleInputFlow
fun setTitle(title: String) {
_titleInputFlow.value = title
}
fun resetTitle() {
_titleInputFlow.value = ""
@Composable
fun MainScreen() {
val navController = rememberNavController()
Scaffold(
bottomBar = {
BottomAppBar {
CustomBottomNavigation(navController = navController)
}
}
) {
@Farhandroid
Farhandroid / CustomBottomNavigation.kt
Created March 1, 2022 12:18
CustomBottomNavigation
@Composable
fun CustomBottomNavigation(navController: NavHostController) {
val items = listOf(
BottomNavigationItem.Home,
BottomNavigationItem.Mail,
BottomNavigationItem.Person
)
BottomNavigation(
contentColor = Color.White
) {
@Farhandroid
Farhandroid / BottomItem.kt
Last active March 1, 2022 12:13
BottomItem
@Composable
fun RowScope.BottomItem(
screen: BottomNavigationItem,
currentDestination: NavDestination?,
navController: NavHostController,
) {
//RowScope.BottomNavigationItem
BottomNavigationItem(
icon = { Icon(painterResource(id = screen.icon), contentDescription = screen.title) },
selected = currentDestination?.hierarchy?.any {
@Farhandroid
Farhandroid / BottomNavigationItem.kt
Created March 1, 2022 11:59
BottomNavigationItem
sealed class BottomNavigationItem(var title:String, var icon:Int, var screen_route:String){
object Home : BottomNavigationItem("Home", R.drawable.ic_baseline_home,"home")
object Mail: BottomNavigationItem("Mail",R.drawable.ic_baseline_mail_24,"mail")
object Person: BottomNavigationItem("profile",R.drawable.ic_baseline_person_24,"profile")
}