From 22081743d776b05c8a1b3e5a4c39211415f16765 Mon Sep 17 00:00:00 2001 From: garanj Date: Wed, 4 Feb 2026 13:35:58 +0000 Subject: [PATCH 1/3] Removes need for Horologist --- gradle/gradle-daemon-jvm.properties | 12 ++++++++ gradle/libs.versions.toml | 12 ++++---- wear/build.gradle.kts | 7 ++++- .../androidify/ui/CallToActionScreen.kt | 7 ----- .../androidify/ui/TransmissionScreen.kt | 29 +++++++++---------- 5 files changed, 37 insertions(+), 30 deletions(-) create mode 100644 gradle/gradle-daemon-jvm.properties diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties new file mode 100644 index 00000000..6c1139ec --- /dev/null +++ b/gradle/gradle-daemon-jvm.properties @@ -0,0 +1,12 @@ +#This file is generated by updateDaemonJvm +toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect +toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect +toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/73bcfb608d1fde9fb62e462f834a3299/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/846ee0d876d26a26f37aa1ce8de73224/redirect +toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/9482ddec596298c84656d31d16652665/redirect +toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/39701d92e1756bb2f141eb67cd4c660e/redirect +toolchainVersion=21 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8c1ed624..3197e418 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -38,7 +38,6 @@ guava = "33.5.0-android" hiltAndroid = "2.59" hiltLifecycleViewmodel = "1.0.0-alpha03" hiltNavigationCompose = "1.3.0" -horologist = "0.7.15" junit = "4.13.2" junitVersion = "1.3.0" kotlin = "2.3.0" @@ -67,11 +66,11 @@ runner = "1.7.0" uiTextGoogleFonts = "1.9.3" uiautomator = "2.4.0-alpha07" uiTooling = "1.10.0" -validatorPush = "1.0.0-alpha08" -watchFacePush = "1.0.0-alpha01" +validatorPush = "1.0.0-alpha09" +watchFacePush = "1.0.0-beta01" wear = "1.3.0" -wearCompose = "1.5.0" -wearComposeTooling = "1.4.1" +wearCompose = "1.6.0-alpha09" +wearComposeTooling = "1.5.6" wearRemoteInteractions = "1.1.0" window = "1.5.0" lifecycleProcess = "2.9.4" @@ -106,7 +105,9 @@ androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-co androidx-hilt-navigation-compose = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "hiltNavigationCompose" } androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" } +androidx-lifecycle-runtime-compose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "lifecycleRuntimeKtx" } androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycleRuntimeKtx" } +androidx-lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "lifecycleRuntimeKtx" } androidx-lifecycle-viewmodel-navigation3 = { module = "androidx.lifecycle:lifecycle-viewmodel-navigation3", version.ref = "lifecycleViewmodelNavigation3" } androidx-material3 = { group = "androidx.compose.material3", name = "material3", version.ref = "material3" } androidx-media3-exoplayer = { group = "androidx.media3", name = "media3-exoplayer", version.ref = "media3" } @@ -148,7 +149,6 @@ guava = { module = "com.google.guava:guava", version.ref = "guava" } hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hiltAndroid" } hilt-android-testing = { group = "com.google.dagger", name = "hilt-android-testing", version.ref = "hiltAndroid" } hilt-compiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "hiltAndroid" } -horologist-compose-layout = { module = "com.google.android.horologist:horologist-compose-layout", version.ref = "horologist" } junit = { group = "junit", name = "junit", version.ref = "junit" } kotlin-test = { group = "org.jetbrains.kotlin", name = "kotlin-test-junit", version.ref = "kotlin"} kotlinx-coroutines-play-services = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-play-services", version.ref = "kotlinxCoroutines"} diff --git a/wear/build.gradle.kts b/wear/build.gradle.kts index a69ea95e..1a561fd3 100644 --- a/wear/build.gradle.kts +++ b/wear/build.gradle.kts @@ -68,6 +68,8 @@ dependencies { implementation(libs.androidx.wear.compose.material) implementation(libs.androidx.wear.compose.ui.tooling) implementation(libs.androidx.activity.compose) + implementation(libs.androidx.lifecycle.runtime.compose) + implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(libs.play.services.wearable) implementation(libs.kotlinx.coroutines.play.services) implementation(libs.watchface.push) @@ -76,10 +78,13 @@ dependencies { implementation(libs.kotlinx.serialization.protobuf) implementation(libs.androidx.wear) implementation(libs.androidx.wear.remote.interactions) - implementation(libs.horologist.compose.layout) implementation(libs.accompanist.permissions) implementation(libs.androidx.work.runtime.ktx) + // Added for Compose Preview support + debugImplementation(libs.androidx.ui.tooling) + implementation(libs.androidx.ui.tooling.preview) + "cliToolConfiguration"(libs.validator.push.cli) } diff --git a/wear/src/main/java/com/android/developers/androidify/ui/CallToActionScreen.kt b/wear/src/main/java/com/android/developers/androidify/ui/CallToActionScreen.kt index 7fdde8ed..c2f6f08c 100644 --- a/wear/src/main/java/com/android/developers/androidify/ui/CallToActionScreen.kt +++ b/wear/src/main/java/com/android/developers/androidify/ui/CallToActionScreen.kt @@ -32,8 +32,6 @@ import androidx.wear.compose.material3.Text import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices import com.android.developers.androidify.R import com.android.developers.androidify.ui.theme.AndroidifyWearTheme -import com.google.android.horologist.compose.layout.ColumnItemType -import com.google.android.horologist.compose.layout.rememberResponsiveColumnPadding @Composable fun CallToActionScreen( @@ -44,11 +42,6 @@ fun CallToActionScreen( val listState = rememberTransformingLazyColumnState() ScreenScaffold( scrollState = listState, - // Use Horologist for now to get correct top and bottom padding in list. - contentPadding = rememberResponsiveColumnPadding( - first = ColumnItemType.IconButton, - last = ColumnItemType.Button, - ), ) { contentPadding -> TransformingLazyColumn( state = listState, diff --git a/wear/src/main/java/com/android/developers/androidify/ui/TransmissionScreen.kt b/wear/src/main/java/com/android/developers/androidify/ui/TransmissionScreen.kt index d35b50a3..770d79db 100644 --- a/wear/src/main/java/com/android/developers/androidify/ui/TransmissionScreen.kt +++ b/wear/src/main/java/com/android/developers/androidify/ui/TransmissionScreen.kt @@ -37,12 +37,14 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import androidx.wear.compose.foundation.lazy.TransformingLazyColumn import androidx.wear.compose.foundation.lazy.rememberTransformingLazyColumnState -import androidx.wear.compose.material.CircularProgressIndicator +import androidx.wear.compose.material3.CircularProgressIndicator import androidx.wear.compose.material3.MaterialTheme +import androidx.wear.compose.material3.ProgressIndicatorDefaults import androidx.wear.compose.material3.ScreenScaffold import androidx.wear.compose.material3.Text +import androidx.wear.compose.material3.lazy.ResponsiveItemType +import androidx.wear.compose.material3.lazy.ResponsiveTransformingLazyColumn import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices import com.android.developers.androidify.R import com.android.developers.androidify.ui.theme.AndroidifyWearTheme @@ -50,8 +52,6 @@ import com.android.developers.androidify.ui.theme.Blue import com.android.developers.androidify.ui.theme.LimeGreen import com.android.developers.androidify.ui.theme.Primary80 import com.android.developers.androidify.ui.theme.Primary90 -import com.google.android.horologist.compose.layout.ColumnItemType -import com.google.android.horologist.compose.layout.rememberResponsiveColumnPadding import kotlin.math.floor @Composable @@ -60,33 +60,28 @@ fun TransmissionScreen(modifier: Modifier = Modifier) { ScreenScaffold( modifier = modifier.keepScreenOn(), scrollState = listState, - // Use Horologist for now to get correct top and bottom padding in list. - contentPadding = rememberResponsiveColumnPadding( - first = ColumnItemType.IconButton, - last = ColumnItemType.Button, - ), ) { contentPadding -> - TransformingLazyColumn( + ResponsiveTransformingLazyColumn( state = listState, contentPadding = contentPadding, ) { - item { + item(itemType = ResponsiveItemType.IconButton) { Image( modifier = Modifier.fillMaxWidth(0.3f), painter = painterResource(id = R.drawable.logo), contentDescription = stringResource(R.string.logo_description), ) } - item { + item(itemType = ResponsiveItemType.Default) { Spacer(modifier = Modifier.height(4.dp)) } - item { + item(itemType = ResponsiveItemType.IconButton) { FourColorProgressIndicator() } - item { + item(itemType = ResponsiveItemType.Default) { Spacer(modifier = Modifier.height(4.dp)) } - item { + item(itemType = ResponsiveItemType.Text) { Text( modifier = Modifier.fillMaxWidth(), textAlign = TextAlign.Center, @@ -130,7 +125,9 @@ fun FourColorProgressIndicator() { contentAlignment = Alignment.Center, modifier = Modifier.fillMaxSize(), ) { - CircularProgressIndicator(indicatorColor = animatedColor) + CircularProgressIndicator( + colors = ProgressIndicatorDefaults.colors().copy(indicatorColor = animatedColor), + ) } } From 5582bb428e9e5c9c35ea438374b6aa5cf3e04008 Mon Sep 17 00:00:00 2001 From: garanj Date: Wed, 4 Feb 2026 13:41:46 +0000 Subject: [PATCH 2/3] Remove accidental gradle-daemon-jvm.properties --- gradle/gradle-daemon-jvm.properties | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 gradle/gradle-daemon-jvm.properties diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties deleted file mode 100644 index 6c1139ec..00000000 --- a/gradle/gradle-daemon-jvm.properties +++ /dev/null @@ -1,12 +0,0 @@ -#This file is generated by updateDaemonJvm -toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect -toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect -toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect -toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect -toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/73bcfb608d1fde9fb62e462f834a3299/redirect -toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/846ee0d876d26a26f37aa1ce8de73224/redirect -toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect -toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect -toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/9482ddec596298c84656d31d16652665/redirect -toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/39701d92e1756bb2f141eb67cd4c660e/redirect -toolchainVersion=21 From ba1de4359905d1435c159745fa0fe4a4169cfdf5 Mon Sep 17 00:00:00 2001 From: garanj Date: Wed, 4 Feb 2026 13:44:38 +0000 Subject: [PATCH 3/3] Fix component use --- .../android/developers/androidify/ui/CallToActionScreen.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wear/src/main/java/com/android/developers/androidify/ui/CallToActionScreen.kt b/wear/src/main/java/com/android/developers/androidify/ui/CallToActionScreen.kt index c2f6f08c..82f1e903 100644 --- a/wear/src/main/java/com/android/developers/androidify/ui/CallToActionScreen.kt +++ b/wear/src/main/java/com/android/developers/androidify/ui/CallToActionScreen.kt @@ -24,11 +24,11 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import androidx.wear.compose.foundation.lazy.TransformingLazyColumn import androidx.wear.compose.foundation.lazy.rememberTransformingLazyColumnState import androidx.wear.compose.material3.MaterialTheme import androidx.wear.compose.material3.ScreenScaffold import androidx.wear.compose.material3.Text +import androidx.wear.compose.material3.lazy.ResponsiveTransformingLazyColumn import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices import com.android.developers.androidify.R import com.android.developers.androidify.ui.theme.AndroidifyWearTheme @@ -43,7 +43,7 @@ fun CallToActionScreen( ScreenScaffold( scrollState = listState, ) { contentPadding -> - TransformingLazyColumn( + ResponsiveTransformingLazyColumn( state = listState, contentPadding = contentPadding, ) {