From 6a810fe46e60f9bc7cbf3e6f0d5fef632b2b415a Mon Sep 17 00:00:00 2001 From: John Shea Date: Mon, 18 Sep 2023 12:33:27 -0400 Subject: [PATCH 1/5] Update versions to the latest --- app/build.gradle.kts | 12 ++++++------ build.gradle.kts | 6 +++--- gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index b94210b..d0e87a8 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -21,12 +21,12 @@ plugins { android { namespace = "com.example.woof" - compileSdk = 33 + compileSdk = 34 defaultConfig { applicationId = "com.example.woof" minSdk = 24 - targetSdk = 33 + targetSdk = 34 versionCode = 1 versionName = "1.0" @@ -56,7 +56,7 @@ android { compose = true } composeOptions { - kotlinCompilerExtensionVersion = "1.4.7" + kotlinCompilerExtensionVersion = "1.5.3" } packaging { resources { @@ -67,15 +67,15 @@ android { dependencies { - implementation(platform("androidx.compose:compose-bom:2023.05.01")) + implementation(platform("androidx.compose:compose-bom:2023.09.00")) implementation("androidx.activity:activity-compose:1.7.2") implementation("androidx.compose.material:material-icons-extended") implementation("androidx.compose.material3:material3") implementation("androidx.compose.ui:ui") implementation("androidx.compose.ui:ui-graphics") implementation("androidx.compose.ui:ui-tooling-preview") - implementation("androidx.core:core-ktx:1.10.1") - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1") + implementation("androidx.core:core-ktx:1.12.0") + implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") debugImplementation("androidx.compose.ui:ui-test-manifest") debugImplementation("androidx.compose.ui:ui-tooling") diff --git a/build.gradle.kts b/build.gradle.kts index 0e62ef0..98d5ee5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,7 +17,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.application") version "8.0.2" apply false - id("com.android.library") version "8.0.2" apply false - id("org.jetbrains.kotlin.android") version "1.8.21" apply false + id("com.android.application") version "8.1.1" apply false + id("com.android.library") version "8.1.1" apply false + id("org.jetbrains.kotlin.android") version "1.9.10" apply false } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bc537e8..54ef8a8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Thu Mar 02 11:35:24 EST 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From fb04fef5d62c3a4e0e75f3e8565bfcfad6890196 Mon Sep 17 00:00:00 2001 From: John Shea Date: Mon, 18 Sep 2023 13:26:31 -0400 Subject: [PATCH 2/5] Implement edge-to-edge --- .../java/com/example/woof/MainActivity.kt | 15 +++++++++++ .../java/com/example/woof/ui/theme/Theme.kt | 26 ++++++++++++++++--- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/example/woof/MainActivity.kt b/app/src/main/java/com/example/woof/MainActivity.kt index eeebaae..850336c 100644 --- a/app/src/main/java/com/example/woof/MainActivity.kt +++ b/app/src/main/java/com/example/woof/MainActivity.kt @@ -24,16 +24,23 @@ import androidx.annotation.StringRes import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.asPaddingValues +import androidx.compose.foundation.layout.calculateEndPadding +import androidx.compose.foundation.layout.calculateStartPadding import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.safeDrawing import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -46,10 +53,18 @@ class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { + val layoutDirection = LocalLayoutDirection.current WoofTheme { // A surface container using the 'background' color from the theme Surface( modifier = Modifier.fillMaxSize() + .statusBarsPadding() + .padding( + start = WindowInsets.safeDrawing.asPaddingValues() + .calculateStartPadding(layoutDirection), + end = WindowInsets.safeDrawing.asPaddingValues() + .calculateEndPadding(layoutDirection) + ), ) { WoofApp() } diff --git a/app/src/main/java/com/example/woof/ui/theme/Theme.kt b/app/src/main/java/com/example/woof/ui/theme/Theme.kt index 151a93b..7ffdbbf 100644 --- a/app/src/main/java/com/example/woof/ui/theme/Theme.kt +++ b/app/src/main/java/com/example/woof/ui/theme/Theme.kt @@ -17,6 +17,7 @@ package com.example.woof.ui.theme import android.app.Activity import android.os.Build +import android.view.View import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.darkColorScheme @@ -25,6 +26,7 @@ import androidx.compose.material3.dynamicLightColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.runtime.SideEffect +import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView @@ -61,9 +63,7 @@ fun WoofTheme( val view = LocalView.current if (!view.isInEditMode) { SideEffect { - val window = (view.context as Activity).window - window.statusBarColor = colorScheme.primary.toArgb() - WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme + setUpEdgeToEdge(view, darkTheme) } } @@ -74,3 +74,23 @@ fun WoofTheme( content = content ) } + +/** + * Sets up edge-to-edge for the window of this [view]. The system icon colors are set to either + * light or dark depending on whether the [darkTheme] is enabled or not. + */ +private fun setUpEdgeToEdge(view: View, darkTheme: Boolean) { + val window = (view.context as Activity).window + WindowCompat.setDecorFitsSystemWindows(window, false) + window.statusBarColor = Color.Transparent.toArgb() + val navigationBarColor = when { + Build.VERSION.SDK_INT >= 29 -> Color.Transparent.toArgb() + Build.VERSION.SDK_INT >= 26 -> Color(0xFF, 0xFF, 0xFF, 0x63).toArgb() + // Min sdk version for this app is 24, this block is for SDK versions 24 and 25 + else -> Color(0x00, 0x00, 0x00, 0x50).toArgb() + } + window.navigationBarColor = navigationBarColor + val controller = WindowCompat.getInsetsController(window, view) + controller.isAppearanceLightStatusBars = !darkTheme + controller.isAppearanceLightNavigationBars = !darkTheme +} From ec8cea0e7bc28542569bac13d242df46750b5a8b Mon Sep 17 00:00:00 2001 From: John Shea Date: Mon, 18 Sep 2023 16:48:42 -0400 Subject: [PATCH 3/5] Add scaffold to starter code --- .../java/com/example/woof/MainActivity.kt | 26 +++++++------------ 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/example/woof/MainActivity.kt b/app/src/main/java/com/example/woof/MainActivity.kt index 850336c..3ca2c4f 100644 --- a/app/src/main/java/com/example/woof/MainActivity.kt +++ b/app/src/main/java/com/example/woof/MainActivity.kt @@ -24,18 +24,13 @@ import androidx.annotation.StringRes import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.asPaddingValues -import androidx.compose.foundation.layout.calculateEndPadding -import androidx.compose.foundation.layout.calculateStartPadding import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.safeDrawing import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items +import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -53,18 +48,10 @@ class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { - val layoutDirection = LocalLayoutDirection.current WoofTheme { // A surface container using the 'background' color from the theme Surface( modifier = Modifier.fillMaxSize() - .statusBarsPadding() - .padding( - start = WindowInsets.safeDrawing.asPaddingValues() - .calculateStartPadding(layoutDirection), - end = WindowInsets.safeDrawing.asPaddingValues() - .calculateEndPadding(layoutDirection) - ), ) { WoofApp() } @@ -78,9 +65,14 @@ class MainActivity : ComponentActivity() { */ @Composable fun WoofApp() { - LazyColumn { - items(dogs) { - DogItem(dog = it) + Scaffold { it -> + LazyColumn(contentPadding = it) { + items(dogs) { + DogItem( + dog = it, + modifier = Modifier.padding(dimensionResource(R.dimen.padding_small)) + ) + } } } } From 1e5b661f3fb345770bc8ce590ed7ef25703bfc72 Mon Sep 17 00:00:00 2001 From: John Shea Date: Mon, 18 Sep 2023 17:19:33 -0400 Subject: [PATCH 4/5] Remove unused import --- app/src/main/java/com/example/woof/MainActivity.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/example/woof/MainActivity.kt b/app/src/main/java/com/example/woof/MainActivity.kt index 3ca2c4f..7b27fb5 100644 --- a/app/src/main/java/com/example/woof/MainActivity.kt +++ b/app/src/main/java/com/example/woof/MainActivity.kt @@ -35,7 +35,6 @@ import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource From ee9f5bf6aafefab5666753247bdb6d48cc50cc8c Mon Sep 17 00:00:00 2001 From: John Shea Date: Wed, 20 Sep 2023 13:28:35 -0400 Subject: [PATCH 5/5] Remove modifier from starter code --- app/src/main/java/com/example/woof/MainActivity.kt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/app/src/main/java/com/example/woof/MainActivity.kt b/app/src/main/java/com/example/woof/MainActivity.kt index 7b27fb5..d6981e3 100644 --- a/app/src/main/java/com/example/woof/MainActivity.kt +++ b/app/src/main/java/com/example/woof/MainActivity.kt @@ -67,10 +67,7 @@ fun WoofApp() { Scaffold { it -> LazyColumn(contentPadding = it) { items(dogs) { - DogItem( - dog = it, - modifier = Modifier.padding(dimensionResource(R.dimen.padding_small)) - ) + DogItem(dog = it) } } }