Skip to content

Commit d2aa885

Browse files
author
sds100
committed
#18 feat: make layout adapt to large displays
Signed-off-by: sds100 <developer.sds100@gmail.com>
1 parent e245a0a commit d2aa885

5 files changed

Lines changed: 175 additions & 132 deletions

File tree

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ dependencies {
8686
implementation "com.google.accompanist:accompanist-insets:0.23.1"
8787
implementation "androidx.datastore:datastore-preferences:1.0.0"
8888
implementation "androidx.core:core-splashscreen:1.0.0-rc01"
89+
implementation "androidx.compose.material3:material3-window-size-class:1.0.0-alpha14"
8990

9091
//other
9192
implementation 'com.jakewharton.timber:timber:5.0.1'

app/src/main/java/com/mapcode/MainActivity.kt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import android.os.Bundle
44
import androidx.activity.ComponentActivity
55
import androidx.activity.compose.setContent
66
import androidx.activity.viewModels
7+
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
8+
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
9+
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
710
import androidx.compose.runtime.Composable
811
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
912
import androidx.core.view.WindowCompat
@@ -12,19 +15,23 @@ import com.google.android.gms.maps.MapsInitializer
1215
import com.mapcode.map.MapViewModel
1316
import com.mapcode.theme.MapcodeTheme
1417
import dagger.hilt.android.AndroidEntryPoint
18+
import timber.log.Timber
1519

1620
@AndroidEntryPoint
1721
class MainActivity : ComponentActivity() {
1822
private val viewModel: MapViewModel by viewModels()
1923

24+
@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
2025
override fun onCreate(savedInstanceState: Bundle?) {
2126
installSplashScreen()
2227
super.onCreate(savedInstanceState)
23-
28+
2429
WindowCompat.setDecorFitsSystemWindows(window, false)
2530

2631
setContent {
27-
MapcodeApp(viewModel)
32+
val widthSizeClass = calculateWindowSizeClass(this).widthSizeClass
33+
Timber.e(widthSizeClass.toString())
34+
MapcodeApp(viewModel, widthSizeClass)
2835
}
2936

3037
MapsInitializer.initialize(this)
@@ -38,12 +45,13 @@ class MainActivity : ComponentActivity() {
3845
}
3946

4047
@Composable
41-
fun MapcodeApp(viewModel: MapViewModel) {
48+
fun MapcodeApp(viewModel: MapViewModel, widthSizeClass: WindowWidthSizeClass) {
4249
MapcodeTheme {
4350
val navController = rememberNavController()
4451
MapcodeNavHost(
4552
navController = navController,
46-
viewModel = viewModel
53+
viewModel = viewModel,
54+
isExpandedScreen = widthSizeClass == WindowWidthSizeClass.Expanded
4755
)
4856
}
4957
}

app/src/main/java/com/mapcode/MapcodeNavHost.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,16 @@ import com.mapcode.map.MapViewModel
1616
fun MapcodeNavHost(
1717
modifier: Modifier = Modifier,
1818
navController: NavHostController,
19-
viewModel: MapViewModel
19+
viewModel: MapViewModel,
20+
isExpandedScreen: Boolean
2021
) {
2122
NavHost(
2223
navController = navController,
2324
startDestination = MapcodeDestination.Map.name,
2425
modifier = modifier
2526
) {
2627
composable(MapcodeDestination.Map.name) {
27-
MapScreen(viewModel)
28+
MapScreen(viewModel, isExpandedScreen = isExpandedScreen)
2829
}
2930
}
3031
}

0 commit comments

Comments
 (0)