From d0202f25aecc2d738e096eb8088c1b6ae6d89faf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Braun?= Date: Tue, 12 Apr 2022 15:30:30 +0200 Subject: [PATCH 001/463] Add coroutine testing snippets --- kotlin/.gitignore | 1 + kotlin/build.gradle | 29 +++++++ kotlin/proguard-rules.pro | 21 +++++ kotlin/src/main/AndroidManifest.xml | 2 + .../coroutines/testing/HomeViewModel.kt | 36 ++++++++ .../android/coroutines/testing/Repository.kt | 70 ++++++++++++++++ .../coroutines/testing/UserRepository.kt | 37 +++++++++ .../coroutines/testing/CreatingYourOwn.kt | 49 +++++++++++ .../coroutines/testing/DispatcherTypesTest.kt | 38 +++++++++ .../testing/DispatchersOutsideTests.kt | 82 +++++++++++++++++++ .../coroutines/testing/HomeViewModelTest.kt | 44 ++++++++++ .../testing/HomeViewModelTestUsingRule.kt | 55 +++++++++++++ .../coroutines/testing/RepositoryTest.kt | 42 ++++++++++ .../testing/StandardTestDispatcherTest.kt | 53 ++++++++++++ .../testing/SuspendingFunctionTests.kt | 37 +++++++++ .../testing/UnconfinedTestDispatcherTest.kt | 53 ++++++++++++ settings.gradle | 8 +- 17 files changed, 656 insertions(+), 1 deletion(-) create mode 100644 kotlin/.gitignore create mode 100644 kotlin/build.gradle create mode 100644 kotlin/proguard-rules.pro create mode 100644 kotlin/src/main/AndroidManifest.xml create mode 100644 kotlin/src/main/kotlin/com/example/android/coroutines/testing/HomeViewModel.kt create mode 100644 kotlin/src/main/kotlin/com/example/android/coroutines/testing/Repository.kt create mode 100644 kotlin/src/main/kotlin/com/example/android/coroutines/testing/UserRepository.kt create mode 100644 kotlin/src/test/kotlin/com/example/android/coroutines/testing/CreatingYourOwn.kt create mode 100644 kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatcherTypesTest.kt create mode 100644 kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatchersOutsideTests.kt create mode 100644 kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTest.kt create mode 100644 kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTestUsingRule.kt create mode 100644 kotlin/src/test/kotlin/com/example/android/coroutines/testing/RepositoryTest.kt create mode 100644 kotlin/src/test/kotlin/com/example/android/coroutines/testing/StandardTestDispatcherTest.kt create mode 100644 kotlin/src/test/kotlin/com/example/android/coroutines/testing/SuspendingFunctionTests.kt create mode 100644 kotlin/src/test/kotlin/com/example/android/coroutines/testing/UnconfinedTestDispatcherTest.kt diff --git a/kotlin/.gitignore b/kotlin/.gitignore new file mode 100644 index 000000000..796b96d1c --- /dev/null +++ b/kotlin/.gitignore @@ -0,0 +1 @@ +/build diff --git a/kotlin/build.gradle b/kotlin/build.gradle new file mode 100644 index 000000000..90140eb81 --- /dev/null +++ b/kotlin/build.gradle @@ -0,0 +1,29 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' + +android { + compileSdkVersion 31 + + defaultConfig { + minSdkVersion 19 + targetSdkVersion 31 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1' + def coroutines_version = "1.6.1" + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version" + testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines_version" + testImplementation 'junit:junit:4.13.2' +} diff --git a/kotlin/proguard-rules.pro b/kotlin/proguard-rules.pro new file mode 100644 index 000000000..f1b424510 --- /dev/null +++ b/kotlin/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/kotlin/src/main/AndroidManifest.xml b/kotlin/src/main/AndroidManifest.xml new file mode 100644 index 000000000..0635de6bd --- /dev/null +++ b/kotlin/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/kotlin/src/main/kotlin/com/example/android/coroutines/testing/HomeViewModel.kt b/kotlin/src/main/kotlin/com/example/android/coroutines/testing/HomeViewModel.kt new file mode 100644 index 000000000..9a22ca90a --- /dev/null +++ b/kotlin/src/main/kotlin/com/example/android/coroutines/testing/HomeViewModel.kt @@ -0,0 +1,36 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.coroutines.testing + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch + +// [START coroutine_test_homeviewmodel] +class HomeViewModel : ViewModel() { + private val _message = MutableStateFlow("") + val message: StateFlow get() = _message + + fun loadMessage() { + viewModelScope.launch { + _message.value = "Greetings!" + } + } +} +// [END coroutine_test_homeviewmodel] diff --git a/kotlin/src/main/kotlin/com/example/android/coroutines/testing/Repository.kt b/kotlin/src/main/kotlin/com/example/android/coroutines/testing/Repository.kt new file mode 100644 index 000000000..a9348691b --- /dev/null +++ b/kotlin/src/main/kotlin/com/example/android/coroutines/testing/Repository.kt @@ -0,0 +1,70 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.coroutines.testing + +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import java.util.concurrent.atomic.AtomicBoolean + +// [START coroutine_test_repo_dispatcher_injection] +// Example class demonstrating dispatcher use cases +class Repository(private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO) { + private val scope = CoroutineScope(ioDispatcher) + val initialized = AtomicBoolean(false) + + // A function that starts a new coroutine on the IO dispatcher + fun initialize() { + scope.launch { + initialized.set(true) + } + } + + // A suspending function that switches to the IO dispatcher + suspend fun fetchData(): String = withContext(ioDispatcher) { + require(initialized.get()) { "Repository should be initialized first" } + delay(500L) + "Hello world" + } +} +// [END coroutine_test_repo_dispatcher_injection] + +// [START coroutine_test_repo_dispatcher_injection_better] +class BetterRepository(private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO) { + private val scope = CoroutineScope(ioDispatcher) + // [START_EXCLUDE silent] + val initialized = AtomicBoolean(false) + // [END_EXCLUDE] + + fun initialize() = scope.async { + // [START_EXCLUDE] + initialized.set(true) + // [END_EXCLUDE] + } + // [START_EXCLUDE silent] + suspend fun fetchData(): String = withContext(ioDispatcher) { + require(initialized.get()) { "Repository should be initialized first" } + delay(500L) + "Hello world" + } + // [END_EXCLUDE] +} +// [END coroutine_test_repo_dispatcher_injection_better] diff --git a/kotlin/src/main/kotlin/com/example/android/coroutines/testing/UserRepository.kt b/kotlin/src/main/kotlin/com/example/android/coroutines/testing/UserRepository.kt new file mode 100644 index 000000000..b53dee883 --- /dev/null +++ b/kotlin/src/main/kotlin/com/example/android/coroutines/testing/UserRepository.kt @@ -0,0 +1,37 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.coroutines.testing + +import kotlinx.coroutines.delay + +/** + * Simple example class to be tested + */ +class UserRepository { + private var users = mutableListOf() + + suspend fun register(name: String) { + delay(100L) + users += name + println("Registered $name") + } + + suspend fun getAllUsers(): List { + delay(100L) + return users + } +} diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/CreatingYourOwn.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/CreatingYourOwn.kt new file mode 100644 index 000000000..727a7c8a7 --- /dev/null +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/CreatingYourOwn.kt @@ -0,0 +1,49 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.coroutines.testing + +import kotlinx.coroutines.test.StandardTestDispatcher +import kotlinx.coroutines.test.TestCoroutineScheduler +import kotlinx.coroutines.test.TestScope +import kotlinx.coroutines.test.runTest +import org.junit.Test + +class CreatingYourOwn { + // [START coroutine_test_your_own_scope] + class SimpleExampleTest { + val testScope = TestScope() // Creates a StandardTestDispatcher + + @Test + fun someTest() = testScope.runTest { + // ... + } + } + // [END coroutine_test_your_own_scope] + + // [START coroutine_test_your_own_everything] + class ExampleTest { + val testScheduler = TestCoroutineScheduler() + val testDispatcher = StandardTestDispatcher(testScheduler) + val testScope = TestScope(testDispatcher) + + @Test + fun someTest() = testScope.runTest { + // ... + } + } + // [END coroutine_test_your_own_everything] +} diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatcherTypesTest.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatcherTypesTest.kt new file mode 100644 index 000000000..7e33eb22c --- /dev/null +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatcherTypesTest.kt @@ -0,0 +1,38 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.coroutines.testing + +import kotlinx.coroutines.test.StandardTestDispatcher +import kotlinx.coroutines.test.runTest +import org.junit.Rule +import org.junit.Test + +// [START coroutine_test_dispatcher_types] +class DispatcherTypesTest { + @get:Rule + val mainDispatcherRule = MainDispatcherRule() + + @Test + fun injectingTestDispatchers() = runTest { // Uses Main’s scheduler + // Use the UnconfinedTestDispatcher from the Main dispatcher + val unconfinedRepo = Repository(mainDispatcherRule.testDispatcher) + + // Create a new StandardTestDispatcher (uses Main’s scheduler) + val standardRepo = Repository(StandardTestDispatcher()) + } +} +// [END coroutine_test_dispatcher_types] diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatchersOutsideTests.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatchersOutsideTests.kt new file mode 100644 index 000000000..1ec079c11 --- /dev/null +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatchersOutsideTests.kt @@ -0,0 +1,82 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.coroutines.testing.repo + +import com.example.android.coroutines.testing.MainDispatcherRule +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.test.StandardTestDispatcher +import kotlinx.coroutines.test.UnconfinedTestDispatcher +import kotlinx.coroutines.test.runTest +import org.junit.Rule +import org.junit.Test + +// Helper function to let code below compile +private fun Repository(): Repository = TODO() + +private +// [START coroutine_test_repo_with_rule_blank] +class Repository(private val ioDispatcher: CoroutineDispatcher) { /* ... */ } + +class RepositoryTestWithRule { + private val repository = Repository(/* What TestDispatcher? */) + + @get:Rule + val mainDispatcherRule = MainDispatcherRule() + + @Test + fun someRepositoryTest() = runTest { + // Test the repository... + } +} +// [END coroutine_test_repo_with_rule_blank] + +class DispatchersOutsideTests { + // [START coroutine_test_repo_with_rule] + class RepositoryTestWithRule { + @get:Rule + val mainDispatcherRule = MainDispatcherRule() + + private val repository = Repository(mainDispatcherRule.testDispatcher) + + @Test + fun someRepositoryTest() = runTest { // Takes scheduler from Main + // Any TestDispatcher created here also takes the scheduler from Main + val newTestDispatcher = StandardTestDispatcher() + + // Test the repository... + } + } + // [END coroutine_test_repo_with_rule] + + // [START coroutine_test_repo_without_rule] + class RepositoryTest { + // Creates the single test scheduler + private val testDispatcher = UnconfinedTestDispatcher() + private val repository = Repository(testDispatcher) + + @Test + fun someRepositoryTest() = runTest(testDispatcher.scheduler) { + // Take the scheduler from the TestScope + val newTestDispatcher = UnconfinedTestDispatcher(this.testScheduler) + // Or take the scheduler from the first dispatcher, they’re the same + val anotherTestDispatcher = UnconfinedTestDispatcher(testDispatcher.scheduler) + + // Test the repository... + } + } + // [END coroutine_test_repo_without_rule] +} diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTest.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTest.kt new file mode 100644 index 000000000..1797d1eea --- /dev/null +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTest.kt @@ -0,0 +1,44 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.coroutines.testing + +import com.example.android.coroutines.testing.HomeViewModel +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.test.UnconfinedTestDispatcher +import kotlinx.coroutines.test.resetMain +import kotlinx.coroutines.test.runTest +import kotlinx.coroutines.test.setMain +import org.junit.Assert.assertEquals +import org.junit.Test + +// [START coroutine_test_homeviewmodel_test] +class HomeViewModelTest { + @Test + fun settingMainDispatcher() = runTest { + val testDispatcher = UnconfinedTestDispatcher(testScheduler) + Dispatchers.setMain(testDispatcher) + + try { + val viewModel = HomeViewModel() + viewModel.loadMessage() // Uses testDispatcher, runs its coroutine eagerly + assertEquals("Greetings!", viewModel.message.value) + } finally { + Dispatchers.resetMain() + } + } +} +// [END coroutine_test_homeviewmodel_test] diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTestUsingRule.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTestUsingRule.kt new file mode 100644 index 000000000..6b2024cfa --- /dev/null +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTestUsingRule.kt @@ -0,0 +1,55 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.coroutines.testing + +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.test.TestDispatcher +import kotlinx.coroutines.test.UnconfinedTestDispatcher +import kotlinx.coroutines.test.resetMain +import kotlinx.coroutines.test.runTest +import kotlinx.coroutines.test.setMain +import org.junit.Assert +import org.junit.Rule +import org.junit.Test +import org.junit.rules.TestWatcher +import org.junit.runner.Description + +// [START coroutine_test_homeviewmodeltest_with_rule] +// Reusable JUnit4 TestRule to override the Main dispatcher +class MainDispatcherRule( + val testDispatcher: TestDispatcher = UnconfinedTestDispatcher(), +) : TestWatcher() { + override fun starting(description: Description) { + Dispatchers.setMain(testDispatcher) + } + override fun finished(description: Description) { + Dispatchers.resetMain() + } +} + +class HomeViewModelTestUsingRule { + @get:Rule + val mainDispatcherRule = MainDispatcherRule() + + @Test + fun settingMainDispatcher() = runTest { // Uses Main’s scheduler + val viewModel = HomeViewModel() + viewModel.loadMessage() + Assert.assertEquals("Greetings!", viewModel.message.value) + } +} +// [END coroutine_test_homeviewmodeltest_with_rule] diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/RepositoryTest.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/RepositoryTest.kt new file mode 100644 index 000000000..9715fe668 --- /dev/null +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/RepositoryTest.kt @@ -0,0 +1,42 @@ +package com.example.android.coroutines.testing + +import kotlinx.coroutines.test.StandardTestDispatcher +import kotlinx.coroutines.test.advanceUntilIdle +import kotlinx.coroutines.test.runTest +import org.junit.Assert.assertEquals +import org.junit.Test + +// [START coroutine_test_repo_dispatcher_injection_test] +class RepositoryTest { + @Test + fun repoInitWorksAndDataIsHelloWorld() = runTest { + val dispatcher = StandardTestDispatcher(testScheduler) + val repository = Repository(dispatcher) + + repository.initialize() + advanceUntilIdle() // Runs the new coroutine + assertEquals(true, repository.initialized.get()) + + val data = repository.fetchData() // No thread switch, delay is skipped + assertEquals("Hello world", data) + } +} +// [END coroutine_test_repo_dispatcher_injection_test] + +class BetterRepositoryTest { + // [START coroutine_test_repo_dispatcher_injection_test_better] + @Test + fun repoInitWorks() = runTest { + val dispatcher = StandardTestDispatcher(testScheduler) + val repository = BetterRepository(dispatcher) + + repository.initialize().await() // Suspends until the new coroutine is done + assertEquals(true, repository.initialized.get()) + + // [START_EXCLUDE] + val data = repository.fetchData() + assertEquals("Hello world", data) + // [END_EXCLUDE] + } + // [END coroutine_test_repo_dispatcher_injection_test_better] +} diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/StandardTestDispatcherTest.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/StandardTestDispatcherTest.kt new file mode 100644 index 000000000..18562074d --- /dev/null +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/StandardTestDispatcherTest.kt @@ -0,0 +1,53 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.coroutines.testing + +import com.example.android.coroutines.testing.UserRepository +import kotlinx.coroutines.launch +import kotlinx.coroutines.test.advanceUntilIdle +import kotlinx.coroutines.test.runTest +import org.junit.Assert.assertEquals +import org.junit.Test + +class StandardTestDispatcherTest { + // [START coroutine_test_standard_failing] + @Test + fun standardTest() = runTest { + val userRepo = UserRepository() + + launch { userRepo.register("Alice") } + launch { userRepo.register("Bob") } + + assertEquals(listOf("Alice", "Bob"), userRepo.getAllUsers()) // ❌ Fails + } + // [END coroutine_test_standard_failing] +} + +class StandardTestDispatcherTest_Fixed { + // [START coroutine_test_standard_fixed] + @Test + fun standardTest() = runTest { + val userRepo = UserRepository() + + launch { userRepo.register("Alice") } + launch { userRepo.register("Bob") } + advanceUntilIdle() // Yields to perform the registrations + + assertEquals(listOf("Alice", "Bob"), userRepo.getAllUsers()) // ✅ Passes + } + // [END coroutine_test_standard_fixed] +} \ No newline at end of file diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/SuspendingFunctionTests.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/SuspendingFunctionTests.kt new file mode 100644 index 000000000..90e0ab79f --- /dev/null +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/SuspendingFunctionTests.kt @@ -0,0 +1,37 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.coroutines.testing + +import kotlinx.coroutines.delay +import kotlinx.coroutines.test.runTest +import org.junit.Assert.assertEquals +import org.junit.Test + +class SuspendingFunctionTests { + // [START coroutine_test_runtest] + suspend fun fetchData(): String { + delay(1000L) + return "Hello world" + } + + @Test + fun dataShouldBeHelloWorld() = runTest { + val data = fetchData() + assertEquals("Hello world", data) + } + // [END coroutine_test_runtest] +} diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/UnconfinedTestDispatcherTest.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/UnconfinedTestDispatcherTest.kt new file mode 100644 index 000000000..dde909014 --- /dev/null +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/UnconfinedTestDispatcherTest.kt @@ -0,0 +1,53 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.coroutines.testing + +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.test.UnconfinedTestDispatcher +import kotlinx.coroutines.test.runTest +import org.junit.Assert.assertEquals +import org.junit.Test + +class UnconfinedTestDispatcherTest { + // [START coroutine_test_unconfined] + @Test + fun unconfinedTest() = runTest(UnconfinedTestDispatcher()) { + val userRepo = UserRepository() + + launch { userRepo.register("Alice") } + launch { userRepo.register("Bob") } + + assertEquals(listOf("Alice", "Bob"), userRepo.getAllUsers()) // ✅ Passes + } + // [END coroutine_test_unconfined] + + // [START coroutine_test_unconfined_yielding] + @Test + fun yieldingTest() = runTest(UnconfinedTestDispatcher()) { + val userRepo = UserRepository() + + launch { + userRepo.register("Alice") + delay(10L) + userRepo.register("Bob") + } + + assertEquals(listOf("Alice", "Bob"), userRepo.getAllUsers()) // ❌ Fails + } + // [END coroutine_test_unconfined_yielding] +} diff --git a/settings.gradle b/settings.gradle index 290f75643..b16cac154 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,7 @@ -include ':shared', ':slice', ':bluetoothle', ':compose:recomposehighlighter' +include( + ':shared', + ':slice', + ':bluetoothle', + ':compose:recomposehighlighter', + ':kotlin', +) From be463d198501e09a4a91a3880ad4ad72835dbef6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Braun?= Date: Thu, 14 Apr 2022 22:11:08 +0200 Subject: [PATCH 002/463] Fix indentation --- .../coroutines/testing/HomeViewModel.kt | 14 +++++----- .../android/coroutines/testing/Repository.kt | 28 +++++++++---------- .../coroutines/testing/DispatcherTypesTest.kt | 18 ++++++------ .../coroutines/testing/HomeViewModelTest.kt | 25 ++++++++--------- .../testing/HomeViewModelTestUsingRule.kt | 17 +++++------ .../coroutines/testing/RepositoryTest.kt | 20 ++++++------- .../testing/StandardTestDispatcherTest.kt | 1 - 7 files changed, 61 insertions(+), 62 deletions(-) diff --git a/kotlin/src/main/kotlin/com/example/android/coroutines/testing/HomeViewModel.kt b/kotlin/src/main/kotlin/com/example/android/coroutines/testing/HomeViewModel.kt index 9a22ca90a..9dea9a720 100644 --- a/kotlin/src/main/kotlin/com/example/android/coroutines/testing/HomeViewModel.kt +++ b/kotlin/src/main/kotlin/com/example/android/coroutines/testing/HomeViewModel.kt @@ -24,13 +24,13 @@ import kotlinx.coroutines.launch // [START coroutine_test_homeviewmodel] class HomeViewModel : ViewModel() { - private val _message = MutableStateFlow("") - val message: StateFlow get() = _message + private val _message = MutableStateFlow("") + val message: StateFlow get() = _message - fun loadMessage() { - viewModelScope.launch { - _message.value = "Greetings!" - } - } + fun loadMessage() { + viewModelScope.launch { + _message.value = "Greetings!" + } + } } // [END coroutine_test_homeviewmodel] diff --git a/kotlin/src/main/kotlin/com/example/android/coroutines/testing/Repository.kt b/kotlin/src/main/kotlin/com/example/android/coroutines/testing/Repository.kt index a9348691b..babf205c6 100644 --- a/kotlin/src/main/kotlin/com/example/android/coroutines/testing/Repository.kt +++ b/kotlin/src/main/kotlin/com/example/android/coroutines/testing/Repository.kt @@ -28,22 +28,22 @@ import java.util.concurrent.atomic.AtomicBoolean // [START coroutine_test_repo_dispatcher_injection] // Example class demonstrating dispatcher use cases class Repository(private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO) { - private val scope = CoroutineScope(ioDispatcher) - val initialized = AtomicBoolean(false) + private val scope = CoroutineScope(ioDispatcher) + val initialized = AtomicBoolean(false) - // A function that starts a new coroutine on the IO dispatcher - fun initialize() { - scope.launch { - initialized.set(true) - } - } + // A function that starts a new coroutine on the IO dispatcher + fun initialize() { + scope.launch { + initialized.set(true) + } + } - // A suspending function that switches to the IO dispatcher - suspend fun fetchData(): String = withContext(ioDispatcher) { - require(initialized.get()) { "Repository should be initialized first" } - delay(500L) - "Hello world" - } + // A suspending function that switches to the IO dispatcher + suspend fun fetchData(): String = withContext(ioDispatcher) { + require(initialized.get()) { "Repository should be initialized first" } + delay(500L) + "Hello world" + } } // [END coroutine_test_repo_dispatcher_injection] diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatcherTypesTest.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatcherTypesTest.kt index 7e33eb22c..bbe6b117e 100644 --- a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatcherTypesTest.kt +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatcherTypesTest.kt @@ -23,16 +23,16 @@ import org.junit.Test // [START coroutine_test_dispatcher_types] class DispatcherTypesTest { - @get:Rule - val mainDispatcherRule = MainDispatcherRule() + @get:Rule + val mainDispatcherRule = MainDispatcherRule() - @Test - fun injectingTestDispatchers() = runTest { // Uses Main’s scheduler - // Use the UnconfinedTestDispatcher from the Main dispatcher - val unconfinedRepo = Repository(mainDispatcherRule.testDispatcher) + @Test + fun injectingTestDispatchers() = runTest { // Uses Main’s scheduler + // Use the UnconfinedTestDispatcher from the Main dispatcher + val unconfinedRepo = Repository(mainDispatcherRule.testDispatcher) - // Create a new StandardTestDispatcher (uses Main’s scheduler) - val standardRepo = Repository(StandardTestDispatcher()) - } + // Create a new StandardTestDispatcher (uses Main’s scheduler) + val standardRepo = Repository(StandardTestDispatcher()) + } } // [END coroutine_test_dispatcher_types] diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTest.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTest.kt index 1797d1eea..d4efc2e58 100644 --- a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTest.kt +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTest.kt @@ -16,7 +16,6 @@ package com.example.android.coroutines.testing -import com.example.android.coroutines.testing.HomeViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.resetMain @@ -27,18 +26,18 @@ import org.junit.Test // [START coroutine_test_homeviewmodel_test] class HomeViewModelTest { - @Test - fun settingMainDispatcher() = runTest { - val testDispatcher = UnconfinedTestDispatcher(testScheduler) - Dispatchers.setMain(testDispatcher) + @Test + fun settingMainDispatcher() = runTest { + val testDispatcher = UnconfinedTestDispatcher(testScheduler) + Dispatchers.setMain(testDispatcher) - try { - val viewModel = HomeViewModel() - viewModel.loadMessage() // Uses testDispatcher, runs its coroutine eagerly - assertEquals("Greetings!", viewModel.message.value) - } finally { - Dispatchers.resetMain() - } - } + try { + val viewModel = HomeViewModel() + viewModel.loadMessage() // Uses testDispatcher, runs its coroutine eagerly + assertEquals("Greetings!", viewModel.message.value) + } finally { + Dispatchers.resetMain() + } + } } // [END coroutine_test_homeviewmodel_test] diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTestUsingRule.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTestUsingRule.kt index 6b2024cfa..5925dad2f 100644 --- a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTestUsingRule.kt +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTestUsingRule.kt @@ -36,20 +36,21 @@ class MainDispatcherRule( override fun starting(description: Description) { Dispatchers.setMain(testDispatcher) } + override fun finished(description: Description) { Dispatchers.resetMain() } } class HomeViewModelTestUsingRule { - @get:Rule - val mainDispatcherRule = MainDispatcherRule() + @get:Rule + val mainDispatcherRule = MainDispatcherRule() - @Test - fun settingMainDispatcher() = runTest { // Uses Main’s scheduler - val viewModel = HomeViewModel() - viewModel.loadMessage() - Assert.assertEquals("Greetings!", viewModel.message.value) - } + @Test + fun settingMainDispatcher() = runTest { // Uses Main’s scheduler + val viewModel = HomeViewModel() + viewModel.loadMessage() + Assert.assertEquals("Greetings!", viewModel.message.value) + } } // [END coroutine_test_homeviewmodeltest_with_rule] diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/RepositoryTest.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/RepositoryTest.kt index 9715fe668..b930c5917 100644 --- a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/RepositoryTest.kt +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/RepositoryTest.kt @@ -8,18 +8,18 @@ import org.junit.Test // [START coroutine_test_repo_dispatcher_injection_test] class RepositoryTest { - @Test - fun repoInitWorksAndDataIsHelloWorld() = runTest { - val dispatcher = StandardTestDispatcher(testScheduler) - val repository = Repository(dispatcher) + @Test + fun repoInitWorksAndDataIsHelloWorld() = runTest { + val dispatcher = StandardTestDispatcher(testScheduler) + val repository = Repository(dispatcher) - repository.initialize() - advanceUntilIdle() // Runs the new coroutine - assertEquals(true, repository.initialized.get()) + repository.initialize() + advanceUntilIdle() // Runs the new coroutine + assertEquals(true, repository.initialized.get()) - val data = repository.fetchData() // No thread switch, delay is skipped - assertEquals("Hello world", data) - } + val data = repository.fetchData() // No thread switch, delay is skipped + assertEquals("Hello world", data) + } } // [END coroutine_test_repo_dispatcher_injection_test] diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/StandardTestDispatcherTest.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/StandardTestDispatcherTest.kt index 18562074d..f0c0f98e2 100644 --- a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/StandardTestDispatcherTest.kt +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/StandardTestDispatcherTest.kt @@ -16,7 +16,6 @@ package com.example.android.coroutines.testing -import com.example.android.coroutines.testing.UserRepository import kotlinx.coroutines.launch import kotlinx.coroutines.test.advanceUntilIdle import kotlinx.coroutines.test.runTest From 6f05ed5a431c89f083374e49a3c8dd8c7dc5b350 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Braun?= Date: Tue, 19 Apr 2022 09:42:38 +0200 Subject: [PATCH 003/463] Fix import and newline --- .../android/coroutines/testing/HomeViewModelTestUsingRule.kt | 3 ++- .../com/example/android/coroutines/testing/RepositoryTest.kt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTestUsingRule.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTestUsingRule.kt index 5925dad2f..882488f8f 100644 --- a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTestUsingRule.kt +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTestUsingRule.kt @@ -23,6 +23,7 @@ import kotlinx.coroutines.test.resetMain import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.setMain import org.junit.Assert +import org.junit.Assert.assertEquals import org.junit.Rule import org.junit.Test import org.junit.rules.TestWatcher @@ -50,7 +51,7 @@ class HomeViewModelTestUsingRule { fun settingMainDispatcher() = runTest { // Uses Main’s scheduler val viewModel = HomeViewModel() viewModel.loadMessage() - Assert.assertEquals("Greetings!", viewModel.message.value) + assertEquals("Greetings!", viewModel.message.value) } } // [END coroutine_test_homeviewmodeltest_with_rule] diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/RepositoryTest.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/RepositoryTest.kt index b930c5917..ec0a47c49 100644 --- a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/RepositoryTest.kt +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/RepositoryTest.kt @@ -32,8 +32,8 @@ class BetterRepositoryTest { repository.initialize().await() // Suspends until the new coroutine is done assertEquals(true, repository.initialized.get()) - // [START_EXCLUDE] + val data = repository.fetchData() assertEquals("Hello world", data) // [END_EXCLUDE] From 02d130ef3a022283ed6fae5c2d3e8e846f326a91 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 15 Nov 2022 13:40:04 +0000 Subject: [PATCH 004/463] Graphics: Brush snippets added. --- build.gradle | 6 +- compose/snippets/.gitignore | 1 + compose/snippets/build.gradle | 63 ++++ compose/snippets/proguard-rules.pro | 21 ++ compose/snippets/src/main/AndroidManifest.xml | 28 ++ .../compose/snippets/SnippetsActivity.kt | 28 ++ .../snippets/graphics/BrushExampleSnippets.kt | 306 ++++++++++++++++++ .../compose/snippets/ui/theme/Color.kt | 11 + .../compose/snippets/ui/theme/Theme.kt | 69 ++++ .../example/compose/snippets/ui/theme/Type.kt | 34 ++ .../drawable-v24/ic_launcher_foreground.xml | 30 ++ .../snippets/src/main/res/drawable/dog.jpg | Bin 0 -> 94347 bytes .../res/drawable/ic_launcher_background.xml | 170 ++++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 6 + .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1404 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2898 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 982 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1772 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1900 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3918 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2884 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 5914 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 7778 bytes .../snippets/src/main/res/values/colors.xml | 10 + .../snippets/src/main/res/values/strings.xml | 3 + .../snippets/src/main/res/values/themes.xml | 5 + settings.gradle | 1 + 29 files changed, 795 insertions(+), 3 deletions(-) create mode 100644 compose/snippets/.gitignore create mode 100644 compose/snippets/build.gradle create mode 100644 compose/snippets/proguard-rules.pro create mode 100644 compose/snippets/src/main/AndroidManifest.xml create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/graphics/BrushExampleSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Color.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Theme.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Type.kt create mode 100644 compose/snippets/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 compose/snippets/src/main/res/drawable/dog.jpg create mode 100644 compose/snippets/src/main/res/drawable/ic_launcher_background.xml create mode 100644 compose/snippets/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 compose/snippets/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 compose/snippets/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 compose/snippets/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 compose/snippets/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 compose/snippets/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 compose/snippets/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 compose/snippets/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 compose/snippets/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 compose/snippets/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 compose/snippets/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 compose/snippets/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 compose/snippets/src/main/res/values/colors.xml create mode 100644 compose/snippets/src/main/res/values/strings.xml create mode 100644 compose/snippets/src/main/res/values/themes.xml diff --git a/build.gradle b/build.gradle index 77a947201..0ef8d43ad 100644 --- a/build.gradle +++ b/build.gradle @@ -2,15 +2,15 @@ buildscript { ext { - compose_version = '1.2.0-alpha04' - kotlin_version = '1.6.10' + compose_version = '1.3.1' + kotlin_version = '1.7.10' } repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:7.1.2' + classpath 'com.android.tools.build:gradle:7.1.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong diff --git a/compose/snippets/.gitignore b/compose/snippets/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/compose/snippets/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/compose/snippets/build.gradle b/compose/snippets/build.gradle new file mode 100644 index 000000000..a8c0b2d69 --- /dev/null +++ b/compose/snippets/build.gradle @@ -0,0 +1,63 @@ +plugins { + id 'com.android.application' + id 'org.jetbrains.kotlin.android' +} + +android { + namespace 'com.example.compose.snippets' + compileSdk 33 + + defaultConfig { + applicationId "com.example.compose.snippets" + minSdk 21 + targetSdk 33 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + vectorDrawables { + useSupportLibrary true + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } + buildFeatures { + compose true + } + composeOptions { + kotlinCompilerExtensionVersion '1.3.0' + } + packagingOptions { + resources { + excludes += '/META-INF/{AL2.0,LGPL2.1}' + } + } +} + +dependencies { + + implementation 'androidx.core:core-ktx:1.9.0' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation 'androidx.activity:activity-compose:1.6.1' + implementation "androidx.compose.ui:ui:$compose_version" + implementation "androidx.compose.ui:ui-tooling-preview:$compose_version" + implementation 'androidx.compose.material3:material3:1.0.1' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.4' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0' + androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version" + debugImplementation "androidx.compose.ui:ui-tooling:$compose_version" + debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version" +} \ No newline at end of file diff --git a/compose/snippets/proguard-rules.pro b/compose/snippets/proguard-rules.pro new file mode 100644 index 000000000..481bb4348 --- /dev/null +++ b/compose/snippets/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/compose/snippets/src/main/AndroidManifest.xml b/compose/snippets/src/main/AndroidManifest.xml new file mode 100644 index 000000000..6bdacda9f --- /dev/null +++ b/compose/snippets/src/main/AndroidManifest.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt new file mode 100644 index 000000000..fe7e56c40 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -0,0 +1,28 @@ +package com.example.compose.snippets + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.ui.Modifier +import com.example.compose.snippets.graphics.BrushExamplesScreen +import com.example.compose.snippets.ui.theme.SnippetsTheme + +class SnippetsActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + SnippetsTheme { + // A surface container using the 'background' color from the theme + Surface( + modifier = Modifier.fillMaxSize(), + color = MaterialTheme.colorScheme.background + ) { + BrushExamplesScreen() + } + } + } + } +} \ No newline at end of file diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/BrushExampleSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/BrushExampleSnippets.kt new file mode 100644 index 000000000..b5a1882e9 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/BrushExampleSnippets.kt @@ -0,0 +1,306 @@ +package com.example.compose.snippets.graphics + +import android.graphics.RuntimeShader +import android.os.Build +import androidx.annotation.RequiresApi +import androidx.compose.foundation.Canvas +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.requiredSize +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.draw.drawWithCache +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.geometry.center +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ImageBitmap +import androidx.compose.ui.graphics.ImageShader +import androidx.compose.ui.graphics.LinearGradientShader +import androidx.compose.ui.graphics.RadialGradientShader +import androidx.compose.ui.graphics.Shader +import androidx.compose.ui.graphics.ShaderBrush +import androidx.compose.ui.graphics.TileMode +import androidx.compose.ui.graphics.drawscope.inset +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.res.imageResource +import androidx.compose.ui.text.ExperimentalTextApi +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.compose.snippets.R +import org.intellij.lang.annotations.Language + +/* +* Copyright 2022 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +@Composable +fun BrushExamplesScreen() { + Column(Modifier.verticalScroll(rememberScrollState())) { + GraphicsBrushCanvasUsage() + GraphicsBrushColorStopUsage() + GraphicsBrushTileMode() + GraphicsBrushSize() + GraphicsBrushSizeRecreationExample() + GraphicsImageBrush() + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + ShaderBrushExample() + } + } +} + + +@Preview +@Composable +fun GraphicsBrushCanvasUsage() { + // [START brush_basic_canvas] + val brush = Brush.horizontalGradient(listOf(Color.Red, Color.Blue)) + Canvas( + modifier = Modifier.size(200.dp), + onDraw = { + drawCircle(brush) + } + ) + // [END brush_basic_canvas] +} + +@Preview +@Composable +fun GraphicsBrushColorStopUsage() { + // [START brush_color_stop] + val colorStops = arrayOf( + 0.0f to Color.Yellow, + 0.2f to Color.Red, + 1f to Color.Blue + ) + Box( + modifier = Modifier + .requiredSize(200.dp) + .background(Brush.horizontalGradient(colorStops = colorStops)) + ) + // [END brush_color_stop] +} + +@Preview +@Composable +fun GraphicsBrushTileMode() { + // [START brush_tile_mode] + val listColors = listOf(Color.Yellow, Color.Red, Color.Blue) + val tileSize = with(LocalDensity.current) { + 50.dp.toPx() + } + Box( + modifier = Modifier + .requiredSize(200.dp) + .background( + Brush.horizontalGradient( + listColors, + endX = tileSize, + tileMode = TileMode.Repeated + ) + ) + ) + // [END brush_tile_mode] +} + +@Composable +@Preview +fun GraphicsBrushSize() { + // [START graphics_brush_size] + val listColors = listOf(Color.Yellow, Color.Red, Color.Blue) + val customBrush = remember { + object : ShaderBrush() { + override fun createShader(size: Size): Shader { + return LinearGradientShader( + colors = listColors, + from = Offset.Zero, + to = Offset(size.width / 4f, 0f), + tileMode = TileMode.Mirror + ) + } + + } + } + Box( + modifier = Modifier + .requiredSize(200.dp) + .background(customBrush) + ) + // [END graphics_brush_size] +} + +@Composable +@Preview +fun GraphicsBrushSizeRadialGradientBefore() { + // [START graphics_brush_size_radial_before] + Box( + modifier = Modifier + .fillMaxSize() + .background( + Brush.radialGradient( + listOf(Color(0xFF2be4dc), Color(0xFF243484)) + ) + ) + ) + // [END graphics_brush_size_radial_before] +} + +@Preview +@Composable +fun GraphicsBrushSizeRadialGradientAfter() { + // [START graphics_brush_size_radial_after] + val largeRadialGradient = object : ShaderBrush() { + override fun createShader(size: Size): Shader { + val biggerDimension = maxOf(size.height, size.width) + return RadialGradientShader( + colors = listOf(Color(0xFF2be4dc), Color(0xFF243484)), + center = size.center, + radius = biggerDimension / 2f, + colorStops = listOf(0f, 0.95f) + ) + } + + } + Box( + modifier = Modifier + .fillMaxSize() + .background(largeRadialGradient) + ) + // [END graphics_brush_size_radial_after] +} + +@Preview +@Composable +fun GraphicsBrushSizeRecreationExample() { + // [START graphics_brush_recreation] + val colorStops = arrayOf( + 0.0f to Color.Yellow, + 0.2f to Color.Red, + 1f to Color.Blue + ) + val brush = Brush.horizontalGradient(colorStops = colorStops) + Box( + modifier = Modifier + .requiredSize(200.dp) + .drawBehind { + drawRect(brush = brush) // will allocate a shader to occupy the 200 x 200 dp drawing area + inset(10f) { + // will allocate a shade to occupy the 180 x 180 dp drawing area as the inset scope reduces the drawing + // area by 10 pixels on the left, top, right, bottom sides + drawRect(brush = brush) + inset(5f) { + // will allocate a shade to occupy the 170 x 170 dp drawing area as the inset scope reduces the + // drawing area by 5 pixels on the left, top, right, bottom sides + drawRect(brush = brush) + } + } + } + ) + // [END graphics_brush_recreation] +} + +@OptIn(ExperimentalTextApi::class) +@Preview +@Composable +fun GraphicsImageBrush() { + // [START graphics_brush_image] + val imageBrush = ShaderBrush(ImageShader(ImageBitmap.imageResource(id = R.drawable.dog))) + + // Use ImageShader Brush with background + Box( + modifier = Modifier + .requiredSize(200.dp) + .background(imageBrush) + ) + + // Use ImageShader Brush with TextStyle + Text( + text = "Hello Android!", + style = TextStyle( + brush = imageBrush, + fontWeight = FontWeight.ExtraBold, + fontSize = 36.sp + ) + ) + + // Use ImageShader Brush with DrawScope#drawCircle() + Canvas(onDraw = { + drawCircle(imageBrush) + }, modifier = Modifier.size(200.dp)) + // [END graphics_brush_image] +} + +// [START brush_custom_shader] +@Language("AGSL") +val CUSTOM_SHADER = """ + uniform float2 resolution; + layout(color) uniform half4 color; + layout(color) uniform half4 color2; + + half4 main(in float2 fragCoord) { + float2 uv = fragCoord/resolution.xy; + + float mixValue = distance(uv, vec2(0, 1)); + return mix(color, color2, mixValue); + } +""".trimIndent() +// [END brush_custom_shader] + +// [START brush_custom_shader_usage] +val Coral = Color(0xFFF3A397) +val LightYellow = Color(0xFFF8EE94) + +@RequiresApi(Build.VERSION_CODES.TIRAMISU) +@Composable +@Preview +fun ShaderBrushExample() { + Box(modifier = Modifier + .drawWithCache { + val shader = RuntimeShader(CUSTOM_SHADER) + val shaderBrush = ShaderBrush(shader) + shader.setFloatUniform("resolution", size.width, size.height) + onDrawBehind { + shader.setColorUniform( + "color", + android.graphics.Color.valueOf( + LightYellow.red, LightYellow.green, LightYellow + .blue, LightYellow.alpha + ) + ) + shader.setColorUniform( + "color2", + android.graphics.Color.valueOf(Coral.red, Coral.green, Coral.blue, Coral.alpha) + ) + drawRect(shaderBrush) + } + } + .fillMaxWidth() + .height(200.dp) + ) +} +// [END brush_custom_shader_usage] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Color.kt b/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Color.kt new file mode 100644 index 000000000..9ef8b3ef4 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Color.kt @@ -0,0 +1,11 @@ +package com.example.compose.snippets.ui.theme + +import androidx.compose.ui.graphics.Color + +val Purple80 = Color(0xFFD0BCFF) +val PurpleGrey80 = Color(0xFFCCC2DC) +val Pink80 = Color(0xFFEFB8C8) + +val Purple40 = Color(0xFF6650a4) +val PurpleGrey40 = Color(0xFF625b71) +val Pink40 = Color(0xFF7D5260) \ No newline at end of file diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Theme.kt b/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Theme.kt new file mode 100644 index 000000000..4654e44fe --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Theme.kt @@ -0,0 +1,69 @@ +package com.example.compose.snippets.ui.theme + +import android.app.Activity +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +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.toArgb +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalView +import androidx.core.view.ViewCompat + +private val DarkColorScheme = darkColorScheme( + primary = Purple80, + secondary = PurpleGrey80, + tertiary = Pink80 +) + +private val LightColorScheme = lightColorScheme( + primary = Purple40, + secondary = PurpleGrey40, + tertiary = Pink40 + + /* Other default colors to override + background = Color(0xFFFFFBFE), + surface = Color(0xFFFFFBFE), + onPrimary = Color.White, + onSecondary = Color.White, + onTertiary = Color.White, + onBackground = Color(0xFF1C1B1F), + onSurface = Color(0xFF1C1B1F), + */ +) + +@Composable +fun SnippetsTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + // Dynamic color is available on Android 12+ + dynamicColor: Boolean = true, + content: @Composable () -> Unit, +) { + val colorScheme = when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + + darkTheme -> DarkColorScheme + else -> LightColorScheme + } + val view = LocalView.current + if (!view.isInEditMode) { + SideEffect { + (view.context as Activity).window.statusBarColor = colorScheme.primary.toArgb() + ViewCompat.getWindowInsetsController(view)?.isAppearanceLightStatusBars = darkTheme + } + } + + MaterialTheme( + colorScheme = colorScheme, + typography = Typography, + content = content + ) +} \ No newline at end of file diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Type.kt b/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Type.kt new file mode 100644 index 000000000..58ec37bab --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Type.kt @@ -0,0 +1,34 @@ +package com.example.compose.snippets.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +// Set of Material typography styles to start with +val Typography = Typography( + bodyLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp + ) + /* Other default text styles to override + titleLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 22.sp, + lineHeight = 28.sp, + letterSpacing = 0.sp + ), + labelSmall = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Medium, + fontSize = 11.sp, + lineHeight = 16.sp, + letterSpacing = 0.5.sp + ) + */ +) \ No newline at end of file diff --git a/compose/snippets/src/main/res/drawable-v24/ic_launcher_foreground.xml b/compose/snippets/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 000000000..2b068d114 --- /dev/null +++ b/compose/snippets/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/compose/snippets/src/main/res/drawable/dog.jpg b/compose/snippets/src/main/res/drawable/dog.jpg new file mode 100644 index 0000000000000000000000000000000000000000..800153d4f23788a5788bd1d3f49507cc0559377c GIT binary patch literal 94347 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%0A-6K_S4-%HF5 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

?LiXsrUz_rgIN|6arnJpYsmk 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 PR!I;1A#uSI|5E-R(DqXE literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/drawable/ic_launcher_background.xml b/compose/snippets/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 000000000..07d5da9cb --- /dev/null +++ b/compose/snippets/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/compose/snippets/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/compose/snippets/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 000000000..6f3b755bf --- /dev/null +++ b/compose/snippets/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/compose/snippets/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/compose/snippets/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 000000000..6f3b755bf --- /dev/null +++ b/compose/snippets/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/compose/snippets/src/main/res/mipmap-hdpi/ic_launcher.webp b/compose/snippets/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..c209e78ecd372343283f4157dcfd918ec5165bb3 GIT binary patch literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/compose/snippets/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9 GIT binary patch literal 2898 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 literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/mipmap-mdpi/ic_launcher.webp b/compose/snippets/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..4f0f1d64e58ba64d180ce43ee13bf9a17835fbca GIT binary patch literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&il$0000G0000l001ul06|PpNU8t;00Dqo+t#w^ z^1csucXz7-Qrhzl9HuHB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!TQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

FJ$wK}0tWNB{uH;AM~i literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/mipmap-xhdpi/ic_launcher.webp b/compose/snippets/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..948a3070fe34c611c42c0d3ad3013a0dce358be0 GIT binary patch literal 1900 zcmV-y2b1_xNk&Fw2LJ$9MM6+kP&il$0000G0001A003VA06|PpNH75a00DqwTbm-~ zullQTcXxO9ki!OCRx^i?oR|n!<8G0=kI^!JSjFi-LL*`V;ET0H2IXfU0*i>o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/compose/snippets/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f GIT binary patch literal 3918 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp zwO~NVXwXCl;jE<}>%@xz|=8fIJAB?>+E{7)|4l${4ngA3G|=r z2Dyv;VVWSgZx9Wj>qUjleGl3Ei9K4>h!(lPS%8VOG>Xu0%6VDz^O=bjJmuP7>DeUv zrbI}MlHB^^d?{zv6d=@_ZD2lg1&G7UjnVN{1}9WkaM3H~btX0GtSzB+tZ^qRgWo4m z!GmimlG$=wgXCnr6j@m<1gAL46#T~5Bnm=2{^@>|t&`9mkEPddj zAvG~@Tv~TAm2i%VW}R-g(Z0)z-Y|szHr@rk>4MAyG*Ma*7Yh#H7(!-5>DZ@8r;_dx z{prSe<>~099F8vsYd2xff7uAS%7{S)f(|@me3t2$iy&NEc7OUEchp@9A|X;;IA>8!oX+y(BKJ$EzV* znR$z;!L$s7uy@{OT~nG#B!NRraT8(X##Ho!0r_o@gg0CA-9H^;-uE&?$2$nHv_00o z%cbuUc-tCx$Uh&EZ4Nf4Zgqv)Y6>usG3>GeQnxx_Z6+PcbX-+ysbt1hQ`K1LDpOE? zrAhIZhSN9yVIAOa22gn577tbc&i3|3V8NWy&!tw##`}9*x}gtI^h1DzZRA>UuaJG) zaZ7j)dq!O}{?#8Y7~7i6fHh4{`pL?>-18|p!S75Y#^DM>-S3)vuZG+Q7l@ek zQP~#cBpWgg#mApc_sPYjpw8odQuRokmTkzcNl`^CcKB7e&;zViV;{Y{o^Y$%7i0m# z62%#1Lq!RC?}lK>%mp}T!3Xv;L*0v*>USLm``N%>w>@fwC+#T&Tx2bN4w(20JB}oU zuSa6v^kXi0xPs?pbaOHnyiqq6By1EZY9OZ^^QA>{q-Hsd&m`pbQ%8121aWG-F5xf zlZ%;B{;C>X19|`^_?dVyCq>n+41w7|!tUS!{9rHlbhX=SZO5CQ^;!Du_E7*`GiR^Q w)2!4MKjfSAeNo!9>IaV6aUZ*?W>} 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

UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/values/colors.xml b/compose/snippets/src/main/res/values/colors.xml new file mode 100644 index 000000000..f8c6127d3 --- /dev/null +++ b/compose/snippets/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/compose/snippets/src/main/res/values/strings.xml b/compose/snippets/src/main/res/values/strings.xml new file mode 100644 index 000000000..d6adaee50 --- /dev/null +++ b/compose/snippets/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + snippets + \ No newline at end of file diff --git a/compose/snippets/src/main/res/values/themes.xml b/compose/snippets/src/main/res/values/themes.xml new file mode 100644 index 000000000..65078ebe0 --- /dev/null +++ b/compose/snippets/src/main/res/values/themes.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/compose/snippets/build.gradle b/compose/snippets/build.gradle deleted file mode 100644 index 79b2af05d..000000000 --- a/compose/snippets/build.gradle +++ /dev/null @@ -1,112 +0,0 @@ -plugins { - id 'com.android.application' - id 'org.jetbrains.kotlin.android' - id 'kotlin-kapt' - id 'com.google.dagger.hilt.android' -} - -android { - namespace 'com.example.compose.snippets' - compileSdk 33 - - defaultConfig { - applicationId "com.example.compose.snippets" - minSdk 21 - targetSdk 33 - versionCode 1 - versionName "1.0" - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - vectorDrawables { - useSupportLibrary true - } - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = '1.8' - } - buildFeatures { - compose true - viewBinding true - } - composeOptions { - kotlinCompilerExtensionVersion compose_compiler_version - } - packagingOptions { - resources { - excludes += '/META-INF/{AL2.0,LGPL2.1}' - } - } -} - -dependencies { - - implementation 'androidx.paging:paging-common-ktx:3.1.1' - def composeBom = platform('androidx.compose:compose-bom:2023.05.01') - implementation(composeBom) - implementation "androidx.compose.ui:ui" - implementation "androidx.compose.ui:ui-util" - implementation "androidx.compose.ui:ui-graphics" - implementation "androidx.compose.ui:ui-tooling-preview" - implementation "androidx.compose.ui:ui-viewbinding:1.4.2" - implementation "androidx.paging:paging-compose:1.0.0-alpha18" - implementation "androidx.compose.animation:animation-graphics" - implementation "androidx.compose.material3:material3" - implementation "androidx.compose.material:material" - implementation "androidx.compose.runtime:runtime-livedata" - - implementation "androidx.compose.material3:material3-window-size-class" - - implementation "androidx.compose.material:material-icons-extended" - implementation "androidx.constraintlayout:constraintlayout-compose:1.0.1" - implementation 'androidx.compose.ui:ui-text-google-fonts:1.4.2' - - implementation 'androidx.emoji2:emoji2-views:1.3.0' - implementation "androidx.lifecycle:lifecycle-runtime-compose:2.6.1" - - implementation "androidx.fragment:fragment-ktx:1.5.7" - implementation 'androidx.coordinatorlayout:coordinatorlayout:1.2.0' - implementation 'com.google.android.material:material:1.8.0' - def accompanist = "0.28.0" - implementation "com.google.accompanist:accompanist-themeadapter-appcompat:$accompanist" - implementation "com.google.accompanist:accompanist-themeadapter-material3:$accompanist" - implementation "com.google.accompanist:accompanist-themeadapter-material:$accompanist" - implementation "io.coil-kt:coil-compose:2.2.2" - implementation 'androidx.activity:activity-compose:1.7.1' - implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'androidx.core:core-ktx:1.10.0' - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.1' - implementation 'androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1' - implementation 'androidx.navigation:navigation-compose:2.5.3' - implementation 'androidx.hilt:hilt-navigation-compose:1.0.0' - implementation 'androidx.recyclerview:recyclerview:1.3.0' - - implementation 'com.google.maps.android:maps-compose:2.11.4' - implementation 'com.google.android.gms:play-services-maps:18.1.0' - - implementation "com.google.dagger:hilt-android:2.44" - kapt "com.google.dagger:hilt-compiler:2.44" - - testImplementation 'junit:junit:4.13.2' - - androidTestImplementation(composeBom) - androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' - androidTestImplementation "androidx.compose.ui:ui-test-junit4" - debugImplementation "androidx.compose.ui:ui-tooling" - debugImplementation "androidx.compose.ui:ui-test-manifest" -} - -kapt { - correctErrorTypes true -} \ No newline at end of file diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts new file mode 100644 index 000000000..d760eaeb6 --- /dev/null +++ b/compose/snippets/build.gradle.kts @@ -0,0 +1,140 @@ +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kapt) + alias(libs.plugins.hilt) +} + +android { + compileSdk = libs.versions.compileSdk.get().toInt() + namespace = "com.example.compose.snippets" + + defaultConfig { + applicationId = "com.example.compose.snippets" + minSdk = libs.versions.minSdk.get().toInt() + targetSdk = libs.versions.targetSdk.get().toInt() + versionCode = 1 + versionName = "1.0" + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + getByName("debug") { + signingConfig = signingConfigs.getByName("debug") + } + + getByName("release") { + isMinifyEnabled = true + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro") + } + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + buildFeatures { + compose = true + // Disable unused AGP features + viewBinding = true + } + + composeOptions { + kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get() + } + + packaging.resources { + // Multiple dependency bring these files in. Exclude them to enable + // our test APK to build (has no effect on our AARs) + excludes += "/META-INF/AL2.0" + excludes += "/META-INF/LGPL2.1" + } +} + +dependencies { + val composeBom = platform(libs.androidx.compose.bom) + implementation(composeBom) + androidTestImplementation(composeBom) + + implementation(libs.androidx.compose.ui) + implementation(libs.androidx.compose.ui.util) + implementation(libs.androidx.compose.ui.graphics) + implementation(libs.androidx.compose.ui.tooling.preview) + implementation(libs.androidx.compose.ui.viewbinding) + implementation(libs.androidx.paging.compose) + implementation(libs.androidx.compose.animation.graphics) + + implementation(libs.androidx.compose.material3) + implementation(libs.androidx.compose.material) + + implementation(libs.androidx.compose.runtime) + implementation(libs.androidx.compose.runtime.livedata) + implementation(libs.androidx.compose.materialWindow) + implementation(libs.androidx.compose.material.iconsExtended) + implementation(libs.androidx.constraintlayout.compose) + implementation(libs.androidx.compose.ui.googlefonts) + + implementation(libs.androidx.emoji2.views) + implementation(libs.androidx.lifecycle.runtime.compose) + + implementation(libs.androidx.fragment.ktx) + implementation(libs.androidx.coordinator.layout) + implementation(libs.google.android.material) + + implementation(libs.accompanist.theme.adapter.appcompat) + implementation(libs.accompanist.theme.adapter.material3) + implementation(libs.accompanist.theme.adapter.material) + + implementation(libs.coil.kt.compose) + implementation(libs.androidx.activity.compose) + implementation(libs.androidx.appcompat) + implementation(libs.androidx.core.ktx) + + implementation(libs.androidx.lifecycle.runtime) + implementation(libs.androidx.lifecycle.viewModelCompose) + + implementation(libs.androidx.navigation.compose) + implementation(libs.hilt.android) + implementation(libs.androidx.hilt.navigation.compose) + + implementation(libs.androidx.recyclerview) + + implementation(libs.googlemaps.compose) + implementation(libs.googlemaps.maps) + + implementation(libs.hilt.android) + kapt(libs.hilt.compiler) + + testImplementation(libs.junit) + + androidTestImplementation(composeBom) + + androidTestImplementation(libs.junit) + androidTestImplementation(libs.androidx.test.core) + androidTestImplementation(libs.androidx.test.runner) + androidTestImplementation(libs.androidx.test.espresso.core) + androidTestImplementation(libs.androidx.compose.ui.test) + debugImplementation(libs.androidx.compose.ui.tooling) + + androidTestImplementation(libs.androidx.compose.ui.test.junit4) + debugImplementation(libs.androidx.compose.ui.test.manifest) + +} diff --git a/compose/snippets/proguard-rules.pro b/compose/snippets/proguard-rules.pro index 481bb4348..ff59496d8 100644 --- a/compose/snippets/proguard-rules.pro +++ b/compose/snippets/proguard-rules.pro @@ -1,6 +1,6 @@ # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. +# proguardFiles setting in build.gradle.kts. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 000000000..7ad16b452 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,160 @@ +##### +# This file is duplicated to individual samples from the global scripts/libs.versions.toml +# Do not add a dependency to an individual sample, edit the global version instead. +##### +[versions] +accompanist = "0.30.1" +androidGradlePlugin = "8.0.2" +androidx-activity-compose = "1.7.2" +androidx-appcompat = "1.6.1" +androidx-benchmark = "1.1.1" +androidx-benchmark-junit4 = "1.1.0-beta04" +androidx-cardview = "1.0.0-beta01" +androidx-coordinator-layout = "1.2.0" +androidx-compose-bom = "2023.06.00" +androidx-constraintlayout = "2.1.4" +androidx-constraintlayout-compose = "1.1.0-alpha04" +androidx-corektx = "1.10.1" +androidx-emoji2-views = "1.3.0" +androidx-fragment-ktx = "1.5.7" +androidx-lifecycle-compose = "2.6.1" +androidx-lifecycle-runtime-compose = "2.6.1" +androidx-navigation = "2.5.3" +androidx-palette = "1.0.0" +androidx-paging = "1.0.0-alpha18" +androidx-paging-common = "3.1.1" +androidx-slice = "1.0.0-alpha4" +androidx-test = "1.5.0" +androidx-test-espresso = "3.5.1" +androidx-test-ext-junit = "1.1.5" +androidx-test-ext-truth = "1.5.0" +androidx-window = "1.1.0-beta02" +androidxHiltNavigationCompose = "1.0.0" +androix-test-uiautomator = "2.2.0" +coil = "2.2.2" +# @keep +compileSdk = "33" +compose-compiler = "1.4.0" +coroutines = "1.6.4" +google-maps = "18.1.0" +gradle-versions = "0.46.0" +hilt = "2.44" +hiltExt = "1.0.0" +# @pin When updating to AGP 7.4.0-alpha10 and up we can update this https://developer.android.com/studio/write/java8-support#library-desugaring-versions +jdkDesugar = "1.2.2" +junit = "4.13.2" +# @pin Update in conjuction with Compose Compiler +kotlin = "1.8.0" +ksp = "1.8.0-1.0.9" +maps-compose = "2.11.4" +material = "1.9.0-beta01" +# @keep +minSdk = "21" +okhttp = "4.10.0" +recyclerview = "1.3.0" +robolectric = "4.9.2" +rome = "1.18.0" +room = "2.5.1" +secrets = "2.0.1" +# @keep +targetSdk = "33" +version-catalog-update = "0.8.0" + +[libraries] +accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } +accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" } +accompanist-swiperefresh = { module = "com.google.accompanist:accompanist-swiperefresh", version.ref = "accompanist" } +accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanist" } +accompanist-theme-adapter-appcompat = { module = "com.google.accompanist:accompanist-themeadapter-appcompat", version.ref = "accompanist" } +accompanist-theme-adapter-material3 = { module = "com.google.accompanist:accompanist-themeadapter-material3", version.ref = "accompanist" } +accompanist-theme-adapter-material = { module = "com.google.accompanist:accompanist-themeadapter-material", version.ref = "accompanist" } +androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } +androidx-activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "androidx-activity-compose" } +androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } +androidx-benchmark-macrobenchmark = { module = "androidx.benchmark:benchmark-macro", version.ref = "androidx-benchmark" } +androidx-benchmark-macrobenchmark-junit4 = { module = "androidx.benchmark:benchmark-macro-junit4", version.ref = "androidx-benchmark-junit4" } +androidx-cardview = { module = "androidx.cardview:cardview", version.ref = "androidx-cardview"} +androidx-compose-animation = { module = "androidx.compose.animation:animation" } +androidx-compose-animation-graphics = { module = "androidx.compose.animation:animation-graphics" } +androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "androidx-compose-bom" } +androidx-compose-foundation = { module = "androidx.compose.foundation:foundation" } +androidx-compose-foundation-layout = { module = "androidx.compose.foundation:foundation-layout" } +androidx-compose-material = { module = "androidx.compose.material:material" } +androidx-compose-material-iconsExtended = { module = "androidx.compose.material:material-icons-extended" } +androidx-compose-material3 = { module = "androidx.compose.material3:material3" } +androidx-compose-materialWindow = { module = "androidx.compose.material3:material3-window-size-class" } +androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" } +androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" } +androidx-compose-ui = { module = "androidx.compose.ui:ui" } +androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } +androidx-compose-ui-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" } +androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test" } +androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } +androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } +androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling" } +androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" } +androidx-compose-ui-util = { module = "androidx.compose.ui:ui-util" } +androidx-compose-ui-viewbinding = { module = "androidx.compose.ui:ui-viewbinding" } +androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "androidx-constraintlayout" } +androidx-constraintlayout-compose = { module = "androidx.constraintlayout:constraintlayout-compose", version.ref = "androidx-constraintlayout-compose" } +androidx-coordinator-layout = { module = "androidx.coordinatorlayout:coordinatorlayout", version.ref = "androidx-coordinator-layout" } +androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidx-corektx" } +androidx-emoji2-views = { module = "androidx.emoji2:emoji2-views", version.ref = "androidx-emoji2-views" } +androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment-ktx" } +androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "androidxHiltNavigationCompose" } +androidx-lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle-compose" } +androidx-lifecycle-runtime = "androidx.lifecycle:lifecycle-runtime-ktx:2.6.1" +androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle-runtime-compose" } +androidx-lifecycle-viewModelCompose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle-compose" } +androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle-compose" } +androidx-lifecycle-viewmodel-savedstate = { module = "androidx.lifecycle:lifecycle-viewmodel-savedstate", version.ref = "androidx-lifecycle-compose" } +androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "androidx-navigation" } +androidx-navigation-fragment = { module = "androidx.navigation:navigation-fragment-ktx", version.ref = "androidx-navigation" } +androidx-navigation-ui-ktx = { module = "androidx.navigation:navigation-ui-ktx", version.ref = "androidx-navigation" } +androidx-paging-compose = { module = "androidx.paging:paging-compose", version.ref = "androidx-paging" } +androidx-paging-common-ktx = { module = "androidx.paging:paging-common-ktx", version.ref = "androidx-paging-common" } +androidx-palette = { module = "androidx.palette:palette", version.ref = "androidx-palette" } +androidx-slice = { module = "androidx.slice:slice-builders-ktx", version.ref = "androidx-slice"} +androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" } +androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } +androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" } +androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } +androidx-test-core = { module = "androidx.test:core", version.ref = "androidx-test" } +androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-test-espresso" } +androidx-test-ext-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-test-ext-junit" } +androidx-test-ext-truth = { module = "androidx.test.ext:truth", version.ref = "androidx-test-ext-truth" } +androidx-test-rules = { module = "androidx.test:rules", version.ref = "androidx-test" } +androidx-test-runner = "androidx.test:runner:1.5.2" +androidx-test-uiautomator = { module = "androidx.test.uiautomator:uiautomator", version.ref = "androix-test-uiautomator" } +androidx-window = { module = "androidx.window:window", version.ref = "androidx-window" } +coil-kt-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } +core-jdk-desugaring = { module = "com.android.tools:desugar_jdk_libs", version.ref = "jdkDesugar" } +google-android-material = { module = "com.google.android.material:material", version.ref = "material" } +googlemaps-compose = { module = "com.google.maps.android:maps-compose", version.ref = "maps-compose" } +googlemaps-maps = { module = "com.google.android.gms:play-services-maps", version.ref = "google-maps" } +hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" } +hilt-android-testing = { module = "com.google.dagger:hilt-android-testing", version.ref = "hilt" } +hilt-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hilt" } +hilt-ext-compiler = { module = "androidx.hilt:hilt-compiler", version.ref = "hiltExt" } +junit = { module = "junit:junit", version.ref = "junit" } +kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } +kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } +kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } +okhttp-logging = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "okhttp" } +okhttp3 = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } +robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" } +rometools-modules = { module = "com.rometools:rome-modules", version.ref = "rome" } +rometools-rome = { module = "com.rometools:rome", version.ref = "rome" } + +[plugins] +android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } +android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } +android-test = { id = "com.android.test", version.ref = "androidGradlePlugin" } +gradle-versions = { id = "com.github.ben-manes.versions", version.ref = "gradle-versions" } +hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } +kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } +kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } +ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } +secrets = { id = "com.google.android.libraries.mapsplatform.secrets-gradle-plugin", version.ref = "secrets" } +version-catalog-update = { id = "nl.littlerobots.version-catalog-update", version.ref = "version-catalog-update" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ed3fbcde5..8cb5461a8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Wed Nov 30 15:03:58 PST 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/kotlin/build.gradle b/kotlin/build.gradle deleted file mode 100644 index 319aaf032..000000000 --- a/kotlin/build.gradle +++ /dev/null @@ -1,29 +0,0 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' - -android { - compileSdkVersion 31 - - defaultConfig { - minSdkVersion 19 - targetSdkVersion 31 - versionCode 1 - versionName "1.0" - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -dependencies { - implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1' - def coroutines_version = "1.6.4" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version" - testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines_version" - testImplementation 'junit:junit:4.13.2' -} diff --git a/kotlin/build.gradle.kts b/kotlin/build.gradle.kts new file mode 100644 index 000000000..87ac8bf4d --- /dev/null +++ b/kotlin/build.gradle.kts @@ -0,0 +1,57 @@ +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) +} + +android { + compileSdk = libs.versions.compileSdk.get().toInt() + namespace = "com.example.android.kotlin" + + defaultConfig { + applicationId = "com.example.android.kotlin" + minSdk = libs.versions.minSdk.get().toInt() + targetSdk = libs.versions.targetSdk.get().toInt() + versionCode = 1 + versionName = "1.0" + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + getByName("debug") { + signingConfig = signingConfigs.getByName("debug") + } + + getByName("release") { + isMinifyEnabled = true + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro") + } + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + buildFeatures { + // Disable unused AGP features + buildConfig = false + aidl = false + renderScript = false + resValues = false + shaders = false + } + + packaging.resources { + // Multiple dependency bring these files in. Exclude them to enable + // our test APK to build (has no effect on our AARs) + excludes += "/META-INF/AL2.0" + excludes += "/META-INF/LGPL2.1" + } +} +dependencies { + implementation(libs.androidx.lifecycle.viewmodel.ktx) + implementation(libs.kotlinx.coroutines.android) + testImplementation(libs.kotlinx.coroutines.test) + testImplementation(libs.junit) +} diff --git a/kotlin/proguard-rules.pro b/kotlin/proguard-rules.pro index f1b424510..2f9dc5a47 100644 --- a/kotlin/proguard-rules.pro +++ b/kotlin/proguard-rules.pro @@ -1,6 +1,6 @@ # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. +# proguardFiles setting in build.gradle.kts. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html diff --git a/kotlin/src/main/AndroidManifest.xml b/kotlin/src/main/AndroidManifest.xml index 0635de6bd..8072ee00d 100644 --- a/kotlin/src/main/AndroidManifest.xml +++ b/kotlin/src/main/AndroidManifest.xml @@ -1,2 +1,2 @@ - + diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatchersOutsideTests.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatchersOutsideTests.kt index 1ec079c11..9f8c6c758 100644 --- a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatchersOutsideTests.kt +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatchersOutsideTests.kt @@ -18,6 +18,7 @@ package com.example.android.coroutines.testing.repo import com.example.android.coroutines.testing.MainDispatcherRule import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest @@ -25,7 +26,7 @@ import org.junit.Rule import org.junit.Test // Helper function to let code below compile -private fun Repository(): Repository = TODO() +private fun Repository(): Repository = Repository(Dispatchers.IO) private // [START coroutine_test_repo_with_rule_blank] @@ -40,6 +41,9 @@ class RepositoryTestWithRule { @Test fun someRepositoryTest() = runTest { // Test the repository... + // [START_EXCLUDE] + assert(repository != null) + // [END_EXCLUDE] } } // [END coroutine_test_repo_with_rule_blank] diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/StandardTestDispatcherTest.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/StandardTestDispatcherTest.kt index f0c0f98e2..bf749c095 100644 --- a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/StandardTestDispatcherTest.kt +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/StandardTestDispatcherTest.kt @@ -20,9 +20,11 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.test.advanceUntilIdle import kotlinx.coroutines.test.runTest import org.junit.Assert.assertEquals +import org.junit.Ignore import org.junit.Test class StandardTestDispatcherTest { + @Ignore // [START coroutine_test_standard_failing] @Test fun standardTest() = runTest { diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/UnconfinedTestDispatcherTest.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/UnconfinedTestDispatcherTest.kt index dde909014..ae488974a 100644 --- a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/UnconfinedTestDispatcherTest.kt +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/UnconfinedTestDispatcherTest.kt @@ -21,6 +21,7 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest import org.junit.Assert.assertEquals +import org.junit.Ignore import org.junit.Test class UnconfinedTestDispatcherTest { @@ -36,6 +37,7 @@ class UnconfinedTestDispatcherTest { } // [END coroutine_test_unconfined] + @Ignore // [START coroutine_test_unconfined_yielding] @Test fun yieldingTest() = runTest(UnconfinedTestDispatcher()) { diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index 6ba4dc6d1..000000000 --- a/settings.gradle +++ /dev/null @@ -1,8 +0,0 @@ -include( - ':shared', - ':slice', - ':bluetoothle', - ':compose:recomposehighlighter', - ':kotlin', - ':compose:snippets' -) diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 000000000..1edd26a8b --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,29 @@ +val snapshotVersion : String? = System.getenv("COMPOSE_SNAPSHOT_ID") + +pluginManagement { + repositories { + gradlePluginPortal() + google() + mavenCentral() + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + snapshotVersion?.let { + println("https://androidx.dev/snapshots/builds/$it/artifacts/repository/") + maven { url = uri("https://androidx.dev/snapshots/builds/$it/artifacts/repository/") } + } + + google() + mavenCentral() + } +} +rootProject.name = "snippets" +include( + ":shared", + ":bluetoothle", + ":compose:recomposehighlighter", + ":kotlin", + ":compose:snippets", +) diff --git a/shared/build.gradle b/shared/build.gradle deleted file mode 100644 index 6a5cc33dc..000000000 --- a/shared/build.gradle +++ /dev/null @@ -1,29 +0,0 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' - -android { - compileSdkVersion 28 - defaultConfig { - minSdkVersion 19 - targetSdkVersion 31 - versionCode 1 - versionName "1.0" - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.0.0-alpha3' - implementation 'androidx.constraintlayout:constraintlayout:1.1.2' - testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test:runner:1.1.0-alpha3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3' -} diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts new file mode 100644 index 000000000..931118d25 --- /dev/null +++ b/shared/build.gradle.kts @@ -0,0 +1,36 @@ +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.android) +} +android { + compileSdk = libs.versions.compileSdk.get().toInt() + namespace = "com.example.shared" + + defaultConfig { + minSdk = libs.versions.minSdk.get().toInt() + targetSdk = libs.versions.targetSdk.get().toInt() + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + getByName("debug") { + signingConfig = signingConfigs.getByName("debug") + } + + getByName("release") { + isMinifyEnabled = false + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro") + } + } +} +dependencies { + implementation(libs.kotlin.stdlib) + implementation(libs.androidx.appcompat) + implementation(libs.androidx.constraintlayout) + testImplementation(libs.junit) + androidTestImplementation(libs.junit) + androidTestImplementation(libs.androidx.test.core) + androidTestImplementation(libs.androidx.test.runner) + androidTestImplementation(libs.androidx.test.espresso.core) +} diff --git a/shared/proguard-rules.pro b/shared/proguard-rules.pro index f1b424510..2f9dc5a47 100644 --- a/shared/proguard-rules.pro +++ b/shared/proguard-rules.pro @@ -1,6 +1,6 @@ # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. +# proguardFiles setting in build.gradle.kts. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html diff --git a/shared/src/main/AndroidManifest.xml b/shared/src/main/AndroidManifest.xml index e19ac33be..74b7379f7 100644 --- a/shared/src/main/AndroidManifest.xml +++ b/shared/src/main/AndroidManifest.xml @@ -1,4 +1,3 @@ - + \ No newline at end of file diff --git a/slice/.gitignore b/slice/.gitignore deleted file mode 100644 index 796b96d1c..000000000 --- a/slice/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/slice/build.gradle b/slice/build.gradle deleted file mode 100644 index 94d51a9ad..000000000 --- a/slice/build.gradle +++ /dev/null @@ -1,38 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' - -android { - compileSdkVersion 28 - - defaultConfig { - applicationId "com.example.android.snippets" - minSdkVersion 19 - targetSdkVersion 31 - versionCode 1 - versionName "1.0" - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } - - lintOptions { - disable 'GoogleAppIndexingWarning' - } - -} - -dependencies { - implementation project(':shared') - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation "androidx.slice:slice-builders-ktx:1.0.0-alpha4" - implementation "androidx.appcompat:appcompat:1.0.0-beta01" - implementation "androidx.cardview:cardview:1.0.0-beta01" - testImplementation 'junit:junit:4.12' -} diff --git a/slice/proguard-rules.pro b/slice/proguard-rules.pro deleted file mode 100644 index f1b424510..000000000 --- a/slice/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile diff --git a/slice/src/main/AndroidManifest.xml b/slice/src/main/AndroidManifest.xml deleted file mode 100644 index 93e25ea38..000000000 --- a/slice/src/main/AndroidManifest.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/slice/src/main/java/com/example/android/slice/java/GettingStartedSliceProvider.java b/slice/src/main/java/com/example/android/slice/java/GettingStartedSliceProvider.java deleted file mode 100644 index f7aeda241..000000000 --- a/slice/src/main/java/com/example/android/slice/java/GettingStartedSliceProvider.java +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.example.android.slice.java; - - -import android.app.PendingIntent; -import android.content.Intent; -import android.net.Uri; - -import com.example.android.snippets.R; - -import androidx.core.graphics.drawable.IconCompat; -import androidx.slice.Slice; -import androidx.slice.SliceProvider; -import androidx.slice.builders.ListBuilder; -import androidx.slice.builders.SliceAction; - -public class GettingStartedSliceProvider extends SliceProvider { - - private PendingIntent brightnessPendingIntent; - private IconCompat actionIcon; - - @Override - public boolean onCreateSliceProvider() { - return false; - } - - // [START on_bind_slice] - @Override - public Slice onBindSlice(Uri sliceUri) { - if (getContext() == null) { - return null; - } - SliceAction activityAction = createActivityAction(); - ListBuilder listBuilder = new ListBuilder(getContext(), sliceUri, ListBuilder.INFINITY); - // Create parent ListBuilder. - if ("/hello".equals(sliceUri.getPath())) { - listBuilder.addRow(new ListBuilder.RowBuilder() - .setTitle("Hello World") - .setPrimaryAction(activityAction) - ); - } else { - listBuilder.addRow(new ListBuilder.RowBuilder() - .setTitle("URI not recognized") - .setPrimaryAction(activityAction) - ); - } - return listBuilder.build(); - } - // [END on_bind_slice] - - // [START create_slice] - public Slice createSlice(Uri sliceUri) { - if (getContext() == null) { - return null; - } - SliceAction activityAction = createActivityAction(); - return new ListBuilder(getContext(), sliceUri, ListBuilder.INFINITY) - .addRow(new ListBuilder.RowBuilder() - .setTitle("Perform action in app.") - .setPrimaryAction(activityAction) - ).build(); - } - - public SliceAction createActivityAction() { - if (getContext() == null) { - return null; - } - return SliceAction.create( - PendingIntent.getActivity( - getContext(), - 0, - new Intent(getContext(), MainActivity.class), - 0 - ), - IconCompat.createWithResource(getContext(), R.drawable.ic_home), - ListBuilder.ICON_IMAGE, - "Enter app" - ); - } - // [END create_slice] - - // [START create_brightness_slice] - public Slice createBrightnessSlice(Uri sliceUri) { - if (getContext() == null) { - return null; - } - SliceAction toggleAction = SliceAction.createToggle( - createToggleIntent(), - "Toggle adaptive brightness", - true - ); - ListBuilder listBuilder = new ListBuilder(getContext(), sliceUri, ListBuilder.INFINITY) - .addRow(new ListBuilder.RowBuilder() - .setTitle("Adaptive brightness") - .setSubtitle("Optimizes brightness for available light.") - .setPrimaryAction(toggleAction) - ).addInputRange(new ListBuilder.InputRangeBuilder() - .setInputAction(brightnessPendingIntent) - .setMax(100) - .setValue(45) - ); - return listBuilder.build(); - } - - public PendingIntent createToggleIntent() { - Intent intent = new Intent(getContext(), MyBroadcastReceiver.class); - return PendingIntent.getBroadcast(getContext(), 0, intent, 0); - } - // [END create_brightness_slice] - - // [START create_dynamic_slice] - public Slice createDynamicSlice(Uri sliceUri) { - if (getContext() == null || sliceUri.getPath() == null) { - return null; - } - ListBuilder listBuilder = new ListBuilder(getContext(), sliceUri, ListBuilder.INFINITY); - switch (sliceUri.getPath()) { - case "/count": - SliceAction toastAndIncrementAction = SliceAction.create( - createToastAndIncrementIntent("Item clicked."), - actionIcon, - ListBuilder.ICON_IMAGE, - "Increment." - ); - listBuilder.addRow( - new ListBuilder.RowBuilder() - .setPrimaryAction(toastAndIncrementAction) - .setTitle("Count: " + MyBroadcastReceiver.sReceivedCount) - .setSubtitle("Click me") - ); - break; - default: - listBuilder.addRow( - new ListBuilder.RowBuilder() - .setPrimaryAction(createActivityAction()) - .setTitle("URI not found.") - ); - break; - } - return listBuilder.build(); - } - - public PendingIntent createToastAndIncrementIntent(String s) { - Intent intent = new Intent(getContext(), MyBroadcastReceiver.class) - .putExtra(MyBroadcastReceiver.EXTRA_MESSAGE, s); - return PendingIntent.getBroadcast(getContext(), 0, intent, 0); - } - // [END create_dynamic_slice] -} diff --git a/slice/src/main/java/com/example/android/slice/java/MainActivity.java b/slice/src/main/java/com/example/android/slice/java/MainActivity.java deleted file mode 100644 index dbd6ec31b..000000000 --- a/slice/src/main/java/com/example/android/slice/java/MainActivity.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.example.android.slice.java; - -import android.os.Bundle; - -import com.example.android.snippets.R; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -public class MainActivity extends AppCompatActivity { - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - } -} diff --git a/slice/src/main/java/com/example/android/slice/java/MyBroadcastReceiver.java b/slice/src/main/java/com/example/android/slice/java/MyBroadcastReceiver.java deleted file mode 100644 index d04d81c02..000000000 --- a/slice/src/main/java/com/example/android/slice/java/MyBroadcastReceiver.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.example.android.slice.java; - -import static android.app.slice.Slice.EXTRA_TOGGLE_STATE; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.net.Uri; -import android.widget.Toast; - -// [START broadcast_receiver_example] -public class MyBroadcastReceiver extends BroadcastReceiver { - - public static int sReceivedCount = 0; - public static String EXTRA_MESSAGE = "message"; - - private static Uri sliceUri = Uri.parse("content://com.android.example.slicesample/count"); - - @Override - public void onReceive(Context context, Intent intent) { - if (intent.hasExtra(EXTRA_TOGGLE_STATE)) { - Toast.makeText(context, "Toggled: " + intent.getBooleanExtra( - EXTRA_TOGGLE_STATE, false), - Toast.LENGTH_LONG).show(); - sReceivedCount++; - context.getContentResolver().notifyChange(sliceUri, null); - } - } -} -// [END broadcast_receiver_example] diff --git a/slice/src/main/java/com/example/android/slice/java/MySliceProvider.java b/slice/src/main/java/com/example/android/slice/java/MySliceProvider.java deleted file mode 100644 index f26fd4ce5..000000000 --- a/slice/src/main/java/com/example/android/slice/java/MySliceProvider.java +++ /dev/null @@ -1,313 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.example.android.slice.java; - -import android.app.PendingIntent; -import android.content.Intent; -import android.net.Uri; - -import com.example.android.snippets.R; - -import androidx.core.graphics.drawable.IconCompat; -import androidx.slice.Slice; -import androidx.slice.SliceProvider; -import androidx.slice.builders.GridRowBuilder; -import androidx.slice.builders.GridRowBuilder.CellBuilder; -import androidx.slice.builders.ListBuilder; -import androidx.slice.builders.ListBuilder.HeaderBuilder; -import androidx.slice.builders.ListBuilder.InputRangeBuilder; -import androidx.slice.builders.ListBuilder.RowBuilder; -import androidx.slice.builders.SliceAction; -import androidx.slice.core.SliceHints; - -public class MySliceProvider extends SliceProvider { - - boolean isConnected; - PendingIntent wifiTogglePendingIntent; - Uri wifiUri; - PendingIntent seeAllNetworksPendingIntent; - PendingIntent takeNoteIntent; - PendingIntent voiceNoteIntent; - PendingIntent cameraNoteIntent; - PendingIntent pendingIntent; - PendingIntent intent1; - PendingIntent intent2; - PendingIntent intent3; - PendingIntent intent4; - IconCompat icon; - IconCompat image1; - IconCompat image2; - IconCompat image3; - IconCompat image4; - PendingIntent volumeChangedPendingIntent; - PendingIntent wifiSettingsPendingIntent; - - @Override - public boolean onCreateSliceProvider() { - return false; - } - - @Override - public Slice onBindSlice(Uri sliceUri) { - return null; - } - - // [START create_slice_with_header] - public Slice createSliceWithHeader(Uri sliceUri) { - if (getContext() == null) { - return null; - } - - // Construct the parent. - ListBuilder listBuilder = new ListBuilder(getContext(), sliceUri, ListBuilder.INFINITY) - .setAccentColor(0xff0F9D58) // Specify color for tinting icons. - .setHeader( // Create the header and add to slice. - new HeaderBuilder() - .setTitle("Get a ride") - .setSubtitle("Ride in 4 min.") - .setSummary("Work in 1 hour 45 min | Home in 12 min.") - ).addRow(new RowBuilder() // Add a row. - .setPrimaryAction( - createActivityAction()) // A slice always needs a SliceAction. - .setTitle("Home") - .setSubtitle("12 miles | 12 min | $9.00") - .addEndItem(IconCompat.createWithResource(getContext(), R.drawable.ic_home), - SliceHints.ICON_IMAGE) - ); // Add more rows if needed... - return listBuilder.build(); - } - // [END create_slice_with_header] - - // [START create_slice_with_action_in_header] - public Slice createSliceWithActionInHeader(Uri sliceUri) { - if (getContext() == null) { - return null; - } - // Construct our slice actions. - SliceAction noteAction = SliceAction.create(takeNoteIntent, - IconCompat.createWithResource(getContext(), R.drawable.ic_pencil), - ListBuilder.ICON_IMAGE, "Take note"); - - SliceAction voiceNoteAction = SliceAction.create(voiceNoteIntent, - IconCompat.createWithResource(getContext(), R.drawable.ic_mic), - ListBuilder.ICON_IMAGE, - "Take voice note"); - - SliceAction cameraNoteAction = SliceAction.create(cameraNoteIntent, - IconCompat.createWithResource(getContext(), R.drawable.ic_camera), - ListBuilder.ICON_IMAGE, - "Create photo note"); - - - // Construct the list. - ListBuilder listBuilder = new ListBuilder(getContext(), sliceUri, ListBuilder.INFINITY) - .setAccentColor(0xfff4b400) // Specify color for tinting icons - .setHeader(new HeaderBuilder() // Construct the header. - .setTitle("Create new note") - .setSubtitle("Easily done with this note taking app") - ) - .addRow(new RowBuilder() - .setTitle("Enter app") - .setPrimaryAction(createActivityAction()) - ) - // Add the actions to the ListBuilder. - .addAction(noteAction) - .addAction(voiceNoteAction) - .addAction(cameraNoteAction); - return listBuilder.build(); - } - // [END create_slice_with_action_in_header] - - // [START create_action_with_action_in_row] - public Slice createActionWithActionInRow(Uri sliceUri) { - if (getContext() == null) { - return null; - } - // Primary action - open wifi settings. - SliceAction primaryAction = SliceAction.create(wifiSettingsPendingIntent, - IconCompat.createWithResource(getContext(), R.drawable.ic_wifi), - ListBuilder.ICON_IMAGE, - "Wi-Fi Settings" - ); - - // Toggle action - toggle wifi. - SliceAction toggleAction = SliceAction.createToggle(wifiTogglePendingIntent, - "Toggle Wi-Fi", isConnected /* isChecked */); - - // Create the parent builder. - ListBuilder listBuilder = new ListBuilder(getContext(), wifiUri, ListBuilder.INFINITY) - // Specify color for tinting icons / controls. - .setAccentColor(0xff4285f4) - // Create and add a row. - .addRow(new RowBuilder() - .setTitle("Wi-Fi") - .setPrimaryAction(primaryAction) - .addEndItem(toggleAction)); - // Build the slice. - return listBuilder.build(); - } - // [END create_action_with_action_in_row] - - // [START create_slice_with_gridrow] - public Slice createSliceWithGridRow(Uri sliceUri) { - if (getContext() == null) { - return null; - } - // Create the parent builder. - ListBuilder listBuilder = new ListBuilder(getContext(), sliceUri, ListBuilder.INFINITY) - .setHeader( - // Create the header. - new HeaderBuilder() - .setTitle("Famous restaurants") - .setPrimaryAction(SliceAction - .create(pendingIntent, icon, ListBuilder.ICON_IMAGE, - "Famous restaurants")) - ) - // Add a grid row to the list. - .addGridRow(new GridRowBuilder() - // Add cells to the grid row. - .addCell(new CellBuilder() - .addImage(image1, ListBuilder.LARGE_IMAGE) - .addTitleText("Top Restaurant") - .addText("0.3 mil") - .setContentIntent(intent1) - ).addCell(new CellBuilder() - .addImage(image2, ListBuilder.LARGE_IMAGE) - .addTitleText("Fast and Casual") - .addText("0.5 mil") - .setContentIntent(intent2) - ) - .addCell(new CellBuilder() - .addImage(image3, ListBuilder.LARGE_IMAGE) - .addTitleText("Casual Diner") - .addText("0.9 mi") - .setContentIntent(intent3)) - .addCell(new CellBuilder() - .addImage(image4, ListBuilder.LARGE_IMAGE) - .addTitleText("Ramen Spot") - .addText("1.2 mi") - .setContentIntent(intent4)) - // Every slice needs a primary action. - .setPrimaryAction(createActivityAction()) - ); - return listBuilder.build(); - } - // [END create_slice_with_gridrow] - - // [START create_slice_with_range] - public Slice createSliceWithRange(Uri sliceUri) { - if (getContext() == null) { - return null; - } - // Construct the parent. - ListBuilder listBuilder = new ListBuilder(getContext(), sliceUri, ListBuilder.INFINITY) - .addRow(new RowBuilder() // Every slice needs a row. - .setTitle("Enter app") - // Every slice needs a primary action. - .setPrimaryAction(createActivityAction()) - ) - .addInputRange(new InputRangeBuilder() // Create the input row. - .setTitle("Ring Volume") - .setInputAction(volumeChangedPendingIntent) - .setMax(100) - .setValue(30) - ); - return listBuilder.build(); - } - // [END create_slice_with_range] - - // [START create_slice_showing_loading] - public Slice createSliceShowingLoading(Uri sliceUri) { - if (getContext() == null) { - return null; - } - // Construct the parent. - ListBuilder listBuilder = new ListBuilder(getContext(), sliceUri, ListBuilder.INFINITY) - // Construct the row. - .addRow(new RowBuilder() - .setPrimaryAction(createActivityAction()) - .setTitle("Ride to work") - // We’re waiting to load the time to work so indicate that on the slice by - // setting the subtitle with the overloaded method and indicate true. - .setSubtitle(null, true) - .addEndItem(IconCompat.createWithResource(getContext(), R.drawable.ic_work), - ListBuilder.ICON_IMAGE) - ); - return listBuilder.build(); - } - - private SliceAction createActivityAction() { - return SliceAction.create( - PendingIntent.getActivity( - getContext(), - 0, - new Intent(getContext(), MainActivity.class), - 0 - ), - IconCompat.createWithResource(getContext(), R.drawable.ic_home), - ListBuilder.ICON_IMAGE, - "Enter app" - ); - } - // [END create_slice_showing_loading] - - // [START see_more_action] - public Slice seeMoreActionSlice(Uri sliceUri) { - if (getContext() == null) { - return null; - } - ListBuilder listBuilder = new ListBuilder(getContext(), sliceUri, ListBuilder.INFINITY); - // [START_EXCLUDE] - listBuilder.addRow(new RowBuilder() - .setTitle("Hello") - .setPrimaryAction(createActivityAction()) - ); - // [END_EXCLUDE] - listBuilder.setSeeMoreAction(seeAllNetworksPendingIntent); - // [START_EXCLUDE] - // [END_EXCLUDE] - return listBuilder.build(); - } - // [END see_more_action] - - // [START see_more_row] - public Slice seeMoreRowSlice(Uri sliceUri) { - if (getContext() == null) { - return null; - } - ListBuilder listBuilder = new ListBuilder(getContext(), sliceUri, ListBuilder.INFINITY) - // [START_EXCLUDE] - .addRow(new RowBuilder() - .setTitle("Hello") - .setPrimaryAction(createActivityAction()) - ) - // [END_EXCLUDE] - .setSeeMoreRow(new RowBuilder() - .setTitle("See all available networks") - .addEndItem(IconCompat - .createWithResource(getContext(), R.drawable - .ic_right_caret), - ListBuilder.ICON_IMAGE) - .setPrimaryAction(SliceAction.create(seeAllNetworksPendingIntent, - IconCompat.createWithResource(getContext(), R.drawable.ic_wifi), - ListBuilder.ICON_IMAGE, - "Wi-Fi Networks")) - ); - // [START_EXCLUDE] - // [END_EXCLUDE] - return listBuilder.build(); - } - // [END see_more_row] -} \ No newline at end of file diff --git a/slice/src/main/java/com/example/android/slice/kotlin/GettingStartedSliceProvider.kt b/slice/src/main/java/com/example/android/slice/kotlin/GettingStartedSliceProvider.kt deleted file mode 100644 index c1db612ba..000000000 --- a/slice/src/main/java/com/example/android/slice/kotlin/GettingStartedSliceProvider.kt +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.example.android.slice.kotlin - -import android.app.PendingIntent -import android.content.Intent -import android.net.Uri -import androidx.core.graphics.drawable.IconCompat -import androidx.slice.Slice -import androidx.slice.SliceProvider -import androidx.slice.builders.ListBuilder -import androidx.slice.builders.ListBuilder.INFINITY -import androidx.slice.builders.SliceAction -import androidx.slice.builders.inputRange -import androidx.slice.builders.list -import androidx.slice.builders.row -import com.example.android.snippets.R - -class GettingStartedSliceProvider : SliceProvider() { - lateinit var brightnessPendingIntent: PendingIntent - - // [START on_bind_slice] - override fun onBindSlice(sliceUri: Uri): Slice? { - val activityAction = createActivityAction() - return if (sliceUri.path == "/hello") { - list(context, sliceUri, ListBuilder.INFINITY) { - row { - primaryAction = activityAction - title = "Hello World." - } - } - } else { - list(context, sliceUri, ListBuilder.INFINITY) { - row { - primaryAction = activityAction - title = "URI not recognized." - } - } - } - } - // [END on_bind_slice] - - override fun onCreateSliceProvider(): Boolean { - return true - } - - // [START create_slice] - fun createSlice(sliceUri: Uri): Slice { - val activityAction = createActivityAction() - return list(context, sliceUri, INFINITY) { - row { - title = "Perform action in app" - primaryAction = activityAction - } - } - } - - fun createActivityAction(): SliceAction { - val intent = Intent(context, MainActivity::class.java) - return SliceAction.create( - PendingIntent.getActivity(context, 0, Intent(context, MainActivity::class.java), 0), - IconCompat.createWithResource(context, R.drawable.ic_home), - ListBuilder.ICON_IMAGE, - "Enter app" - ) - } - // [END create_slice] - - // [START create_brightness_slice] - fun createBrightnessSlice(sliceUri: Uri): Slice { - val toggleAction = - SliceAction.createToggle( - createToggleIntent(), - "Toggle adaptive brightness", - true - ) - return list(context, sliceUri, ListBuilder.INFINITY) { - row { - title = "Adaptive brightness" - subtitle = "Optimizes brightness for available light" - primaryAction = toggleAction - } - inputRange { - inputAction = (brightnessPendingIntent) - max = 100 - value = 45 - } - } - } - - fun createToggleIntent(): PendingIntent { - val intent = Intent(context, MyBroadcastReceiver::class.java) - return PendingIntent.getBroadcast(context, 0, intent, 0) - } - // [END create_brightness_slice] - - lateinit var actionIcon: IconCompat - - // [START create_dynamic_slice] - fun createDynamicSlice(sliceUri: Uri): Slice { - return when (sliceUri.path) { - "/count" -> { - val toastAndIncrementAction = SliceAction.create( - createToastAndIncrementIntent("Item clicked."), - actionIcon, - ListBuilder.ICON_IMAGE, - "Increment." - ) - list(context, sliceUri, ListBuilder.INFINITY) { - row { - primaryAction = toastAndIncrementAction - title = "Count: ${MyBroadcastReceiver.receivedCount}" - subtitle = "Click me" - } - } - } - - else -> { - list(context, sliceUri, ListBuilder.INFINITY) { - row { - primaryAction = createActivityAction() - title = "URI not found." - } - } - } - } - } - - fun createToastAndIncrementIntent(s: String): PendingIntent { - return PendingIntent.getBroadcast( - context, 0, - Intent(context, MyBroadcastReceiver::class.java) - .putExtra(MyBroadcastReceiver.EXTRA_MESSAGE, s), 0 - ) - } - // [END create_dynamic_slice] -} \ No newline at end of file diff --git a/slice/src/main/java/com/example/android/slice/kotlin/MainActivity.kt b/slice/src/main/java/com/example/android/slice/kotlin/MainActivity.kt deleted file mode 100644 index eb5c592b4..000000000 --- a/slice/src/main/java/com/example/android/slice/kotlin/MainActivity.kt +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.example.android.slice.kotlin - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.example.android.snippets.R - -class MainActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) - } -} diff --git a/slice/src/main/java/com/example/android/slice/kotlin/MyBroadcastReceiver.kt b/slice/src/main/java/com/example/android/slice/kotlin/MyBroadcastReceiver.kt deleted file mode 100644 index fb2ac2275..000000000 --- a/slice/src/main/java/com/example/android/slice/kotlin/MyBroadcastReceiver.kt +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.example.android.slice.kotlin - -import android.app.slice.Slice -import android.content.BroadcastReceiver -import android.content.Context -import android.content.Intent -import android.net.Uri -import android.widget.Toast - -//class MyBroadcastReceiver : BroadcastReceiver() { -// -// override fun onReceive(context: Context, intent: Intent) { -// if (intent.hasExtra(Slice.EXTRA_TOGGLE_STATE)) { -// Toast.makeText(context, "Toggled: " + intent.getBooleanExtra( -// Slice.EXTRA_TOGGLE_STATE, false), -// Toast.LENGTH_LONG).show() -// } -// } -// -// companion object { -// const val EXTRA_MESSAGE = "message" -// } -//} -// [START broadcastreceiver_example] -class MyBroadcastReceiver : BroadcastReceiver() { - - override fun onReceive(context: Context, intent: Intent) { - if (intent.hasExtra(Slice.EXTRA_TOGGLE_STATE)) { - Toast.makeText( - context, "Toggled: " + intent.getBooleanExtra( - Slice.EXTRA_TOGGLE_STATE, false - ), - Toast.LENGTH_LONG - ).show() - receivedCount++; - context.contentResolver.notifyChange(sliceUri, null) - } - } - - companion object { - var receivedCount = 0 - val sliceUri = Uri.parse("content://com.android.example.slicesample/count") - const val EXTRA_MESSAGE = "message" - } -} -// [END broadcastreceiver_example] \ No newline at end of file diff --git a/slice/src/main/java/com/example/android/slice/kotlin/MySliceProvider.kt b/slice/src/main/java/com/example/android/slice/kotlin/MySliceProvider.kt deleted file mode 100644 index 8dd5d3fa7..000000000 --- a/slice/src/main/java/com/example/android/slice/kotlin/MySliceProvider.kt +++ /dev/null @@ -1,249 +0,0 @@ -/* - * Copyright 2018 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.example.android.slice.kotlin - -import android.app.PendingIntent -import android.net.Uri -import androidx.core.graphics.drawable.IconCompat -import androidx.slice.Slice -import androidx.slice.SliceProvider -import androidx.slice.builders.ListBuilder -import androidx.slice.builders.ListBuilder.LARGE_IMAGE -import androidx.slice.builders.SliceAction -import androidx.slice.builders.cell -import androidx.slice.builders.gridRow -import androidx.slice.builders.header -import androidx.slice.builders.inputRange -import androidx.slice.builders.list -import androidx.slice.builders.row -import androidx.slice.builders.seeMoreRow -import androidx.slice.core.SliceHints -import androidx.slice.core.SliceHints.ICON_IMAGE -import com.example.android.snippets.R - -class MySliceProvider : SliceProvider() { - var isConnected: Boolean = false - lateinit var wifiTogglePendingIntent: PendingIntent - lateinit var wifiUri: Uri - lateinit var seeAllNetworksPendingIntent: PendingIntent - lateinit var takeNoteIntent: PendingIntent - lateinit var voiceNoteIntent: PendingIntent - lateinit var cameraNoteIntent: PendingIntent - lateinit var pendingIntent: PendingIntent - lateinit var intent1: PendingIntent - lateinit var intent2: PendingIntent - lateinit var intent3: PendingIntent - lateinit var intent4: PendingIntent - lateinit var icon: IconCompat - lateinit var image1: IconCompat - lateinit var image2: IconCompat - lateinit var image3: IconCompat - lateinit var image4: IconCompat - lateinit var volumeChangedPendingIntent: PendingIntent - lateinit var wifiSettingsPendingIntent: PendingIntent - - override fun onBindSlice(sliceUri: Uri): Slice? { - return null - } - - override fun onCreateSliceProvider(): Boolean { - return false - } - - // [START create_slice_with_header] - fun createSliceWithHeader(sliceUri: Uri) = - list(context, sliceUri, ListBuilder.INFINITY) { - setAccentColor(0xff0F9D) // Specify color for tinting icons - header { - title = "Get a ride" - subtitle = "Ride in 4 min" - summary = "Work in 1 hour 45 min | Home in 12 min" - } - row { - title = "Home" - subtitle = "12 miles | 12 min | $9.00" - addEndItem( - IconCompat.createWithResource(context, R.drawable.ic_home), - ListBuilder.ICON_IMAGE - ) - } - } - // [END create_slice_with_header] - - // [START create_slice_with_action_in_header] - fun createSliceWithActionInHeader(sliceUri: Uri): Slice { - // Construct our slice actions. - val noteAction = SliceAction.create( - takeNoteIntent, - IconCompat.createWithResource(context, R.drawable.ic_pencil), - ICON_IMAGE, - "Take note" - ) - - val voiceNoteAction = SliceAction.create( - voiceNoteIntent, - IconCompat.createWithResource(context, R.drawable.ic_mic), - ICON_IMAGE, - "Take voice note" - ) - - val cameraNoteAction = SliceAction.create( - cameraNoteIntent, - IconCompat.createWithResource(context, R.drawable.ic_camera), - ICON_IMAGE, - "Create photo note" - ) - - // Construct the list. - return list(context, sliceUri, ListBuilder.INFINITY) { - setAccentColor(0xfff4b4) // Specify color for tinting icons - header { - title = "Create new note" - subtitle = "Easily done with this note taking app" - } - addAction(noteAction) - addAction(voiceNoteAction) - addAction(cameraNoteAction) - } - } - // [END create_slice_with_action_in_header] - - // [START create_action_with_action_in_row] - fun createActionWithActionInRow(sliceUri: Uri): Slice { - // Primary action - open wifi settings. - val wifiAction = SliceAction.create( - wifiSettingsPendingIntent, - IconCompat.createWithResource(context, R.drawable.ic_wifi), - ICON_IMAGE, - "Wi-Fi Settings" - ) - - // Toggle action - toggle wifi. - val toggleAction = SliceAction.createToggle( - wifiTogglePendingIntent, - "Toggle Wi-Fi", - isConnected /* isChecked */ - ) - - // Create the parent builder. - return list(context, wifiUri, ListBuilder.INFINITY) { - setAccentColor(0xff4285) // Specify color for tinting icons / controls. - row { - title = "Wi-Fi" - primaryAction = wifiAction - addEndItem(toggleAction) - } - } - } - // [END create_action_with_action_in_row] - - // [START create_slice_with_gridrow] - fun createSliceWithGridRow(sliceUri: Uri): Slice { - // Create the parent builder. - return list(context, sliceUri, ListBuilder.INFINITY) { - header { - title = "Famous restaurants" - primaryAction = SliceAction.create( - pendingIntent, icon, ListBuilder.ICON_IMAGE, "Famous restaurants" - ) - } - gridRow { - cell { - addImage(image1, LARGE_IMAGE) - addTitleText("Top Restaurant") - addText("0.3 mil") - contentIntent = intent1 - } - cell { - addImage(image2, LARGE_IMAGE) - addTitleText("Fast and Casual") - addText("0.5 mil") - contentIntent = intent2 - } - cell { - addImage(image3, LARGE_IMAGE) - addTitleText("Casual Diner") - addText("0.9 mi") - contentIntent = intent3 - } - cell { - addImage(image4, LARGE_IMAGE) - addTitleText("Ramen Spot") - addText("1.2 mi") - contentIntent = intent4 - } - } - } - } - // [END create_slice_with_gridrow] - - // [START create_slice_with_range] - fun createSliceWithRange(sliceUri: Uri): Slice { - return list(context, sliceUri, ListBuilder.INFINITY) { - inputRange { - title = "Ring Volume" - inputAction = volumeChangedPendingIntent - max = 100 - value = 30 - } - } - } - // [END create_slice_with_range] - - // [START create_slice_showing_loading] - fun createSliceShowingLoading(sliceUri: Uri): Slice { - // We’re waiting to load the time to work so indicate that on the slice by - // setting the subtitle with the overloaded method and indicate true. - return list(context, sliceUri, ListBuilder.INFINITY) { - row { - title = "Ride to work" - setSubtitle(null, true) - addEndItem(IconCompat.createWithResource(context, R.drawable.ic_work), ICON_IMAGE) - } - } - } - // [END create_slice_showing_loading] - - // [START see_more_action] - fun seeMoreActionSlice(sliceUri: Uri) = - list(context, sliceUri, ListBuilder.INFINITY) { - // [START_EXCLUDE] - // [END_EXCLUDE] - setSeeMoreAction(seeAllNetworksPendingIntent) - // [START_EXCLUDE] - // [END_EXCLUDE] - } - // [END see_more_action] - - // [START see_more_row] - fun seeMoreRowSlice(sliceUri: Uri) = - list(context, sliceUri, ListBuilder.INFINITY) { - // [START_EXCLUDE] - // [END_EXCLUDE] - seeMoreRow { - title = "See all available networks" - addEndItem( - IconCompat.createWithResource(context, R.drawable.ic_right_caret), ICON_IMAGE - ) - primaryAction = SliceAction.create( - seeAllNetworksPendingIntent, - IconCompat.createWithResource(context, R.drawable.ic_wifi), - ListBuilder.ICON_IMAGE, - "Wi-Fi Networks" - ) - } - } - // [END see_more_row] -} \ No newline at end of file diff --git a/slice/src/main/res/drawable/ic_camera.xml b/slice/src/main/res/drawable/ic_camera.xml deleted file mode 100644 index cdc3263c3..000000000 --- a/slice/src/main/res/drawable/ic_camera.xml +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/slice/src/main/res/drawable/ic_home.xml b/slice/src/main/res/drawable/ic_home.xml deleted file mode 100644 index cdc3263c3..000000000 --- a/slice/src/main/res/drawable/ic_home.xml +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/slice/src/main/res/drawable/ic_mic.xml b/slice/src/main/res/drawable/ic_mic.xml deleted file mode 100644 index cdc3263c3..000000000 --- a/slice/src/main/res/drawable/ic_mic.xml +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/slice/src/main/res/drawable/ic_pencil.xml b/slice/src/main/res/drawable/ic_pencil.xml deleted file mode 100644 index cdc3263c3..000000000 --- a/slice/src/main/res/drawable/ic_pencil.xml +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/slice/src/main/res/drawable/ic_right_caret.xml b/slice/src/main/res/drawable/ic_right_caret.xml deleted file mode 100644 index cdc3263c3..000000000 --- a/slice/src/main/res/drawable/ic_right_caret.xml +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/slice/src/main/res/drawable/ic_wifi.xml b/slice/src/main/res/drawable/ic_wifi.xml deleted file mode 100644 index cdc3263c3..000000000 --- a/slice/src/main/res/drawable/ic_wifi.xml +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/slice/src/main/res/drawable/ic_work.xml b/slice/src/main/res/drawable/ic_work.xml deleted file mode 100644 index cdc3263c3..000000000 --- a/slice/src/main/res/drawable/ic_work.xml +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/slice/src/main/res/values/strings.xml b/slice/src/main/res/values/strings.xml deleted file mode 100644 index 14b62cc35..000000000 --- a/slice/src/main/res/values/strings.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - slice - From 96bdca82e02eac39ee27472a4252c46882f5e3c4 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Wed, 21 Jun 2023 10:20:32 +0100 Subject: [PATCH 103/463] Remove copying gradle properties as part of workflow (#115) * Fix workflow for update_deps.yml --- .github/workflows/update_deps.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml index fecba6f83..973755b68 100644 --- a/.github/workflows/update_deps.yml +++ b/.github/workflows/update_deps.yml @@ -8,8 +8,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Copy CI gradle.properties - run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - name: set up JDK 17 uses: actions/setup-java@v3 with: From e0e772f0940b44a9e8d2e70f703637ce1035cd62 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Mon, 26 Jun 2023 07:56:45 +0100 Subject: [PATCH 104/463] =?UTF-8?q?=F0=9F=A4=96=20Update=20Dependencies=20?= =?UTF-8?q?(#116)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🤖 Update Dependencies * Fix upgrade * Apply Spotless * Upgrade compose compiler * Disable ConstraintLayout lint checks as its not working. Add jvmToolchain for each module. --------- Co-authored-by: Rebecca Franks Co-authored-by: riggaroo --- bluetoothle/build.gradle.kts | 4 +- compose/recomposehighlighter/build.gradle.kts | 4 + compose/snippets/build.gradle.kts | 7 ++ compose/snippets/lint.xml | 6 ++ .../interop/ComposeWithOtherLibraries.kt | 10 ++- .../MigrationCommonScenariosSnippets.kt | 11 ++- .../compose/snippets/layouts/PagerSnippets.kt | 74 +++++++++++++------ .../snippets/lists/LazyListSnippets.kt | 8 +- gradle/libs.versions.toml | 48 ++++++------ kotlin/build.gradle.kts | 4 + shared/build.gradle.kts | 5 +- 11 files changed, 123 insertions(+), 58 deletions(-) create mode 100644 compose/snippets/lint.xml diff --git a/bluetoothle/build.gradle.kts b/bluetoothle/build.gradle.kts index 0b9411da4..5dc002c96 100644 --- a/bluetoothle/build.gradle.kts +++ b/bluetoothle/build.gradle.kts @@ -19,7 +19,9 @@ android { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } - + kotlin { + jvmToolchain(17) + } buildTypes { getByName("debug") { signingConfig = signingConfigs.getByName("debug") diff --git a/compose/recomposehighlighter/build.gradle.kts b/compose/recomposehighlighter/build.gradle.kts index f364d1c5c..1bbdf6ea4 100644 --- a/compose/recomposehighlighter/build.gradle.kts +++ b/compose/recomposehighlighter/build.gradle.kts @@ -15,6 +15,10 @@ android { testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } + kotlin { + jvmToolchain(17) + } + buildTypes { getByName("debug") { signingConfig = signingConfigs.getByName("debug") diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index d760eaeb6..e9f1e2274 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -51,6 +51,10 @@ android { targetCompatibility = JavaVersion.VERSION_17 } + kotlin { + jvmToolchain(17) + } + buildFeatures { compose = true // Disable unused AGP features @@ -67,6 +71,9 @@ android { excludes += "/META-INF/AL2.0" excludes += "/META-INF/LGPL2.1" } + lint { + lintConfig = file("lint.xml") + } } dependencies { diff --git a/compose/snippets/lint.xml b/compose/snippets/lint.xml new file mode 100644 index 000000000..778dd98f3 --- /dev/null +++ b/compose/snippets/lint.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/interop/ComposeWithOtherLibraries.kt b/compose/snippets/src/main/java/com/example/compose/snippets/interop/ComposeWithOtherLibraries.kt index e14256124..3fc79a661 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/interop/ComposeWithOtherLibraries.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/interop/ComposeWithOtherLibraries.kt @@ -48,7 +48,7 @@ import androidx.navigation.compose.navigation import androidx.navigation.compose.rememberNavController import androidx.paging.PagingData import androidx.paging.compose.collectAsLazyPagingItems -import androidx.paging.compose.items +import androidx.paging.compose.itemKey import coil.compose.rememberAsyncImagePainter import com.google.android.gms.maps.model.CameraPosition import com.google.android.gms.maps.model.LatLng @@ -248,8 +248,12 @@ private object PagingExample { fun MyScreen(flow: Flow>) { val lazyPagingItems = flow.collectAsLazyPagingItems() LazyColumn { - items(lazyPagingItems) { - Text("Item is $it") + items( + lazyPagingItems.itemCount, + key = lazyPagingItems.itemKey { it } + ) { index -> + val item = lazyPagingItems[index] + Text("Item is $item") } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/interop/MigrationCommonScenariosSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/interop/MigrationCommonScenariosSnippets.kt index 8031bb889..6b146981c 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/interop/MigrationCommonScenariosSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/interop/MigrationCommonScenariosSnippets.kt @@ -32,6 +32,7 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.pager.HorizontalPager +import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Image @@ -264,8 +265,11 @@ class CoordinatorLayoutActivity : ComponentActivity() { // [START android_compose_interop_migration_common_scenarios_coordinatorlayout_step3] composeView.setContent { Scaffold(Modifier.fillMaxSize()) { contentPadding -> + val pagerState = rememberPagerState { + 10 + } HorizontalPager( - pageCount = 10, + state = pagerState, modifier = Modifier.padding(contentPadding) ) { /* Page contents */ } } @@ -297,8 +301,11 @@ class CoordinatorLayoutActivity : ComponentActivity() { } } ) { contentPadding -> + val pagerState = rememberPagerState { + 10 + } HorizontalPager( - pageCount = 10, + state = pagerState, modifier = Modifier.padding(contentPadding) ) { /* Page contents */ } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt index ba9040912..85e9a454d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt @@ -91,7 +91,10 @@ import kotlinx.coroutines.launch fun HorizontalPagerSample() { // [START android_compose_layouts_pager_horizontal_basic] // Display 10 items - HorizontalPager(pageCount = 10) { page -> + val pagerState = rememberPagerState(pageCount = { + 10 + }) + HorizontalPager(state = pagerState) { page -> // Our page content Text( text = "Page: $page", @@ -106,7 +109,10 @@ fun HorizontalPagerSample() { fun VerticalPagerSample() { // [START android_compose_layouts_pager_vertical_basic] // Display 10 items - VerticalPager(pageCount = 10) { page -> + val pagerState = rememberPagerState(pageCount = { + 10 + }) + VerticalPager(state = pagerState) { page -> // Our page content Text( text = "Page: $page", @@ -122,9 +128,10 @@ fun VerticalPagerSample() { fun PagerScrollToItem() { Box { // [START android_compose_layouts_pager_scroll] - val pagerState = rememberPagerState() - - HorizontalPager(pageCount = 10, state = pagerState) { page -> + val pagerState = rememberPagerState(pageCount = { + 10 + }) + HorizontalPager(state = pagerState) { page -> // Our page content Text( text = "Page: $page", @@ -153,9 +160,11 @@ fun PagerScrollToItem() { fun PagerAnimateToItem() { Box { // [START android_compose_layouts_pager_scroll_animate] - val pagerState = rememberPagerState() + val pagerState = rememberPagerState(pageCount = { + 10 + }) - HorizontalPager(pageCount = 10, state = pagerState) { page -> + HorizontalPager(state = pagerState) { page -> // Our page content Text( text = "Page: $page", @@ -183,7 +192,9 @@ fun PagerAnimateToItem() { @Composable fun PageChangesSample() { // [START android_compose_layouts_pager_notify_page_changes] - val pagerState = rememberPagerState() + val pagerState = rememberPagerState(pageCount = { + 10 + }) LaunchedEffect(pagerState) { // Collect from the a snapshotFlow reading the currentPage @@ -195,7 +206,6 @@ fun PageChangesSample() { } VerticalPager( - pageCount = 10, state = pagerState, ) { page -> Text(text = "Page: $page") @@ -209,7 +219,9 @@ fun PageChangesSample() { fun PagerWithTabsExample() { val pages = listOf("Movies", "Books", "Shows", "Fun") // [START android_compose_layouts_pager_tabs] - val pagerState = rememberPagerState() + val pagerState = rememberPagerState(pageCount = { + pages.size + }) TabRow( // Our selected tab is our current page @@ -226,7 +238,6 @@ fun PagerWithTabsExample() { } HorizontalPager( - pageCount = pages.size, state = pagerState, ) { page -> Text("Page: ${pages[page]}") @@ -238,8 +249,10 @@ fun PagerWithTabsExample() { @Composable fun PagerWithEffect() { // [START android_compose_layouts_pager_transformation] - val pagerState = rememberPagerState() - HorizontalPager(pageCount = 4, state = pagerState) { page -> + val pagerState = rememberPagerState(pageCount = { + 4 + }) + HorizontalPager(state = pagerState) { page -> Card( Modifier .size(200.dp) @@ -270,8 +283,11 @@ fun PagerWithEffect() { @Preview fun PagerStartPadding() { // [START android_compose_layouts_pager_padding_start] + val pagerState = rememberPagerState(pageCount = { + 4 + }) HorizontalPager( - pageCount = 4, + state = pagerState, contentPadding = PaddingValues(start = 64.dp), ) { page -> // page content @@ -283,8 +299,11 @@ fun PagerStartPadding() { @Composable fun PagerHorizontalPadding() { // [START android_compose_layouts_pager_padding_horizontal] + val pagerState = rememberPagerState(pageCount = { + 4 + }) HorizontalPager( - pageCount = 4, + state = pagerState, contentPadding = PaddingValues(horizontal = 32.dp), ) { page -> // page content @@ -296,8 +315,11 @@ fun PagerHorizontalPadding() { @Composable fun PagerEndPadding() { // [START android_compose_layouts_pager_padding_end] + val pagerState = rememberPagerState(pageCount = { + 4 + }) HorizontalPager( - pageCount = 4, + state = pagerState, contentPadding = PaddingValues(end = 64.dp), ) { page -> // page content @@ -309,8 +331,11 @@ fun PagerEndPadding() { @Composable fun PagerCustomSizes() { // [START android_compose_layouts_pager_custom_size] + val pagerState = rememberPagerState(pageCount = { + 4 + }) HorizontalPager( - pageCount = 4, + state = pagerState, pageSize = PageSize.Fixed(100.dp) ) { page -> // page content @@ -322,8 +347,11 @@ fun PagerCustomSizes() { @Composable fun PagerWithTabs() { // [START android_compose_layouts_pager_with_tabs] + val pagerState = rememberPagerState(pageCount = { + 4 + }) HorizontalPager( - pageCount = 4 + state = pagerState, ) { page -> // page content } @@ -336,10 +364,10 @@ fun PagerIndicator() { Box { // [START android_compose_pager_indicator] val pageCount = 10 - val pagerState = rememberPagerState() - + val pagerState = rememberPagerState(pageCount = { + 4 + }) HorizontalPager( - pageCount = pageCount, state = pagerState ) { page -> // Our page content @@ -383,11 +411,12 @@ private val threePagesPerViewport = object : PageSize { } // [END android_compose_pager_custom_page_size] +@OptIn(ExperimentalFoundationApi::class) @Preview @Composable private fun CustomSnapDistance() { // [START android_compose_pager_custom_snap_distance] - val pagerState = rememberPagerState() + val pagerState = rememberPagerState(pageCount = { 10 }) val fling = PagerDefaults.flingBehavior( state = pagerState, @@ -397,7 +426,6 @@ private fun CustomSnapDistance() { Column(modifier = Modifier.fillMaxSize()) { HorizontalPager( state = pagerState, - pageCount = 10, pageSize = PageSize.Fixed(200.dp), beyondBoundsPageCount = 10, flingBehavior = fling diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index b747ec708..dc948b4d6 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -61,7 +61,7 @@ import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.dp import androidx.paging.Pager import androidx.paging.compose.collectAsLazyPagingItems -import androidx.paging.compose.items +import androidx.paging.compose.itemKey import coil.compose.AsyncImage import coil.compose.rememberAsyncImagePainter import com.example.compose.snippets.tooling.Preview @@ -342,7 +342,11 @@ private object ListsSnippetsPaging { val lazyPagingItems = pager.flow.collectAsLazyPagingItems() LazyColumn { - items(lazyPagingItems) { message -> + items( + lazyPagingItems.itemCount, + key = lazyPagingItems.itemKey { it.id } + ) { index -> + val message = lazyPagingItems[index] if (message != null) { MessageRow(message) } else { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7ad16b452..a88f54a9d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,55 +9,54 @@ androidx-activity-compose = "1.7.2" androidx-appcompat = "1.6.1" androidx-benchmark = "1.1.1" androidx-benchmark-junit4 = "1.1.0-beta04" -androidx-cardview = "1.0.0-beta01" -androidx-coordinator-layout = "1.2.0" +androidx-cardview = "1.0.0" androidx-compose-bom = "2023.06.00" androidx-constraintlayout = "2.1.4" -androidx-constraintlayout-compose = "1.1.0-alpha04" +androidx-constraintlayout-compose = "1.1.0-alpha10" +androidx-coordinator-layout = "1.2.0" androidx-corektx = "1.10.1" androidx-emoji2-views = "1.3.0" -androidx-fragment-ktx = "1.5.7" +androidx-fragment-ktx = "1.6.0" androidx-lifecycle-compose = "2.6.1" androidx-lifecycle-runtime-compose = "2.6.1" -androidx-navigation = "2.5.3" -androidx-palette = "1.0.0" -androidx-paging = "1.0.0-alpha18" +androidx-navigation = "2.6.0" +androidx-paging = "3.2.0-beta01" androidx-paging-common = "3.1.1" -androidx-slice = "1.0.0-alpha4" +androidx-palette = "1.0.0" androidx-test = "1.5.0" androidx-test-espresso = "3.5.1" androidx-test-ext-junit = "1.1.5" androidx-test-ext-truth = "1.5.0" -androidx-window = "1.1.0-beta02" +androidx-window = "1.2.0-alpha02" androidxHiltNavigationCompose = "1.0.0" androix-test-uiautomator = "2.2.0" -coil = "2.2.2" +coil = "2.4.0" # @keep -compileSdk = "33" -compose-compiler = "1.4.0" -coroutines = "1.6.4" +compileSdk = "34" +compose-compiler = "1.4.7" +coroutines = "1.7.1" google-maps = "18.1.0" -gradle-versions = "0.46.0" -hilt = "2.44" +gradle-versions = "0.47.0" +hilt = "2.46.1" hiltExt = "1.0.0" # @pin When updating to AGP 7.4.0-alpha10 and up we can update this https://developer.android.com/studio/write/java8-support#library-desugaring-versions jdkDesugar = "1.2.2" junit = "4.13.2" # @pin Update in conjuction with Compose Compiler -kotlin = "1.8.0" +kotlin = "1.8.21" ksp = "1.8.0-1.0.9" maps-compose = "2.11.4" -material = "1.9.0-beta01" +material = "1.10.0-alpha04" # @keep minSdk = "21" -okhttp = "4.10.0" +okhttp = "4.11.0" recyclerview = "1.3.0" robolectric = "4.9.2" rome = "1.18.0" room = "2.5.1" secrets = "2.0.1" # @keep -targetSdk = "33" +targetSdk = "34" version-catalog-update = "0.8.0" [libraries] @@ -66,14 +65,14 @@ accompanist-permissions = { module = "com.google.accompanist:accompanist-permiss accompanist-swiperefresh = { module = "com.google.accompanist:accompanist-swiperefresh", version.ref = "accompanist" } accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanist" } accompanist-theme-adapter-appcompat = { module = "com.google.accompanist:accompanist-themeadapter-appcompat", version.ref = "accompanist" } -accompanist-theme-adapter-material3 = { module = "com.google.accompanist:accompanist-themeadapter-material3", version.ref = "accompanist" } accompanist-theme-adapter-material = { module = "com.google.accompanist:accompanist-themeadapter-material", version.ref = "accompanist" } +accompanist-theme-adapter-material3 = { module = "com.google.accompanist:accompanist-themeadapter-material3", version.ref = "accompanist" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } androidx-activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "androidx-activity-compose" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } androidx-benchmark-macrobenchmark = { module = "androidx.benchmark:benchmark-macro", version.ref = "androidx-benchmark" } androidx-benchmark-macrobenchmark-junit4 = { module = "androidx.benchmark:benchmark-macro-junit4", version.ref = "androidx-benchmark-junit4" } -androidx-cardview = { module = "androidx.cardview:cardview", version.ref = "androidx-cardview"} +androidx-cardview = { module = "androidx.cardview:cardview", version.ref = "androidx-cardview" } androidx-compose-animation = { module = "androidx.compose.animation:animation" } androidx-compose-animation-graphics = { module = "androidx.compose.animation:animation-graphics" } androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "androidx-compose-bom" } @@ -86,8 +85,8 @@ androidx-compose-materialWindow = { module = "androidx.compose.material3:materia androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" } androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" } androidx-compose-ui = { module = "androidx.compose.ui:ui" } -androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } androidx-compose-ui-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" } +androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } @@ -103,7 +102,7 @@ androidx-emoji2-views = { module = "androidx.emoji2:emoji2-views", version.ref = androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment-ktx" } androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "androidxHiltNavigationCompose" } androidx-lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle-compose" } -androidx-lifecycle-runtime = "androidx.lifecycle:lifecycle-runtime-ktx:2.6.1" +androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidx-lifecycle-compose" } androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle-runtime-compose" } androidx-lifecycle-viewModelCompose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle-compose" } androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle-compose" } @@ -111,10 +110,9 @@ androidx-lifecycle-viewmodel-savedstate = { module = "androidx.lifecycle:lifecyc androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "androidx-navigation" } androidx-navigation-fragment = { module = "androidx.navigation:navigation-fragment-ktx", version.ref = "androidx-navigation" } androidx-navigation-ui-ktx = { module = "androidx.navigation:navigation-ui-ktx", version.ref = "androidx-navigation" } -androidx-paging-compose = { module = "androidx.paging:paging-compose", version.ref = "androidx-paging" } androidx-paging-common-ktx = { module = "androidx.paging:paging-common-ktx", version.ref = "androidx-paging-common" } +androidx-paging-compose = { module = "androidx.paging:paging-compose", version.ref = "androidx-paging" } androidx-palette = { module = "androidx.palette:palette", version.ref = "androidx-palette" } -androidx-slice = { module = "androidx.slice:slice-builders-ktx", version.ref = "androidx-slice"} androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" } androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" } diff --git a/kotlin/build.gradle.kts b/kotlin/build.gradle.kts index 87ac8bf4d..12feddf2d 100644 --- a/kotlin/build.gradle.kts +++ b/kotlin/build.gradle.kts @@ -16,6 +16,10 @@ android { testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } + kotlin { + jvmToolchain(17) + } + buildTypes { getByName("debug") { signingConfig = signingConfigs.getByName("debug") diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index 931118d25..78f920b3c 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -8,10 +8,11 @@ android { defaultConfig { minSdk = libs.versions.minSdk.get().toInt() - targetSdk = libs.versions.targetSdk.get().toInt() testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } - + kotlin { + jvmToolchain(17) + } buildTypes { getByName("debug") { signingConfig = signingConfigs.getByName("debug") From 61c1ecf4b049cb29c52081e8e5228262c6a0844d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20Pint=C3=B3=20Biescas?= Date: Mon, 26 Jun 2023 08:57:15 +0200 Subject: [PATCH 105/463] Fix lint for DeviceScanActivity (#118) --- .../sample/android/bluetoothle/java/DeviceScanActivity.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bluetoothle/src/main/java/com/sample/android/bluetoothle/java/DeviceScanActivity.java b/bluetoothle/src/main/java/com/sample/android/bluetoothle/java/DeviceScanActivity.java index e453f7032..f9169bf23 100644 --- a/bluetoothle/src/main/java/com/sample/android/bluetoothle/java/DeviceScanActivity.java +++ b/bluetoothle/src/main/java/com/sample/android/bluetoothle/java/DeviceScanActivity.java @@ -1,5 +1,6 @@ package com.sample.android.bluetoothle.java; +import android.annotation.SuppressLint; import android.app.ListActivity; import android.bluetooth.BluetoothAdapter; import android.bluetooth.le.BluetoothLeScanner; @@ -35,6 +36,7 @@ public void onScanResult(int callbackType, ScanResult result) { // Stops scanning after 10 seconds. private static final long SCAN_PERIOD = 10000; + @SuppressLint("MissingPermission") private void scanLeDevice() { if (!mScanning) { // Stops scanning after a pre-defined scan period. @@ -54,4 +56,4 @@ public void run() { } } // [END start_and_stop_scan] -} \ No newline at end of file +} From 7322f58994e9ade5ffee8e49f956e4a97339f384 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Mon, 26 Jun 2023 11:04:39 +0100 Subject: [PATCH 106/463] Added FlowLayoutSnippets.kt with examples for Flow Layouts. (#104) * Added FlowLayoutSnippets.kt with examples for Flow Layouts. * Fix tag * Apply Spotless * Moved example layouts further up in file * Upgrade FlowLayouts to latest version. * Apply Spotless * Move some snippets into CommonLayoutExamples.kt Upgrade gradle config. * Apply Spotless * More Flow snippets * Apply Spotless * remove duplicate blue color * remove duplicate blue color * Added fractional sizing example * Change to beta version for flow layout changes * Apply Spotless * Disable jetifier and enable configuration cache. --------- Co-authored-by: riggaroo --- .../snippets/layouts/CommonLayoutExamples.kt | 155 +++++++ .../snippets/layouts/FlowLayoutSnippets.kt | 434 ++++++++++++++++++ .../compose/snippets/util/MaterialColors.kt | 231 ++++++++++ gradle.properties | 21 +- 4 files changed, 829 insertions(+), 12 deletions(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/layouts/CommonLayoutExamples.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/layouts/FlowLayoutSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/util/MaterialColors.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CommonLayoutExamples.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CommonLayoutExamples.kt new file mode 100644 index 000000000..fd3b257bd --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CommonLayoutExamples.kt @@ -0,0 +1,155 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.layouts + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.example.compose.snippets.util.MaterialColors +import kotlin.random.Random + +/* +* Copyright 2022 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +@OptIn(ExperimentalLayoutApi::class) +@Composable +@Preview +fun Layout_Graph_Vertical() { + val paddingModifier = Modifier.padding(4.dp) + // [START android_compose_layout_vertical_graph] + Column( + modifier = paddingModifier.fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(4.dp) + ) { + val itemModifier = Modifier + .padding(4.dp) + .height(48.dp) + .clip(RoundedCornerShape(8.dp)) + .background(MaterialColors.Blue200) + repeat(7) { + val randomPercentage = Random.nextFloat() + Spacer( + modifier = itemModifier + .fillMaxWidth(randomPercentage) + .align(Alignment.End) + ) + } + } + // [END android_compose_layout_vertical_graph] +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +@Preview +fun Layout_Graph_Horizontal() { + val paddingModifier = Modifier.padding(4.dp) + // [START android_compose_layout_horizontal_graph] + Row( + modifier = paddingModifier.height(200.dp), + horizontalArrangement = Arrangement.spacedBy(4.dp) + ) { + val itemModifier = Modifier + .padding(4.dp) + .weight(1f) + .clip(RoundedCornerShape(8.dp)) + .background(MaterialColors.Blue200) + repeat(7) { index -> + val randomPercentage = Random.nextFloat() + Spacer( + modifier = itemModifier + .align(Alignment.Bottom) + .fillMaxHeight(randomPercentage) + ) + } + } + // [END android_compose_layout_horizontal_graph] +} + +@Composable +@Preview +fun Layout_StretchAll() { + // [START android_compose_layout_stretch_all] + Row( + modifier = Modifier.padding(4.dp), + horizontalArrangement = Arrangement.spacedBy(4.dp) + ) { + val itemModifier = Modifier + .aspectRatio(1f) + .weight(1f) + .clip(RoundedCornerShape(8.dp)) + + Spacer(modifier = itemModifier.background(MaterialColors.Green200)) + Spacer(modifier = itemModifier.background(MaterialColors.Blue200)) + Spacer(modifier = itemModifier.background(MaterialColors.Pink200)) + Spacer(modifier = itemModifier.background(MaterialColors.Purple200)) + } + // [END android_compose_layout_stretch_all] +} + +@Composable +@Preview +fun Layout_StretchMiddleItem() { + // [START android_compose_layout_stretch_middle] + Row( + modifier = Modifier + .padding(4.dp) + .height(200.dp), + horizontalArrangement = Arrangement.spacedBy(4.dp) + ) { + val itemModifier = Modifier + .fillMaxHeight() + .width(48.dp) + .clip(RoundedCornerShape(8.dp)) + + Spacer(modifier = itemModifier.background(MaterialColors.Green200)) + val middleStretchModifier = Modifier + .fillMaxHeight() + .weight(1f) + .clip(RoundedCornerShape(8.dp)) + Spacer(modifier = middleStretchModifier.background(MaterialColors.Blue200)) + Spacer(modifier = itemModifier.background(MaterialColors.Pink200)) + } + // [END android_compose_layout_stretch_middle] +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/FlowLayoutSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/FlowLayoutSnippets.kt new file mode 100644 index 000000000..941ae99df --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/FlowLayoutSnippets.kt @@ -0,0 +1,434 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.layouts + +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.Chip +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.example.compose.snippets.util.MaterialColors + +@Preview +@OptIn(ExperimentalLayoutApi::class) +// [START android_compose_flow_row_simple] +@Composable +private fun FlowRowSimpleUsageExample() { + FlowRow(modifier = Modifier.padding(8.dp)) { + ChipItem("Price: High to Low") + ChipItem("Avg rating: 4+") + ChipItem("Free breakfast") + ChipItem("Free cancellation") + ChipItem("£50 pn") + } +} +// [END android_compose_flow_row_simple] + +@OptIn(ExperimentalLayoutApi::class) +@Composable +@Preview +private fun FlowRow_MainAxis_Default_Arrangement() { + FlowRow( + modifier = Modifier + .padding(8.dp) + .fillMaxSize(), + horizontalArrangement = Arrangement.Start + ) { + FlowItems() + } +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +@Preview +private fun FlowRow_MainAxis_Space_BetweenArrangement() { + FlowRow( + modifier = Modifier + .padding(8.dp) + .fillMaxSize(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + FlowItems() + } +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +@Preview +private fun FlowRow_MainAxis_Center_Arrangement() { + FlowRow( + modifier = Modifier + .padding(8.dp) + .fillMaxSize(), + horizontalArrangement = Arrangement.Center + ) { + FlowItems() + } +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +@Preview +private fun FlowRow_MainAxis_End_Arrangement() { + FlowRow( + modifier = Modifier + .padding(8.dp) + .fillMaxSize(), + horizontalArrangement = Arrangement.End + ) { + FlowItems() + } +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +@Preview +private fun FlowRow_MainAxis_SpaceAround_Arrangement() { + FlowRow( + modifier = Modifier + .padding(8.dp) + .fillMaxSize(), + horizontalArrangement = Arrangement.SpaceAround + ) { + FlowItems() + } +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +@Preview +private fun FlowRow_MainAxis_Spacedby_Arrangement() { + FlowRow( + modifier = Modifier + .padding(8.dp) + .fillMaxSize(), + horizontalArrangement = Arrangement.spacedBy(8.dp) + ) { + FlowItems() + } +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +@Preview +private fun FlowRow_MainAxis_VerticalArrangement() { + FlowRow( + modifier = Modifier + .padding(8.dp) + .size(400.dp) + .border(2.dp, Color.DarkGray) + .padding(8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalArrangement = Arrangement.Top + ) { + FlowItems() + } +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +@Preview +private fun FlowRow_MainAxis_VerticalArrangement_Center() { + FlowRow( + modifier = Modifier + .padding(8.dp) + .size(400.dp) + .border(2.dp, Color.DarkGray) + .padding(8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalArrangement = Arrangement.Center + ) { + FlowItems() + } +} +@OptIn(ExperimentalLayoutApi::class) +@Composable +@Preview +private fun FlowRow_MainAxis_VerticalArrangement_Bottom() { + FlowRow( + modifier = Modifier + .padding(8.dp) + .size(400.dp) + .border(2.dp, Color.DarkGray) + .padding(8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalArrangement = Arrangement.Bottom + ) { + FlowItems() + } +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +@Preview +private fun FlowRow_MaxItems() { + FlowRow( + modifier = Modifier + .fillMaxSize() + .padding(8.dp), + maxItemsInEachRow = 3 + ) { + FlowItems() + } +} + +// Demo items for Flow row / flow column +@Composable +private fun FlowItems() { + Item( + modifier = Modifier.width(50.dp), + color = MaterialColors.Amber300 + ) + Item( + modifier = Modifier.width(70.dp), + color = MaterialColors.Blue300 + ) + Item( + modifier = Modifier.width(96.dp), + color = MaterialColors.Cyan300 + ) + Item( + modifier = Modifier.width(40.dp), + color = MaterialColors.DeepPurple300 + ) + + Item( + modifier = Modifier.width(150.dp), + color = MaterialColors.Green300 + ) + Item( + modifier = Modifier.width(60.dp), + color = MaterialColors.Red300 + ) + Item( + modifier = Modifier.width(102.dp), + color = MaterialColors.Purple300 + ) + Item( + modifier = Modifier.width(42.dp), + color = MaterialColors.Teal300 + ) + + Item( + modifier = Modifier.width(50.dp), + color = MaterialColors.Pink300 + ) + Item( + modifier = Modifier.width(120.dp), + color = MaterialColors.Lime300 + ) + Item( + modifier = Modifier.width(110.dp), + color = MaterialColors.Yellow300 + ) + Item( + modifier = Modifier.width(90.dp), + color = MaterialColors.DeepPurple300 + ) +} + +@OptIn(ExperimentalMaterialApi::class) +@Composable +fun ChipItem(text: String) { + Chip( + modifier = Modifier.padding(end = 4.dp), + onClick = {}, + leadingIcon = {}, + border = BorderStroke(1.dp, Color(0xFF3B3A3C)) + ) { + Text(text) + } +} + +@Composable +fun Item(modifier: Modifier = Modifier, color: Color) { + Box( + modifier + .padding(4.dp) + .clip(RoundedCornerShape(16.dp)) + .background(color) + .height(48.dp) + ) +} + +@Composable +private fun FlowItemsDifferentHeights(modifier: Modifier = Modifier) { + Item( + modifier = modifier + .width(50.dp) + .height(48.dp), + color = MaterialColors.Amber300 + ) + Item( + modifier = modifier + .width(70.dp) + .height(100.dp), + color = MaterialColors.Blue300 + ) + Item( + modifier = modifier + .width(96.dp) + .height(120.dp), + color = MaterialColors.Cyan300 + ) + Item( + modifier = modifier + .width(40.dp) + .height(110.dp), + color = MaterialColors.DeepPurple300 + ) + + Item( + modifier = modifier + .width(150.dp) + .height(90.dp), + color = MaterialColors.Green300 + ) + Item( + modifier = modifier + .width(60.dp) + .height(70.dp), + color = MaterialColors.Red300 + ) + Item( + modifier = modifier + .width(102.dp) + .height(30.dp), + color = MaterialColors.Purple300 + ) + Item( + modifier = modifier + .width(42.dp) + .height(90.dp), + color = MaterialColors.Teal300 + ) + + Item( + modifier = modifier + .width(50.dp) + .height(40.dp), + color = MaterialColors.Pink300 + ) + Item( + modifier = modifier + .width(120.dp) + .height(30.dp), + color = MaterialColors.Lime300 + ) + Item( + modifier = modifier + .width(110.dp) + .height(50.dp), + color = MaterialColors.Yellow300 + ) + Item( + modifier = modifier + .width(90.dp) + .height(120.dp), + color = MaterialColors.DeepPurple300 + ) +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +@Preview +fun FlowLayout_Grid() { + // [START android_compose_flow_layout_grid] + val rows = 3 + val columns = 3 + FlowRow( + modifier = Modifier.padding(4.dp), + horizontalArrangement = Arrangement.spacedBy(4.dp), + maxItemsInEachRow = rows + ) { + val itemModifier = Modifier + .padding(4.dp) + .height(80.dp) + .weight(1f) + .clip(RoundedCornerShape(8.dp)) + .background(MaterialColors.Blue200) + repeat(rows * columns) { + Spacer(modifier = itemModifier) + } + } + // [END android_compose_flow_layout_grid] +} + +@OptIn(ExperimentalLayoutApi::class) +@Composable +@Preview +fun FlowLayout_AlternatingGrid() { + // [START android_compose_flow_layout_alternating_grid] + FlowRow( + modifier = Modifier.padding(4.dp), + horizontalArrangement = Arrangement.spacedBy(4.dp), + maxItemsInEachRow = 2 + ) { + val itemModifier = Modifier + .padding(4.dp) + .height(80.dp) + .clip(RoundedCornerShape(8.dp)) + .background(Color.Blue) + repeat(6) { item -> + // if the item is the third item, don't use weight modifier, but rather fillMaxWidth + if ((item + 1) % 3 == 0) { + Spacer(modifier = itemModifier.fillMaxWidth()) + } else { + Spacer(modifier = itemModifier.weight(0.5f)) + } + } + } + // [END android_compose_flow_layout_alternating_grid] +} + +@OptIn(ExperimentalLayoutApi::class) +@Preview +@Composable +fun FlowLayout_FractionalSizing() { + // [START android_compose_flow_layout_fractional_sizing] + FlowRow( + modifier = Modifier.padding(4.dp), + horizontalArrangement = Arrangement.spacedBy(4.dp), + maxItemsInEachRow = 3 + ) { + val itemModifier = Modifier + .clip(RoundedCornerShape(8.dp)) + Box(modifier = itemModifier.height(200.dp).width(60.dp).background(Color.Red)) + Box(modifier = itemModifier.height(200.dp).fillMaxWidth(0.7f).background(Color.Blue)) + Box(modifier = itemModifier.height(200.dp).weight(1f).background(Color.Magenta)) + } + // [END android_compose_flow_layout_fractional_sizing] +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/util/MaterialColors.kt b/compose/snippets/src/main/java/com/example/compose/snippets/util/MaterialColors.kt new file mode 100644 index 000000000..f1bf85723 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/util/MaterialColors.kt @@ -0,0 +1,231 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:Suppress("unused") + +package com.example.compose.snippets.util + +import androidx.compose.ui.graphics.Color +object MaterialColors { + val Red50 = Color(0xFFFFEBEE) + val Red100 = Color(0xFFFFCDD2) + val Red200 = Color(0xFFEF9A9A) + val Red300 = Color(0xFFE57373) + val Red400 = Color(0xFFEF5350) + val Red500 = Color(0xFFF44336) + val Red600 = Color(0xFFE53935) + val Red700 = Color(0xFFD32F2F) + val Red800 = Color(0xFFC62828) + val Red900 = Color(0xFFB71C1C) + + val Pink50 = Color(0xFFFCE4EC) + val Pink100 = Color(0xFFF8BBD0) + val Pink200 = Color(0xFFF48FB1) + val Pink300 = Color(0xFFF06292) + val Pink400 = Color(0xFFEC407A) + val Pink500 = Color(0xFFE91E63) + val Pink600 = Color(0xFFD81B60) + val Pink700 = Color(0xFFC2185B) + val Pink800 = Color(0xFFAD1457) + val Pink900 = Color(0xFF880E4F) + + val Purple50 = Color(0xFFF3E5F5) + val Purple100 = Color(0xFFE1BEE7) + val Purple200 = Color(0xFFCE93D8) + val Purple300 = Color(0xFFBA68C8) + val Purple400 = Color(0xFFAB47BC) + val Purple500 = Color(0xFF9C27B0) + val Purple600 = Color(0xFF8E24AA) + val Purple700 = Color(0xFF7B1FA2) + val Purple800 = Color(0xFF6A1B9A) + val Purple900 = Color(0xFF4A148C) + + val DeepPurple50 = Color(0xFFEDE7F6) + val DeepPurple100 = Color(0xFFD1C4E9) + val DeepPurple200 = Color(0xFFB39DDB) + val DeepPurple300 = Color(0xFF9575CD) + val DeepPurple400 = Color(0xFF7E57C2) + val DeepPurple500 = Color(0xFF673AB7) + val DeepPurple600 = Color(0xFF5E35B1) + val DeepPurple700 = Color(0xFF512DA8) + val DeepPurple800 = Color(0xFF4527A0) + val DeepPurple900 = Color(0xFF311B92) + + val Indigo50 = Color(0xFFE8EAF6) + val Indigo100 = Color(0xFFC5CAE9) + val Indigo200 = Color(0xFF9FA8DA) + val Indigo300 = Color(0xFF7986CB) + val Indigo400 = Color(0xFF5C6BC0) + val Indigo500 = Color(0xFF3F51B5) + val Indigo600 = Color(0xFF3949AB) + val Indigo700 = Color(0xFF303F9F) + val Indigo800 = Color(0xFF283593) + val Indigo900 = Color(0xFF1A237E) + + val Blue50 = Color(0xFFE3F2FD) + val Blue100 = Color(0xFFBBDEFB) + val Blue200 = Color(0xFF90CAF9) + val Blue300 = Color(0xFF64B5F6) + val Blue400 = Color(0xFF42A5F5) + val Blue500 = Color(0xFF2196F3) + val Blue600 = Color(0xFF1E88E5) + val Blue700 = Color(0xFF1976D2) + val Blue800 = Color(0xFF1565C0) + val Blue900 = Color(0xFF0D47A1) + + val LightBlue50 = Color(0xFFE1F5FE) + val LightBlue100 = Color(0xFFB3E5FC) + val LightBlue200 = Color(0xFF81D4FA) + val LightBlue300 = Color(0xFF4FC3F7) + val LightBlue400 = Color(0xFF29B6F6) + val LightBlue500 = Color(0xFF03A9F4) + val LightBlue600 = Color(0xFF039BE5) + val LightBlue700 = Color(0xFF0288D1) + val LightBlue800 = Color(0xFF0277BD) + val LightBlue900 = Color(0xFF01579B) + + val Cyan50 = Color(0xFFE0F7FA) + val Cyan100 = Color(0xFFB2EBF2) + val Cyan200 = Color(0xFF80DEEA) + val Cyan300 = Color(0xFF4DD0E1) + val Cyan400 = Color(0xFF26C6DA) + val Cyan500 = Color(0xFF00BCD4) + val Cyan600 = Color(0xFF00ACC1) + val Cyan700 = Color(0xFF0097A7) + val Cyan800 = Color(0xFF00838F) + val Cyan900 = Color(0xFF006064) + + val Teal50 = Color(0xFFE0F2F1) + val Teal100 = Color(0xFFB2DFDB) + val Teal200 = Color(0xFF80CBC4) + val Teal300 = Color(0xFF4DB6AC) + val Teal400 = Color(0xFF26A69A) + val Teal500 = Color(0xFF009688) + val Teal600 = Color(0xFF00897B) + val Teal700 = Color(0xFF00796B) + val Teal800 = Color(0xFF00695C) + val Teal900 = Color(0xFF004D40) + + val LightGreen50 = Color(0xFFF1F8E9) + val LightGreen100 = Color(0xFFDCEDC8) + val LightGreen200 = Color(0xFFC5E1A5) + val LightGreen300 = Color(0xFFAED581) + val LightGreen400 = Color(0xFF9CCC65) + val LightGreen500 = Color(0xFF8BC34A) + val LightGreen600 = Color(0xFF7CB342) + val LightGreen700 = Color(0xFF689F38) + val LightGreen800 = Color(0xFF558B2F) + val LightGreen900 = Color(0xFF33691E) + + val Green50 = Color(0xFFE8F5E9) + val Green100 = Color(0xFFC8E6C9) + val Green200 = Color(0xFFA5D6A7) + val Green300 = Color(0xFF81C784) + val Green400 = Color(0xFF66BB6A) + val Green500 = Color(0xFF4CAF50) + val Green600 = Color(0xFF43A047) + val Green700 = Color(0xFF388E3C) + val Green800 = Color(0xFF2E7D32) + val Green900 = Color(0xFF1B5E20) + + val Lime50 = Color(0xFFF9FBE7) + val Lime100 = Color(0xFFF0F4C3) + val Lime200 = Color(0xFFE6EE9C) + val Lime300 = Color(0xFFDCE775) + val Lime400 = Color(0xFFD4E157) + val Lime500 = Color(0xFFCDDC39) + val Lime600 = Color(0xFFC0CA33) + val Lime700 = Color(0xFFAFB42B) + val Lime800 = Color(0xFF9E9D24) + val Lime900 = Color(0xFF827717) + + val Yellow50 = Color(0xFFFFFDE7) + val Yellow100 = Color(0xFFFFF9C4) + val Yellow200 = Color(0xFFFFF59D) + val Yellow300 = Color(0xFFFFF176) + val Yellow400 = Color(0xFFFFEE58) + val Yellow500 = Color(0xFFFFEB3B) + val Yellow600 = Color(0xFFFDD835) + val Yellow700 = Color(0xFFFBC02D) + val Yellow800 = Color(0xFFF9A825) + val Yellow900 = Color(0xFFF57F17) + + val Amber50 = Color(0xFFFFF8E1) + val Amber100 = Color(0xFFFFECB3) + val Amber200 = Color(0xFFFFE082) + val Amber300 = Color(0xFFFFD54F) + val Amber400 = Color(0xFFFFCA28) + val Amber500 = Color(0xFFFFC107) + val Amber600 = Color(0xFFFFB300) + val Amber700 = Color(0xFFFFA000) + val Amber800 = Color(0xFFFF8F00) + val Amber900 = Color(0xFFFF6F00) + + val Orange50 = Color(0xFFFFF3E0) + val Orange100 = Color(0xFFFFE0B2) + val Orange200 = Color(0xFFFFCC80) + val Orange300 = Color(0xFFFFB74D) + val Orange400 = Color(0xFFFFA726) + val Orange500 = Color(0xFFFF9800) + val Orange600 = Color(0xFFFB8C00) + val Orange700 = Color(0xFFF57C00) + val Orange800 = Color(0xFFEF6C00) + val Orange900 = Color(0xFFE65100) + + val DeepOrange50 = Color(0xFFFBE9E7) + val DeepOrange100 = Color(0xFFFFCCBC) + val DeepOrange200 = Color(0xFFFFAB91) + val DeepOrange300 = Color(0xFFFF8A65) + val DeepOrange400 = Color(0xFFFF7043) + val DeepOrange500 = Color(0xFFFF5722) + val DeepOrange600 = Color(0xFFF4511E) + val DeepOrange700 = Color(0xFFE64A19) + val DeepOrange800 = Color(0xFFD84315) + val DeepOrange900 = Color(0xFFBF360C) + + val Brown50 = Color(0xFFEFEBE9) + val Brown100 = Color(0xFFD7CCC8) + val Brown200 = Color(0xFFBCAAA4) + val Brown300 = Color(0xFFA1887F) + val Brown400 = Color(0xFF8D6E63) + val Brown500 = Color(0xFF795548) + val Brown600 = Color(0xFF6D4C41) + val Brown700 = Color(0xFF5D4037) + val Brown800 = Color(0xFF4E342E) + val Brown900 = Color(0xFF3E2723) + + val Gray50 = Color(0xFFFAFAFA) + val Gray100 = Color(0xFFF5F5F5) + val Gray200 = Color(0xFFEEEEEE) + val Gray300 = Color(0xFFE0E0E0) + val Gray400 = Color(0xFFBDBDBD) + val Gray500 = Color(0xFF9E9E9E) + val Gray600 = Color(0xFF757575) + val Gray700 = Color(0xFF616161) + val Gray800 = Color(0xFF424242) + val Gray900 = Color(0xFF212121) + + val BlueGrey50 = Color(0xFFECEFF1) + val BlueGrey100 = Color(0xFFCFD8DC) + val BlueGrey200 = Color(0xFFB0BEC5) + val BlueGrey300 = Color(0xFF90A4AE) + val BlueGrey400 = Color(0xFF78909C) + val BlueGrey500 = Color(0xFF607D8B) + val BlueGrey600 = Color(0xFF546E7A) + val BlueGrey700 = Color(0xFF455A64) + val BlueGrey800 = Color(0xFF37474F) + val BlueGrey900 = Color(0xFF263238) +} diff --git a/gradle.properties b/gradle.properties index 9796c49cf..6e7fda850 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,20 +1,17 @@ -# Project-wide Gradle settings. - -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. - -# For more details on how to configure your build environment visit +## For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html - +# # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs = -Xmx1536m - +# Default value: -Xmx1024m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +# # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true - +#Mon May 22 14:59:56 BST 2023 +android.enableJetifier=false android.useAndroidX=true -android.enableJetifier=true \ No newline at end of file +org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M" +org.gradle.unsafe.configuration-cache=true From 91c014d03d1d90e4a30e6e4127b5051e1c23fe2b Mon Sep 17 00:00:00 2001 From: Ben Trengrove Date: Thu, 13 Jul 2023 10:41:27 +1000 Subject: [PATCH 107/463] Fix error in PerformanceSnippets.kt (#122) * Fix error in PerformanceSnippets.kt sortComparator should be comparator * Remove unused code --- .../compose/snippets/performance/PerformanceSnippets.kt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/performance/PerformanceSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/performance/PerformanceSnippets.kt index 970ba1333..dcb7786e5 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/performance/PerformanceSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/performance/PerformanceSnippets.kt @@ -71,8 +71,8 @@ private object ContactsListGoodSort { comparator: Comparator, modifier: Modifier = Modifier ) { - val sortedContacts = remember(contacts, sortComparator) { - contacts.sortedWith(sortComparator) + val sortedContacts = remember(contacts, comparator) { + contacts.sortedWith(comparator) } LazyColumn(modifier) { @@ -287,8 +287,6 @@ private data class Contact(val name: String) : Comparable { } } -private val sortComparator = naturalOrder() - class Note { val id: Int = 0 } From 42a9747279e5dab074bdf24f60eb69c15886fe88 Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Fri, 14 Jul 2023 10:03:03 -0700 Subject: [PATCH 108/463] Add example to preview composable in layout editor via tools:composableName (#123) * Add example to preview composable in layout editor via tools:composableName * Apply Spotless --------- Co-authored-by: arriolac --- .../interop/InteroperabilityAPIsSnippets.kt | 9 ++++++ .../interop_layout_preview_composable.xml | 32 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 compose/snippets/src/main/res/layout/interop_layout_preview_composable.xml diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/interop/InteroperabilityAPIsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/interop/InteroperabilityAPIsSnippets.kt index 68798509f..2fc9d174f 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/interop/InteroperabilityAPIsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/interop/InteroperabilityAPIsSnippets.kt @@ -54,6 +54,7 @@ import com.example.compose.snippets.R import com.example.compose.snippets.databinding.ExampleLayoutBinding import com.example.compose.snippets.databinding.FragmentExampleBinding import com.example.compose.snippets.databinding.MyFragmentLayoutBinding +import com.example.compose.snippets.tooling.Preview // [START android_compose_interop_apis_compose_in_views] class ExampleActivity : ComponentActivity() { @@ -313,3 +314,11 @@ fun HomeScreen() { /* Rest of the HomeScreen */ } // [END android_compose_interop_apis_broadcast_receivers] + +// [START android_compose_interop_apis_layout_preview_composable] +@Preview +@Composable +fun GreetingPreview() { + Greeting(name = "Android") +} +// [END android_compose_interop_apis_layout_preview_composable] diff --git a/compose/snippets/src/main/res/layout/interop_layout_preview_composable.xml b/compose/snippets/src/main/res/layout/interop_layout_preview_composable.xml new file mode 100644 index 000000000..bb28c5685 --- /dev/null +++ b/compose/snippets/src/main/res/layout/interop_layout_preview_composable.xml @@ -0,0 +1,32 @@ + + + + + + + + + \ No newline at end of file From 9176385b50e1f31f8e4cfb7644d1faf29849864f Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Tue, 18 Jul 2023 11:06:43 -0600 Subject: [PATCH 109/463] Remove comment. (#126) --- .../java/com/example/compose/snippets/phases/PhasesSnippets.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/phases/PhasesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/phases/PhasesSnippets.kt index 95e366dc6..c785052c4 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/phases/PhasesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/phases/PhasesSnippets.kt @@ -152,7 +152,6 @@ private fun OptimizeStateReadsAfter() { painterResource(id = android.R.drawable.star_on), contentDescription = null, // [END_EXCLUDE] - // Non-optimal implementation! Modifier.offset { // State read of firstVisibleItemScrollOffset in Layout IntOffset(x = 0, y = listState.firstVisibleItemScrollOffset / 2) From ef947ee10a6806e3694e15242ef33c976a7d5a91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Mlynari=C4=8D?= Date: Wed, 19 Jul 2023 10:46:39 +0200 Subject: [PATCH 110/463] Update update_deps.yml (#124) Co-authored-by: Chris Arriola --- .github/workflows/update_deps.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml index 973755b68..b7602f303 100644 --- a/.github/workflows/update_deps.yml +++ b/.github/workflows/update_deps.yml @@ -30,3 +30,4 @@ jobs: delete-branch: true title: '🤖 Update Dependencies' body: Updated depedencies + reviewers: ${{ github.actor }} From 0210c4194c9c234a0b577435b041fba8246e7a3e Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Fri, 21 Jul 2023 15:57:30 +0100 Subject: [PATCH 111/463] =?UTF-8?q?=F0=9F=A4=96=20Update=20Dependencies=20?= =?UTF-8?q?(#129)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a88f54a9d..b1e858e7d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,22 +5,22 @@ [versions] accompanist = "0.30.1" androidGradlePlugin = "8.0.2" -androidx-activity-compose = "1.7.2" +androidx-activity-compose = "1.8.0-alpha06" androidx-appcompat = "1.6.1" androidx-benchmark = "1.1.1" androidx-benchmark-junit4 = "1.1.0-beta04" androidx-cardview = "1.0.0" -androidx-compose-bom = "2023.06.00" +androidx-compose-bom = "2023.06.01" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.1.0-alpha10" androidx-coordinator-layout = "1.2.0" -androidx-corektx = "1.10.1" -androidx-emoji2-views = "1.3.0" +androidx-corektx = "1.9.0" +androidx-emoji2-views = "1.4.0-beta05" androidx-fragment-ktx = "1.6.0" androidx-lifecycle-compose = "2.6.1" androidx-lifecycle-runtime-compose = "2.6.1" androidx-navigation = "2.6.0" -androidx-paging = "3.2.0-beta01" +androidx-paging = "3.2.0-rc01" androidx-paging-common = "3.1.1" androidx-palette = "1.0.0" androidx-test = "1.5.0" @@ -34,10 +34,10 @@ coil = "2.4.0" # @keep compileSdk = "34" compose-compiler = "1.4.7" -coroutines = "1.7.1" +coroutines = "1.7.2" google-maps = "18.1.0" gradle-versions = "0.47.0" -hilt = "2.46.1" +hilt = "2.47" hiltExt = "1.0.0" # @pin When updating to AGP 7.4.0-alpha10 and up we can update this https://developer.android.com/studio/write/java8-support#library-desugaring-versions jdkDesugar = "1.2.2" @@ -46,7 +46,7 @@ junit = "4.13.2" kotlin = "1.8.21" ksp = "1.8.0-1.0.9" maps-compose = "2.11.4" -material = "1.10.0-alpha04" +material = "1.11.0-alpha01" # @keep minSdk = "21" okhttp = "4.11.0" @@ -57,7 +57,7 @@ room = "2.5.1" secrets = "2.0.1" # @keep targetSdk = "34" -version-catalog-update = "0.8.0" +version-catalog-update = "0.8.1" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } @@ -68,7 +68,7 @@ accompanist-theme-adapter-appcompat = { module = "com.google.accompanist:accompa accompanist-theme-adapter-material = { module = "com.google.accompanist:accompanist-themeadapter-material", version.ref = "accompanist" } accompanist-theme-adapter-material3 = { module = "com.google.accompanist:accompanist-themeadapter-material3", version.ref = "accompanist" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } -androidx-activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "androidx-activity-compose" } +androidx-activity-ktx = "androidx.activity:activity-ktx:1.8.0-alpha05" androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } androidx-benchmark-macrobenchmark = { module = "androidx.benchmark:benchmark-macro", version.ref = "androidx-benchmark" } androidx-benchmark-macrobenchmark-junit4 = { module = "androidx.benchmark:benchmark-macro-junit4", version.ref = "androidx-benchmark-junit4" } From f2035d047fea6a7d2793b607a91a81c627615b35 Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Wed, 26 Jul 2023 14:50:44 +0100 Subject: [PATCH 112/463] Navigation (#130) * Adding landing screen with navigation destinations. * Apply Spotless * Updating the navigation to use an enum class that enumerated all possible destinations. They go on to populate a LazyColumn in NavigationButtons. * Apply Spotless * Updating the navigation to use an enum class that enumerated all possible destinations. They go on to populate a LazyColumn in NavigationButtons. * Removing when block from NavigationItems. * Apply Spotless --------- Co-authored-by: jakeroseman --- .../snippets/LandingScreen/LandingScreen.kt | 90 +++++++++++++++++++ .../compose/snippets/SnippetsActivity.kt | 27 ++++-- .../snippets/navigation/Destination.kt | 22 +++++ 3 files changed, 131 insertions(+), 8 deletions(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/LandingScreen/LandingScreen.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/LandingScreen/LandingScreen.kt b/compose/snippets/src/main/java/com/example/compose/snippets/LandingScreen/LandingScreen.kt new file mode 100644 index 000000000..2d4dbf64f --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/LandingScreen/LandingScreen.kt @@ -0,0 +1,90 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.LandingScreen + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.Button +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.compose.snippets.navigation.Destination + +@Composable +fun LandingScreen( + navigate: (Destination) -> Unit +) { + Column( + modifier = Modifier + .padding(16.dp) + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(24.dp), + ) { + Text( + modifier = Modifier.fillMaxWidth(), + style = TextStyle( + fontSize = 24.sp, + fontWeight = FontWeight.Bold, + textAlign = TextAlign.Center, + ), + text = "Android snippets", + ) + Text( + text = "Use the following buttons to view a selection of the snippets used in the Android documentation." + ) + NavigationItems { navigate(it) } + } +} + +@Composable +fun NavigationItems(navigate: (Destination) -> Unit) { + LazyColumn( + modifier = Modifier + .padding(16.dp) + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + items(Destination.values().toList()) { destination -> + NavigationItem(destination) { + navigate( + destination + ) + } + } + } +} + +@Composable +fun NavigationItem(destination: Destination, onClick: () -> Unit) { + Button( + onClick = { onClick() } + ) { + Text(destination.title) + } +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 085558fbe..330a5c04f 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -19,12 +19,17 @@ package com.example.compose.snippets import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.ui.Modifier +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import com.example.compose.snippets.LandingScreen.LandingScreen +import com.example.compose.snippets.graphics.BrushExamplesScreen import com.example.compose.snippets.images.ImageExamplesScreen +import com.example.compose.snippets.navigation.Destination import com.example.compose.snippets.ui.theme.SnippetsTheme class SnippetsActivity : ComponentActivity() { @@ -32,18 +37,24 @@ class SnippetsActivity : ComponentActivity() { super.onCreate(savedInstanceState) setContent { SnippetsTheme { + val navController = rememberNavController() // A surface container using the 'background' color from the theme Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { - // TODO - We should put these in different navigation destinations - Column( - modifier = Modifier - .fillMaxSize() - ) { - // BrushExamplesScreen() - ImageExamplesScreen() + NavHost(navController, startDestination = "LandingScreen") { + composable("LandingScreen") { + LandingScreen { navController.navigate(it.route) } + } + Destination.values().forEach { destination -> + composable(destination.route) { + when (destination) { + Destination.BrushExamples -> BrushExamplesScreen() + Destination.ImageExamples -> ImageExamplesScreen() + } + } + } } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt new file mode 100644 index 000000000..b4bb39adf --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -0,0 +1,22 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.navigation + +enum class Destination(val route: String, val title: String) { + BrushExamples("brushExamples", "Brush Examples"), + ImageExamples("imageExamples", "Image Examples"), +} From 0ed007d303a7dd6206fce46ec1aff6f86be71044 Mon Sep 17 00:00:00 2001 From: Hoyt Summers Pittman Date: Thu, 27 Jul 2023 10:59:05 -0400 Subject: [PATCH 113/463] Glance Snippets (#131) --- compose/snippets/build.gradle.kts | 4 + compose/snippets/src/main/AndroidManifest.xml | 12 + .../compose/snippets/glance/GlanceSnippets.kt | 994 ++++++++++++++++++ .../src/main/res/drawable/button_outline.xml | 22 + .../src/main/res/layout/my_container_view.xml | 21 + .../src/main/res/values-es/strings.xml | 1 + .../snippets/src/main/res/values/colors.xml | 2 + .../snippets/src/main/res/values/strings.xml | 1 + .../src/main/res/xml/my_app_widget_info.xml | 21 + gradle/libs.versions.toml | 5 + 10 files changed, 1083 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt create mode 100644 compose/snippets/src/main/res/drawable/button_outline.xml create mode 100644 compose/snippets/src/main/res/layout/my_container_view.xml create mode 100644 compose/snippets/src/main/res/xml/my_app_widget_info.xml diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index e9f1e2274..c2e5d9d7d 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -77,6 +77,7 @@ android { } dependencies { + implementation(libs.androidx.work.runtime.ktx) val composeBom = platform(libs.androidx.compose.bom) implementation(composeBom) androidTestImplementation(composeBom) @@ -106,6 +107,9 @@ dependencies { implementation(libs.androidx.coordinator.layout) implementation(libs.google.android.material) + implementation(libs.androidx.glance.appwidget) + implementation(libs.androidx.glance.material3) + implementation(libs.accompanist.theme.adapter.appcompat) implementation(libs.accompanist.theme.adapter.material3) implementation(libs.accompanist.theme.adapter.material) diff --git a/compose/snippets/src/main/AndroidManifest.xml b/compose/snippets/src/main/AndroidManifest.xml index 5f1113287..4c4ec51a3 100644 --- a/compose/snippets/src/main/AndroidManifest.xml +++ b/compose/snippets/src/main/AndroidManifest.xml @@ -46,6 +46,18 @@ + + + + + + + + + \ No newline at end of file diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt new file mode 100644 index 000000000..49819ef8e --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt @@ -0,0 +1,994 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.glance + +import android.annotation.SuppressLint +import android.app.Activity +import android.app.Service +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.os.IBinder +import android.widget.RemoteViews +import androidx.appcompat.app.AppCompatActivity +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.material3.ColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.DpSize +import androidx.compose.ui.unit.dp +import androidx.glance.Button +import androidx.glance.ColorFilter +import androidx.glance.GlanceId +import androidx.glance.GlanceModifier +import androidx.glance.GlanceTheme +import androidx.glance.Image +import androidx.glance.ImageProvider +import androidx.glance.LocalContext +import androidx.glance.LocalSize +import androidx.glance.action.ActionParameters +import androidx.glance.action.actionParametersOf +import androidx.glance.action.actionStartActivity +import androidx.glance.action.clickable +import androidx.glance.appwidget.AndroidRemoteViews +import androidx.glance.appwidget.CheckBox +import androidx.glance.appwidget.CheckboxDefaults +import androidx.glance.appwidget.GlanceAppWidget +import androidx.glance.appwidget.GlanceAppWidgetManager +import androidx.glance.appwidget.GlanceAppWidgetReceiver +import androidx.glance.appwidget.RadioButton +import androidx.glance.appwidget.RadioButtonDefaults +import androidx.glance.appwidget.SizeMode +import androidx.glance.appwidget.Switch +import androidx.glance.appwidget.SwitchDefaults +import androidx.glance.appwidget.action.ActionCallback +import androidx.glance.appwidget.action.actionRunCallback +import androidx.glance.appwidget.action.actionSendBroadcast +import androidx.glance.appwidget.action.actionStartService +import androidx.glance.appwidget.provideContent +import androidx.glance.appwidget.updateAll +import androidx.glance.appwidget.updateIf +import androidx.glance.background +import androidx.glance.color.ColorProvider +import androidx.glance.layout.Alignment +import androidx.glance.layout.Column +import androidx.glance.layout.Row +import androidx.glance.layout.RowScope +import androidx.glance.layout.fillMaxSize +import androidx.glance.layout.fillMaxWidth +import androidx.glance.layout.padding +import androidx.glance.material3.ColorProviders +import androidx.glance.text.Text +import androidx.work.CoroutineWorker +import androidx.work.WorkerParameters +import com.example.compose.snippets.R +import com.example.compose.snippets.layouts.MainActivity +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch + +lateinit var LightColors: ColorScheme +lateinit var DarkColors: ColorScheme + +private object GlanceCreateAppWidgetSnippet01 { + // [START android_compose_glance_receiver01] + class MyAppWidgetReceiver : GlanceAppWidgetReceiver() { + override val glanceAppWidget: GlanceAppWidget = TODO("Create GlanceAppWidget") + } + // [END android_compose_glance_receiver01] +} + +private object GlanceCreateAppWidgetSnippet02 { + // [START android_compose_glance_receiver02] + class MyAppWidgetReceiver : GlanceAppWidgetReceiver() { + + // Let MyAppWidgetReceiver know which GlanceAppWidget to use + override val glanceAppWidget: GlanceAppWidget = MyAppWidget() + } + // [END android_compose_glance_receiver02] + + // [START android_compose_glance_widget] + class MyAppWidget : GlanceAppWidget() { + + override suspend fun provideGlance(context: Context, id: GlanceId) { + + // In this method, load data needed to render the AppWidget. + // Use `withContext` to switch to another thread for long running + // operations. + + provideContent { + // create your AppWidget here + Text("Hello World") + } + } + } + // [END android_compose_glance_widget] +} + +private object CreateUI { + // [START android_compose_glance_createui] + /* Import Glance Composables + In the event there is a name clash with the Compose classes of the same name, + you may rename the imports per https://kotlinlang.org/docs/packages.html#imports + using the `as` keyword. + + import androidx.glance.Button + import androidx.glance.layout.Column + import androidx.glance.layout.Row + import androidx.glance.text.Text + */ + class MyAppWidget : GlanceAppWidget() { + + override suspend fun provideGlance(context: Context, id: GlanceId) { + // Load data needed to render the AppWidget. + // Use `withContext` to switch to another thread for long running + // operations. + + provideContent { + // create your AppWidget here + MyContent() + } + } + + @Composable + private fun MyContent() { + Column( + modifier = GlanceModifier.fillMaxSize(), + verticalAlignment = Alignment.Top, + horizontalAlignment = Alignment.CenterHorizontally + ) { + Text(text = "Where to?", modifier = GlanceModifier.padding(12.dp)) + Row(horizontalAlignment = Alignment.CenterHorizontally) { + Button( + text = "Home", + onClick = actionStartActivity() + ) + Button( + text = "Work", + onClick = actionStartActivity() + ) + } + } + } + } + // [END android_compose_glance_createui] +} + +private object ActionLaunchActivity { + + // [START android_compose_glance_launchactivity] + @Composable + fun MyContent() { + // .. + Button( + text = "Go Home", + onClick = actionStartActivity() + ) + } + // [END android_compose_glance_launchactivity] +} + +private object ActionLaunchService { + + // [START android_compose_glance_launchservice] + @Composable + fun MyButton() { + // .. + Button( + text = "Sync", + onClick = actionStartService( + isForegroundService = true // define how the service is launched + ) + ) + } + // [END android_compose_glance_launchservice] +} + +private object ActionLaunchSendBroadcastEvent { + + // [START android_compose_glance_sendbroadcastevent] + @Composable + fun MyButton() { + // .. + Button( + text = "Send", + onClick = actionSendBroadcast() + ) + } + // [END android_compose_glance_sendbroadcastevent] +} + +private object ActionLambda { + @Composable + fun actionLambda() { + // [START android_compose_glance_lambda01] + Text( + text = "Submit", + modifier = GlanceModifier.clickable { + submitData() + } + ) + // [END android_compose_glance_lambda01] + } + + @Composable + fun actionLambda2() { + // [START android_compose_glance_lambda02] + Button( + text = "Submit", + onClick = { + submitData() + } + ) + // [END android_compose_glance_lambda02] + } +} + +private object ActionCallbackSnippet02 { + // [START android_compose_glance_actioncallback02] + class RefreshAction : ActionCallback { + override suspend fun onAction( + context: Context, + glanceId: GlanceId, + parameters: ActionParameters + ) { + // do some work but offset long-term tasks (e.g a Worker) + MyAppWidget().update(context, glanceId) + } + } + + // [END android_compose_glance_actioncallback02] + /*dummy class*/ + class MyAppWidget : GlanceAppWidget() { + override suspend fun provideGlance(context: Context, id: GlanceId) { + TODO("Not yet implemented") + } + } +} + +private object ActionCallbackSnippet01 { + // [START android_compose_glance_actioncallback01] + @Composable + private fun MyContent() { + // .. + Image( + provider = ImageProvider(R.drawable.ic_hourglass_animated), + modifier = GlanceModifier.clickable( + onClick = actionRunCallback() + ), + contentDescription = "Refresh" + ) + } + + class RefreshAction : ActionCallback { + override suspend fun onAction( + context: Context, + glanceId: GlanceId, + parameters: ActionParameters + ) { + // TODO implement + } + } + // [END android_compose_glance_actioncallback01] +} + +private object ActionParameters { + // [START android_compose_glance_actionparameters01] + private val destinationKey = ActionParameters.Key( + NavigationActivity.KEY_DESTINATION + ) + + class MyAppWidget : GlanceAppWidget() { + + // .. + + @Composable + private fun MyContent() { + // .. + Button( + text = "Home", + onClick = actionStartActivity( + actionParametersOf(destinationKey to "home") + ) + ) + Button( + text = "Work", + onClick = actionStartActivity( + actionParametersOf(destinationKey to "work") + ) + ) + } + + override suspend fun provideGlance(context: Context, id: GlanceId) { + provideContent { MyContent() } + } + } + // [END android_compose_glance_actionparameters01] + + abstract class ActionParametersActivity : Activity() { + val KEY_DESTINATION = "destination" + + // [START android_compose_glance_actionparameters02] + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val destination = intent.extras?.getString(KEY_DESTINATION) ?: return + // ... + } + } + // [END android_compose_glance_actionparameters02] + + // [START android_compose_glance_actionparameters03] + class RefreshAction : ActionCallback { + + private val destinationKey = ActionParameters.Key( + NavigationActivity.KEY_DESTINATION + ) + + override suspend fun onAction( + context: Context, + glanceId: GlanceId, + parameters: ActionParameters + ) { + val destination: String = parameters[destinationKey] ?: return + // ... + } + } + // [END android_compose_glance_actionparameters03] +} + +@SuppressLint("RememberReturnType") +object ManageAndUpdate { + abstract + // [START android_compose_glance_manageupdate01] + class DestinationAppWidget : GlanceAppWidget() { + + // ... + + @Composable + fun MyContent() { + val repository = remember { DestinationsRepository.getInstance() } + // Retrieve the cache data everytime the content is refreshed + val destinations by repository.destinations.collectAsState(State.Loading) + + when (destinations) { + is State.Loading -> { + // show loading content + } + + is State.Error -> { + // show widget error content + } + + is State.Completed -> { + // show the list of destinations + } + } + } + } + // [END android_compose_glance_manageupdate01] + + suspend fun update02(context: Context, glanceId: GlanceId) { + // [START android_compose_glance_manageupdate02] + MyAppWidget().update(context, glanceId) + // [END android_compose_glance_manageupdate02] + + // [START android_compose_glance_manageupdate03] + val manager = GlanceAppWidgetManager(context) + val widget = GlanceSizeModeWidget() + val glanceIds = manager.getGlanceIds(widget.javaClass) + glanceIds.forEach { glanceId -> + widget.update(context, glanceId) + } + // [END android_compose_glance_manageupdate03] + + // [START android_compose_glance_manageupdate04] + // Updates all placed instances of MyAppWidget + MyAppWidget().updateAll(context) + + // Iterate over all placed instances of MyAppWidget and update if the state of + // the instance matches the given predicate + MyAppWidget().updateIf(context) { state -> + state == State.Completed + } + // [END android_compose_glance_manageupdate04] + } + + // [START android_compose_glance_manageupdate05] + class DataSyncWorker( + val context: Context, + val params: WorkerParameters, + ) : CoroutineWorker(context, params) { + + override suspend fun doWork(): Result { + // Fetch data or do some work and then update all instance of your widget + MyAppWidget().updateAll(context) + return Result.success() + } + } +// [END android_compose_glance_manageupdate05] +} + +object BuildUIWithGlance { + + @Composable + fun example1() { + // [START android_compose_glance_buildUI01] + Row(modifier = GlanceModifier.fillMaxWidth().padding(16.dp)) { + val modifier = GlanceModifier.defaultWeight() + Text("first", modifier) + Text("second", modifier) + Text("third", modifier) + } + // [END android_compose_glance_buildUI01] + } + + @Composable + fun example2() { + + // [START android_compose_glance_buildUI02] + // Remember to import Glance Composables + // import androidx.glance.appwidget.layout.LazyColumn + + LazyColumn { + items(10) { index: Int -> + Text( + text = "Item $index", + modifier = GlanceModifier.fillMaxWidth() + ) + } + } + // [END android_compose_glance_buildUI02] + } + + @Composable + fun example3() { + // [START android_compose_glance_buildUI03] + LazyColumn { + item { + Text("First Item") + } + item { + Text("Second Item") + } + } + // [END android_compose_glance_buildUI03] + } + + @Composable + fun example4() { + val peopleNameList = arrayListOf() + val peopleList = arrayListOf() + + // [START android_compose_glance_buildUI04] + LazyColumn { + items(peopleNameList) { name -> + Text(name) + } + } + // [END android_compose_glance_buildUI04] + + // [START android_compose_glance_buildUI05] + LazyColumn { + item { + Text("Names:") + } + items(peopleNameList) { name -> + Text(name) + } + + // or in case you need the index: + itemsIndexed(peopleNameList) { index, person -> + Text("$person at index $index") + } + } + // [END android_compose_glance_buildUI05] + + LazyColumn { + // [START android_compose_glance_buildUI06] + items(items = peopleList, key = { person -> person.id }) { person -> + Text(person.name) + } + // [END android_compose_glance_buildUI06] + } + } +} + +object SizeModeSnippets { + + // [START android_compose_glance_buildUI07] + class MyAppWidget : GlanceAppWidget() { + + override val sizeMode = SizeMode.Single + + override suspend fun provideGlance(context: Context, id: GlanceId) { + // ... + + provideContent { + MyContent() + } + } + + @Composable + private fun MyContent() { + // Size will be the minimum size or resizable + // size defined in the App Widget metadata + val size = LocalSize.current + // ... + } + } + // [END android_compose_glance_buildUI07] +} + +object SizeModeSnippets2 { + // [START android_compose_glance_buildUI08] + class MyAppWidget : GlanceAppWidget() { + + companion object { + private val SMALL_SQUARE = DpSize(100.dp, 100.dp) + private val HORIZONTAL_RECTANGLE = DpSize(250.dp, 100.dp) + private val BIG_SQUARE = DpSize(250.dp, 250.dp) + } + + override val sizeMode = SizeMode.Responsive( + setOf( + SMALL_SQUARE, + HORIZONTAL_RECTANGLE, + BIG_SQUARE + ) + ) + + override suspend fun provideGlance(context: Context, id: GlanceId) { + // ... + + provideContent { + MyContent() + } + } + + @Composable + private fun MyContent() { + // Size will be one of the sizes defined above. + val size = LocalSize.current + Column { + if (size.height >= BIG_SQUARE.height) { + Text(text = "Where to?", modifier = GlanceModifier.padding(12.dp)) + } + Row(horizontalAlignment = Alignment.CenterHorizontally) { + Button() + Button() + if (size.width >= HORIZONTAL_RECTANGLE.width) { + Button("School") + } + } + if (size.height >= BIG_SQUARE.height) { + Text(text = "provided by X") + } + } + } + } + + // [END android_compose_glance_buildUI08] +} + +object SizeModeSnippets3 { + // [START android_compose_glance_buildUI09] + + class MyAppWidget : GlanceAppWidget() { + + override val sizeMode = SizeMode.Exact + + override suspend fun provideGlance(context: Context, id: GlanceId) { + // ... + + provideContent { + MyContent() + } + } + + @Composable + private fun MyContent() { + // Size will be the max available size for the AppWidget + val size = LocalSize.current + Column { + Text(text = "Where to?", modifier = GlanceModifier.padding(12.dp)) + Row(horizontalAlignment = Alignment.CenterHorizontally) { + Button() + Button() + if (size.width > 250.dp) { + Button("School") + } + } + } + } + } + // [END android_compose_glance_buildUI09] +} + +object AccessResources { + @Composable + fun example1() { + // [START android_compose_glance_buildUI10] + LocalContext.current.getString(R.string.glance_title) + // [END android_compose_glance_buildUI10] + + // [START android_compose_glance_buildUI11] + Column( + modifier = GlanceModifier.background(R.color.default_widget_background) + ) { /**...*/ } + + Image( + provider = ImageProvider(R.drawable.ic_logo), + contentDescription = "My image", + ) + // [END android_compose_glance_buildUI11] + } +} + +object CompoundButton { + @Composable + fun example1() { + // [START android_compose_glance_buildUI12] + var isApplesChecked by remember { mutableStateOf(false) } + var isEnabledSwitched by remember { mutableStateOf(false) } + var isRadioChecked by remember { mutableStateOf(0) } + + CheckBox( + checked = isApplesChecked, + onCheckedChange = { isApplesChecked = !isApplesChecked }, + text = "Apples" + ) + + Switch( + checked = isEnabledSwitched, + onCheckedChange = { isEnabledSwitched = !isEnabledSwitched }, + text = "Enabled" + ) + + RadioButton( + checked = isRadioChecked == 1, + onClick = { isRadioChecked = 1 }, + text = "Checked" + ) + // [END android_compose_glance_buildUI12] + } + // [START android_compose_glance_buildUI13] + class MyAppWidget : GlanceAppWidget() { + + override suspend fun provideGlance(context: Context, id: GlanceId) { + val myRepository = MyRepository.getInstance() + + provideContent { + val scope = rememberCoroutineScope() + + val saveApple: (Boolean) -> Unit = + { scope.launch { myRepository.saveApple(it) } } + MyContent(saveApple) + } + } + + @Composable + private fun MyContent(saveApple: (Boolean) -> Unit) { + + var isAppleChecked by remember { mutableStateOf(false) } + + Button( + text = "Save", + onClick = { saveApple(isAppleChecked) } + ) + } + } + // [END android_compose_glance_buildUI13] + + @Composable + fun example3() { + val colorAccentDay = Color.Blue + val colorAccentNight = Color.Blue + var isChecked by remember { mutableStateOf(false) } + + // [START android_compose_glance_buildUI14] + CheckBox( + // ... + colors = CheckboxDefaults.colors( + checkedColor = ColorProvider(day = colorAccentDay, night = colorAccentNight), + uncheckedColor = ColorProvider(day = Color.DarkGray, night = Color.LightGray) + ), + checked = isChecked, + onCheckedChange = { isChecked = !isChecked } + ) + + Switch( + // ... + colors = SwitchDefaults.colors( + checkedThumbColor = ColorProvider(day = Color.Red, night = Color.Cyan), + uncheckedThumbColor = ColorProvider(day = Color.Green, night = Color.Magenta), + checkedTrackColor = ColorProvider(day = Color.Blue, night = Color.Yellow), + uncheckedTrackColor = ColorProvider(day = Color.Magenta, night = Color.Green) + ), + checked = isChecked, + onCheckedChange = { isChecked = !isChecked }, + text = "Enabled" + ) + + RadioButton( + // ... + colors = RadioButtonDefaults.colors( + checkedColor = ColorProvider(day = Color.Cyan, night = Color.Yellow), + uncheckedColor = ColorProvider(day = Color.Red, night = Color.Blue) + ), + + ) + // [END android_compose_glance_buildUI14] + } + + private fun RadioButton(colors: Any) { + } +} + +object GlanceTheming { + + class ExampleAppWidget : GlanceAppWidget() { + // [START android_compose_glance_glancetheming01] + + override suspend fun provideGlance(context: Context, id: GlanceId) { + + provideContent { + GlanceTheme { + MyContent() + } + } + } + + @Composable + private fun MyContent() { + + Image( + colorFilter = ColorFilter.tint(GlanceTheme.colors.secondary), + // [START_EXCLUDE] + contentDescription = "Example Image", + provider = ImageProvider(R.drawable.ic_logo) + // [END_EXCLUDE] + + ) + } + // [END android_compose_glance_glancetheming01] + } + + class ExampleAppWidget2 : GlanceAppWidget() { + + // [START android_compose_glance_glancetheming06] + // Remember, use the Glance imports + // import androidx.glance.material3.ColorProviders + + // Example Imports from your own app + // import com.example.myapp.ui.theme.DarkColors + // import com.example.myapp.ui.theme.LightColors + + object MyAppWidgetGlanceColorScheme { + + val colors = ColorProviders( + light = LightColors, + dark = DarkColors + ) + } + // [END android_compose_glance_glancetheming06] + // [START android_compose_glance_glancetheming02] + override suspend fun provideGlance(context: Context, id: GlanceId) { + // ... + + provideContent { + GlanceTheme(colors = MyAppWidgetGlanceColorScheme.colors) { + MyContent() + } + } + } + + @Composable + private fun MyContent() { + + Image( + colorFilter = ColorFilter.tint(GlanceTheme.colors.secondary), + // [START_EXCLUDE] + provider = ImageProvider(R.drawable.ic_logo), + contentDescription = "Example" + // [END_EXCLUDE] + ) + } + // [END android_compose_glance_glancetheming02] + } + + class ExampleAppWidget3 : GlanceAppWidget() { + + object MyAppWidgetGlanceColorScheme { + val colors = ColorProviders( + light = LightColors, + dark = DarkColors + ) + } + + // [START android_compose_glance_glancetheming03] + override suspend fun provideGlance(context: Context, id: GlanceId) { + + provideContent { + GlanceTheme( + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) + GlanceTheme.colors + else + MyAppWidgetGlanceColorScheme.colors + ) { + MyContent() + } + } + } + + @Composable + private fun MyContent() { + // ... + Image( + colorFilter = ColorFilter.tint(GlanceTheme.colors.secondary), + // [START_EXCLUDE] + provider = ImageProvider(R.drawable.ic_logo), + contentDescription = "Example" + // [END_EXCLUDE] + ) + } + // [END android_compose_glance_glancetheming03] + } + + @Composable + fun shapeExample() { + // Note : android_compose_glance_glancetheming04 is found in button_outline.xml + // [START android_compose_glance_glancetheming05] + GlanceModifier.background( + imageProvider = ImageProvider(R.drawable.button_outline) + ) + // [END android_compose_glance_glancetheming05] + } +} + +object GlanceInteroperability { + @Composable + fun example01() { + // [START android_compose_glance_glanceinteroperability01] + val packageName = LocalContext.current.packageName + Column(modifier = GlanceModifier.fillMaxSize()) { + Text("Isn't that cool?") + AndroidRemoteViews(RemoteViews(packageName, R.layout.example_layout)) + } + // [END android_compose_glance_glanceinteroperability01] + } + + @Composable + fun example02() { + val packageName = null + + // [START android_compose_glance_glanceinteroperability02] + + AndroidRemoteViews( + remoteViews = RemoteViews(packageName, R.layout.my_container_view), + containerViewId = R.id.example_view + ) { + Column(modifier = GlanceModifier.fillMaxSize()) { + Text("My title") + Text("Maybe a long content...") + } + } + // [END android_compose_glance_glanceinteroperability02] + } +} + +/** + * Dummy interface + */ +interface MyRepository { + + suspend fun saveApple(a: Any) + + companion object { + fun getInstance(): MyRepository { + TODO("Example") + } + } +} + +/**dummy function*/ +private fun RowScope.Button(s: String = "") { + TODO("Not yet implemented") +} + +/** dummy class */ +data class Person(val id: String, val name: String) + +/** dummy class */ +class GlanceSizeModeWidget : GlanceAppWidget() { + override suspend fun provideGlance(context: Context, id: GlanceId) { + TODO("Not yet implemented") + } +} + +/** dummy class */ +class MyAppWidget : GlanceAppWidget() { + override suspend fun provideGlance(context: Context, id: GlanceId) { + TODO("Not yet implemented") + } +} + +/** + * Dummy Interface + */ +sealed interface State { + + object Loading : State + object Error : State + object Completed : State +} + +/** + * Dummy class + */ +class DestinationsRepository { + + lateinit var destinations: StateFlow + + companion object { + fun getInstance(): DestinationsRepository { + TODO("Not yet implemented") + } + } +} + +/** + * Dummy activity for snippet + */ +class NavigationActivity : AppCompatActivity() { + companion object { + val KEY_DESTINATION: String = "destination" + } +} + +/** + * Dummy lambda + */ +private fun submitData() { + TODO("Not yet implemented") +} + +/** + * Dummy broadcast receiver for snippets + */ +class MyReceiver : BroadcastReceiver() { + override fun onReceive(p0: Context?, p1: Intent?) { + TODO("Not yet implemented") + } +} + +/** + * Dummy service for snippets + */ +class SyncService : Service() { + override fun onBind(p0: Intent?): IBinder? { + TODO("Not yet implemented") + } +} diff --git a/compose/snippets/src/main/res/drawable/button_outline.xml b/compose/snippets/src/main/res/drawable/button_outline.xml new file mode 100644 index 000000000..f4eb02291 --- /dev/null +++ b/compose/snippets/src/main/res/drawable/button_outline.xml @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/compose/snippets/src/main/res/layout/my_container_view.xml b/compose/snippets/src/main/res/layout/my_container_view.xml new file mode 100644 index 000000000..4d0ecb396 --- /dev/null +++ b/compose/snippets/src/main/res/layout/my_container_view.xml @@ -0,0 +1,21 @@ + + + \ No newline at end of file diff --git a/compose/snippets/src/main/res/values-es/strings.xml b/compose/snippets/src/main/res/values-es/strings.xml index e75f5ffad..0a8ab24ba 100644 --- a/compose/snippets/src/main/res/values-es/strings.xml +++ b/compose/snippets/src/main/res/values-es/strings.xml @@ -42,4 +42,5 @@ %1$d minutes Hola mundo + Example String for Glance \ No newline at end of file diff --git a/compose/snippets/src/main/res/values/colors.xml b/compose/snippets/src/main/res/values/colors.xml index 67b5e9ab3..0205675f4 100644 --- a/compose/snippets/src/main/res/values/colors.xml +++ b/compose/snippets/src/main/res/values/colors.xml @@ -23,4 +23,6 @@ #FF018786 #FF000000 #FFFFFFFF + #FFF + #FFF \ No newline at end of file diff --git a/compose/snippets/src/main/res/values/strings.xml b/compose/snippets/src/main/res/values/strings.xml index 79a9875b9..42772c354 100644 --- a/compose/snippets/src/main/res/values/strings.xml +++ b/compose/snippets/src/main/res/values/strings.xml @@ -42,4 +42,5 @@ %1$d minutes Hello world + Example String for Glance \ No newline at end of file diff --git a/compose/snippets/src/main/res/xml/my_app_widget_info.xml b/compose/snippets/src/main/res/xml/my_app_widget_info.xml new file mode 100644 index 000000000..a1a7f5da2 --- /dev/null +++ b/compose/snippets/src/main/res/xml/my_app_widget_info.xml @@ -0,0 +1,21 @@ + + + + + \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b1e858e7d..875425fb1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,6 +17,7 @@ androidx-coordinator-layout = "1.2.0" androidx-corektx = "1.9.0" androidx-emoji2-views = "1.4.0-beta05" androidx-fragment-ktx = "1.6.0" +androidx-glance-appwidget = "1.0.0-rc01" androidx-lifecycle-compose = "2.6.1" androidx-lifecycle-runtime-compose = "2.6.1" androidx-navigation = "2.6.0" @@ -30,6 +31,7 @@ androidx-test-ext-truth = "1.5.0" androidx-window = "1.2.0-alpha02" androidxHiltNavigationCompose = "1.0.0" androix-test-uiautomator = "2.2.0" + coil = "2.4.0" # @keep compileSdk = "34" @@ -100,6 +102,8 @@ androidx-coordinator-layout = { module = "androidx.coordinatorlayout:coordinator androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidx-corektx" } androidx-emoji2-views = { module = "androidx.emoji2:emoji2-views", version.ref = "androidx-emoji2-views" } androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment-ktx" } +androidx-glance-appwidget = { module = "androidx.glance:glance-appwidget", version.ref = "androidx-glance-appwidget" } +androidx-glance-material3 = { module = "androidx.glance:glance-material3", version.ref = "androidx-glance-appwidget" } androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "androidxHiltNavigationCompose" } androidx-lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle-compose" } androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidx-lifecycle-compose" } @@ -143,6 +147,7 @@ okhttp3 = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" } rometools-modules = { module = "com.rometools:rome-modules", version.ref = "rome" } rometools-rome = { module = "com.rometools:rome", version.ref = "rome" } +androidx-work-runtime-ktx = { group = "androidx.work", name = "work-runtime-ktx", version = "2.8.1" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } From 943ccd2828843cffffe1aa305d75ed87496578c4 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Thu, 10 Aug 2023 12:53:47 +0100 Subject: [PATCH 114/463] =?UTF-8?q?=F0=9F=A4=96=20Update=20Dependencies=20?= =?UTF-8?q?(#132)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 875425fb1..f69da380d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,23 +4,23 @@ ##### [versions] accompanist = "0.30.1" -androidGradlePlugin = "8.0.2" +androidGradlePlugin = "8.1.0" androidx-activity-compose = "1.8.0-alpha06" androidx-appcompat = "1.6.1" androidx-benchmark = "1.1.1" androidx-benchmark-junit4 = "1.1.0-beta04" androidx-cardview = "1.0.0" -androidx-compose-bom = "2023.06.01" +androidx-compose-bom = "2023.08.00" androidx-constraintlayout = "2.1.4" -androidx-constraintlayout-compose = "1.1.0-alpha10" +androidx-constraintlayout-compose = "1.1.0-alpha12" androidx-coordinator-layout = "1.2.0" androidx-corektx = "1.9.0" androidx-emoji2-views = "1.4.0-beta05" -androidx-fragment-ktx = "1.6.0" +androidx-fragment-ktx = "1.6.1" androidx-glance-appwidget = "1.0.0-rc01" androidx-lifecycle-compose = "2.6.1" androidx-lifecycle-runtime-compose = "2.6.1" -androidx-navigation = "2.6.0" +androidx-navigation = "2.7.0" androidx-paging = "3.2.0-rc01" androidx-paging-common = "3.1.1" androidx-palette = "1.0.0" @@ -31,12 +31,11 @@ androidx-test-ext-truth = "1.5.0" androidx-window = "1.2.0-alpha02" androidxHiltNavigationCompose = "1.0.0" androix-test-uiautomator = "2.2.0" - coil = "2.4.0" # @keep compileSdk = "34" compose-compiler = "1.4.7" -coroutines = "1.7.2" +coroutines = "1.7.3" google-maps = "18.1.0" gradle-versions = "0.47.0" hilt = "2.47" @@ -47,12 +46,12 @@ junit = "4.13.2" # @pin Update in conjuction with Compose Compiler kotlin = "1.8.21" ksp = "1.8.0-1.0.9" -maps-compose = "2.11.4" +maps-compose = "2.13.0" material = "1.11.0-alpha01" # @keep minSdk = "21" okhttp = "4.11.0" -recyclerview = "1.3.0" +recyclerview = "1.3.1" robolectric = "4.9.2" rome = "1.18.0" room = "2.5.1" @@ -129,6 +128,7 @@ androidx-test-rules = { module = "androidx.test:rules", version.ref = "androidx- androidx-test-runner = "androidx.test:runner:1.5.2" androidx-test-uiautomator = { module = "androidx.test.uiautomator:uiautomator", version.ref = "androix-test-uiautomator" } androidx-window = { module = "androidx.window:window", version.ref = "androidx-window" } +androidx-work-runtime-ktx = "androidx.work:work-runtime-ktx:2.8.1" coil-kt-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } core-jdk-desugaring = { module = "com.android.tools:desugar_jdk_libs", version.ref = "jdkDesugar" } google-android-material = { module = "com.google.android.material:material", version.ref = "material" } @@ -147,7 +147,6 @@ okhttp3 = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" } rometools-modules = { module = "com.rometools:rome-modules", version.ref = "rome" } rometools-rome = { module = "com.rometools:rome", version.ref = "rome" } -androidx-work-runtime-ktx = { group = "androidx.work", name = "work-runtime-ktx", version = "2.8.1" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } From 56d5f2743b18e45c12510f3d9d7f05fc90de9de2 Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Thu, 10 Aug 2023 17:02:05 +0200 Subject: [PATCH 115/463] A11y Traversal Index (#133) * Add a11y traversal index snippets * Fix a11y traversal snippet bug * Remove custom dependency version now that Compose-UI 1.5 went stable. * Fix indentation --- .../accessibility/AccessibilitySnippets.kt | 150 +++++++++++++++++- 1 file changed, 149 insertions(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/accessibility/AccessibilitySnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/accessibility/AccessibilitySnippets.kt index 565993067..3c6be8afc 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/accessibility/AccessibilitySnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/accessibility/AccessibilitySnippets.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -@file:Suppress("unused", "UNUSED_PARAMETER", "UNUSED_VARIABLE") +@file:Suppress("unused", "UNUSED_PARAMETER", "ClassName") package com.example.compose.snippets.accessibility @@ -24,6 +24,7 @@ import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding @@ -32,12 +33,19 @@ import androidx.compose.foundation.layout.sizeIn import androidx.compose.foundation.selection.toggleable import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.AccountCircle +import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Share +import androidx.compose.material3.BottomAppBar import androidx.compose.material3.Checkbox +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.FabPosition +import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -55,9 +63,11 @@ import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.clearAndSetSemantics import androidx.compose.ui.semantics.customActions import androidx.compose.ui.semantics.heading +import androidx.compose.ui.semantics.isTraversalGroup import androidx.compose.ui.semantics.onClick import androidx.compose.ui.semantics.semantics import androidx.compose.ui.semantics.stateDescription +import androidx.compose.ui.semantics.traversalIndex import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.example.compose.snippets.R @@ -290,6 +300,144 @@ private fun Subsection(text: String) { } // [END android_compose_accessibility_headings] +// [START android_compose_accessibility_traversal_isTraversalGroup_initial] +// CardBox() function takes in top and bottom sample text. +@Composable +fun CardBox( + topSampleText: String, + bottomSampleText: String, + modifier: Modifier = Modifier +) { + Box(modifier) { + Column { + Text(topSampleText) + Text(bottomSampleText) + } + } +} + +@Composable +fun TraversalGroupDemo() { + val topSampleText1 = "This sentence is in " + val bottomSampleText1 = "the left column." + val topSampleText2 = "This sentence is " + val bottomSampleText2 = "on the right." + Row { + CardBox( + topSampleText1, + bottomSampleText1 + ) + CardBox( + topSampleText2, + bottomSampleText2 + ) + } +} +// [END android_compose_accessibility_traversal_isTraversalGroup_initial] + +// [START android_compose_accessibility_traversal_isTraversalGroup_modified] +@Composable +fun TraversalGroupDemo2() { + val topSampleText1 = "This sentence is in " + val bottomSampleText1 = "the left column." + val topSampleText2 = "This sentence is" + val bottomSampleText2 = "on the right." + Row { + CardBox( +// 1, + topSampleText1, + bottomSampleText1, + Modifier.semantics { isTraversalGroup = true } + ) + CardBox( +// 2, + topSampleText2, + bottomSampleText2, + Modifier.semantics { isTraversalGroup = true } + ) + } +} +// [END android_compose_accessibility_traversal_isTraversalGroup_modified] + +private object ClockFaceBefore { + // [START android_compose_accessibility_traversal_clock_face_initial] + @Composable + fun ClockFaceDemo() { + CircularLayout { + repeat(12) { hour -> + ClockText(hour) + } + } + } + + @Composable + private fun ClockText(value: Int) { + Box(modifier = Modifier) { + Text((if (value == 0) 12 else value).toString()) + } + } + // [END android_compose_accessibility_traversal_clock_face_initial] + + @Composable + private fun CircularLayout(content: @Composable () -> Unit) { + } +} + +private object ClockFaceAfter { + // [START android_compose_accessibility_traversal_clock_face_modified] + @Composable + fun ClockFaceDemo() { + CircularLayout(Modifier.semantics { isTraversalGroup = true }) { + repeat(12) { hour -> + ClockText(hour) + } + } + } + + @Composable + private fun ClockText(value: Int) { + Box(modifier = Modifier.semantics { this.traversalIndex = value.toFloat() }) { + Text((if (value == 0) 12 else value).toString()) + } + } + // [END android_compose_accessibility_traversal_clock_face_modified] + + @Composable + private fun CircularLayout(modifier: Modifier = Modifier, content: @Composable () -> Unit) { + } +} + +// [START android_compose_accessibility_traversal_fab] +@Composable +fun FloatingBox() { + Box(modifier = Modifier.semantics { isTraversalGroup = true; traversalIndex = -1f }) { + FloatingActionButton(onClick = {}) { + Icon(imageVector = Icons.Default.Add, contentDescription = "fab icon") + } + } +} +// [END android_compose_accessibility_traversal_fab] + +private object ColumnWithFab { + // [START android_compose_accessibility_traversal_fab_scaffold] + @OptIn(ExperimentalMaterial3Api::class) + @Composable + fun ColumnWithFABFirstDemo() { + Scaffold( + topBar = { TopAppBar(title = { Text("Top App Bar") }) }, + floatingActionButtonPosition = FabPosition.End, + floatingActionButton = { FloatingBox() }, + content = { padding -> ContentColumn(padding = padding) }, + bottomBar = { BottomAppBar { Text("Bottom App Bar") } } + ) + } + // [END android_compose_accessibility_traversal_fab_scaffold] + + @Composable + private fun ContentColumn(padding: PaddingValues) { + } +} + private class Post(val imageThumb: Painter? = null) private class Metadata( val author: Author = Author(), From 8516dff83dd72dc59d472dff52798928b98d0842 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Fri, 11 Aug 2023 12:29:58 +0200 Subject: [PATCH 116/463] Add variable font snippets (#134) * Add variable font snippets * Apply Spotless * Add variable font snippets * Apply Spotless * Changing variable to lower case --------- Co-authored-by: riggaroo --- .../compose/snippets/SnippetsActivity.kt | 2 +- .../interop/InteroperabilityAPIsSnippets.kt | 2 +- .../LandingScreen.kt | 2 +- .../snippets/lists/LazyListSnippets.kt | 2 +- .../snippets/text/VariableFontsSnippets.kt | 511 ++++++++++++++++++ .../tooling/AndroidStudioComposeSnippets.kt | 34 +- .../res/font/robotoflex_static_regular.ttf | Bin 0 -> 109860 bytes .../src/main/res/font/robotoflex_variable.ttf | Bin 0 -> 1654412 bytes 8 files changed, 533 insertions(+), 20 deletions(-) rename compose/snippets/src/main/java/com/example/compose/snippets/{LandingScreen => landing}/LandingScreen.kt (98%) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/text/VariableFontsSnippets.kt create mode 100644 compose/snippets/src/main/res/font/robotoflex_static_regular.ttf create mode 100644 compose/snippets/src/main/res/font/robotoflex_variable.ttf diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 330a5c04f..6b8a7e977 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -26,9 +26,9 @@ import androidx.compose.ui.Modifier import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController -import com.example.compose.snippets.LandingScreen.LandingScreen import com.example.compose.snippets.graphics.BrushExamplesScreen import com.example.compose.snippets.images.ImageExamplesScreen +import com.example.compose.snippets.landing.LandingScreen import com.example.compose.snippets.navigation.Destination import com.example.compose.snippets.ui.theme.SnippetsTheme diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/interop/InteroperabilityAPIsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/interop/InteroperabilityAPIsSnippets.kt index 2fc9d174f..daf6aaf9a 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/interop/InteroperabilityAPIsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/interop/InteroperabilityAPIsSnippets.kt @@ -46,6 +46,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.ViewCompositionStrategy +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.viewinterop.AndroidView import androidx.compose.ui.viewinterop.AndroidViewBinding import androidx.fragment.app.Fragment @@ -54,7 +55,6 @@ import com.example.compose.snippets.R import com.example.compose.snippets.databinding.ExampleLayoutBinding import com.example.compose.snippets.databinding.FragmentExampleBinding import com.example.compose.snippets.databinding.MyFragmentLayoutBinding -import com.example.compose.snippets.tooling.Preview // [START android_compose_interop_apis_compose_in_views] class ExampleActivity : ComponentActivity() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/LandingScreen/LandingScreen.kt b/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt similarity index 98% rename from compose/snippets/src/main/java/com/example/compose/snippets/LandingScreen/LandingScreen.kt rename to compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt index 2d4dbf64f..6b7c1a874 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/LandingScreen/LandingScreen.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.example.compose.snippets.LandingScreen +package com.example.compose.snippets.landing import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index dc948b4d6..e1107eba7 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -57,6 +57,7 @@ import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.dp import androidx.paging.Pager @@ -64,7 +65,6 @@ import androidx.paging.compose.collectAsLazyPagingItems import androidx.paging.compose.itemKey import coil.compose.AsyncImage import coil.compose.rememberAsyncImagePainter -import com.example.compose.snippets.tooling.Preview import com.example.compose.snippets.util.randomSampleImageUrl import kotlin.random.Random import kotlinx.coroutines.flow.distinctUntilChanged diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/VariableFontsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/VariableFontsSnippets.kt new file mode 100644 index 000000000..80b8361fe --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/VariableFontsSnippets.kt @@ -0,0 +1,511 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:Suppress("unused", "PreviewMustBeTopLevelFunction") +package com.example.compose.snippets.text + +import android.os.Build +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.Typography +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.ExperimentalTextApi +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontVariation +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.compose.snippets.R + +private object VariableFontSnippet1 { + // [START android_compose_text_variable_fonts_define] + // In Typography.kt + @OptIn(ExperimentalTextApi::class) + val displayLargeFontFamily = + FontFamily( + Font( + R.font.robotoflex_variable, + variationSettings = FontVariation.Settings( + FontVariation.weight(950), + FontVariation.width(30f), + FontVariation.slant(-6f), + ) + ) + ) + // [END android_compose_text_variable_fonts_define] +} +private object VariableFontDefaultSnippet2 { + // [START android_compose_text_variable_fonts_fallback] + // In Typography.kt + val default = FontFamily( + /* + * This can be any font that makes sense + */ + Font( + R.font.robotoflex_static_regular + ) + ) + @OptIn(ExperimentalTextApi::class) + val displayLargeFontFamily = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + FontFamily( + Font( + R.font.robotoflex_variable, + variationSettings = FontVariation.Settings( + FontVariation.weight(950), + FontVariation.width(30f), + FontVariation.slant(-6f), + ) + ) + ) + } else { + default + } + // [END android_compose_text_variable_fonts_fallback] +} + +private object VariableFontSnippetsExtractedSettings { + // In Typography.kt + val default = FontFamily( + /* + * This can be any font that makes sense + */ + Font( + R.font.robotoflex_static_regular + ) + ) + // [START android_compose_text_variable_fonts_extracted_settings] + // VariableFontDimension.kt + object DisplayLargeVFConfig { + const val WEIGHT = 950 + const val WIDTH = 30f + const val SLANT = -6f + const val ASCENDER_HEIGHT = 800f + const val COUNTER_WIDTH = 500 + } + + @OptIn(ExperimentalTextApi::class) + val displayLargeFontFamily = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + FontFamily( + Font( + R.font.robotoflex_variable, + variationSettings = FontVariation.Settings( + FontVariation.weight(DisplayLargeVFConfig.WEIGHT), + FontVariation.width(DisplayLargeVFConfig.WIDTH), + FontVariation.slant(DisplayLargeVFConfig.SLANT), + ) + ) + ) + } else { + default + } + // [END android_compose_text_variable_fonts_extracted_settings] +} +private object VariableFontSnippetsUseTheme { + // In Typography.kt + val default = FontFamily( + /* + * This can be any font that makes sense + */ + Font( + R.font.robotoflex_static_regular + ) + ) + @OptIn(ExperimentalTextApi::class) + val displayLargeFontFamily = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + FontFamily( + Font( + R.font.robotoflex_variable, + variationSettings = FontVariation.Settings( + FontVariation.weight(VariableFontSnippetsExtractedSettings.DisplayLargeVFConfig.WEIGHT), + FontVariation.width(VariableFontSnippetsExtractedSettings.DisplayLargeVFConfig.WIDTH), + FontVariation.slant(VariableFontSnippetsExtractedSettings.DisplayLargeVFConfig.SLANT), + ) + ) + ) + } else { + default + } + // [START android_compose_text_variable_fonts_typography] + // Type.kt + val Typography = Typography( + displayLarge = TextStyle( + fontFamily = displayLargeFontFamily, + fontSize = 50.sp, + lineHeight = 64.sp, + letterSpacing = 0.sp, + /***/ + ) + ) + // [END android_compose_text_variable_fonts_typography] +} + +private object VariableFontsTypographyTheme { + object DisplayLargeVFConfig { + const val WEIGHT = 950 + const val WIDTH = 30f + const val SLANT = -6f + const val ASCENDER_HEIGHT = 800f + const val COUNTER_WIDTH = 500 + } + + object HeadlineMediumVFConfig { + const val WEIGHT = 800 + const val WIDTH = 90f + const val SLANT = 0f + const val ASCENDER_HEIGHT = 750f + const val COUNTER_WIDTH = 393 + } + + object BodyLargeVFConfig { + const val WEIGHT = 400 + const val WIDTH = 50f + const val SLANT = 0f + const val ASCENDER_HEIGHT = 750f + const val COUNTER_WIDTH = 603 + } + // In Typography.kt + val default = FontFamily( + /* + * This can be any font that makes sense + */ + Font( + R.font.robotoflex_static_regular + ) + ) + @OptIn(ExperimentalTextApi::class) + val displayLargeFontFamily = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + FontFamily( + Font( + R.font.robotoflex_variable, + variationSettings = FontVariation.Settings( + FontVariation.weight(VariableFontSnippetsExtractedSettings.DisplayLargeVFConfig.WEIGHT), + FontVariation.width(VariableFontSnippetsExtractedSettings.DisplayLargeVFConfig.WIDTH), + FontVariation.slant(VariableFontSnippetsExtractedSettings.DisplayLargeVFConfig.SLANT), + ) + ) + ) + } else { + default + } + @OptIn(ExperimentalTextApi::class) + val headlineMediumFontFamily = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + FontFamily( + Font( + R.font.robotoflex_variable, + variationSettings = FontVariation.Settings( + FontVariation.weight(HeadlineMediumVFConfig.WEIGHT), + FontVariation.width(HeadlineMediumVFConfig.WIDTH), + FontVariation.slant(HeadlineMediumVFConfig.SLANT) + ) + ) + ) + } else { + default + } + + @OptIn(ExperimentalTextApi::class) + val bodyLargeFontFamily = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + FontFamily( + Font( + R.font.robotoflex_variable, + variationSettings = FontVariation.Settings( + FontVariation.weight(BodyLargeVFConfig.WEIGHT), + FontVariation.width(BodyLargeVFConfig.WIDTH), + FontVariation.slant(BodyLargeVFConfig.SLANT) + ) + ) + ) + } else { + FontFamily( + Font( + R.font.robotoflex_static_regular + ) + ) + } + // Type.kt + val Typography = Typography( + displayLarge = TextStyle( + fontFamily = displayLargeFontFamily, + fontSize = 50.sp, + lineHeight = 64.sp, + letterSpacing = 0.sp, + /***/ + ), + headlineMedium = TextStyle( + fontFamily = headlineMediumFontFamily, + fontSize = 35.sp, + lineHeight = 37.sp + /***/ + ), + bodyLarge = TextStyle( + fontFamily = bodyLargeFontFamily, + fontSize = 16.sp, + fontWeight = FontWeight.Medium, + lineHeight = 28.sp, + letterSpacing = 0.15.sp + /***/ + ), + ) + + @Composable + fun MyCustomTheme( + content: @Composable () -> Unit, + ) { + // [START android_compose_variable_fonts_use_theme] + MaterialTheme( + colorScheme = MaterialTheme.colorScheme, + typography = Typography, + content = content + ) + // [END android_compose_variable_fonts_use_theme] + } + + // [START android_compose_variable_fonts_usage] + @Composable + @Preview + fun CardDetails() { + MyCustomTheme { + Card( + shape = RoundedCornerShape(8.dp), + elevation = CardDefaults.cardElevation(defaultElevation = 4.dp), + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + ) { + Column( + modifier = Modifier.padding(16.dp) + ) { + Text( + text = "Compose", + style = MaterialTheme.typography.displayLarge, + modifier = Modifier.padding(bottom = 8.dp), + maxLines = 1 + ) + Text( + text = "Beautiful UIs on Android", + style = MaterialTheme.typography.headlineMedium, + modifier = Modifier.padding(bottom = 8.dp), + maxLines = 2 + ) + Text( + text = "Jetpack Compose is Android’s recommended modern toolkit for building native UI. It simplifies and accelerates UI development on Android. Quickly bring your app to life with less code, powerful tools, and intuitive Kotlin APIs.", + style = MaterialTheme.typography.bodyLarge, + modifier = Modifier.padding(bottom = 8.dp), + maxLines = 3 + ) + } + } + } + } + // [END android_compose_variable_fonts_usage] +} + +private object VariableFontsTypographyCustomAxes { + // [START android_compose_variable_font_custom_axes] + fun ascenderHeight(ascenderHeight: Float): FontVariation.Setting { + require(ascenderHeight in 649f..854f) { "'Ascender Height' must be in 649f..854f" } + return FontVariation.Setting("YTAS", ascenderHeight) + } + + fun counterWidth(counterWidth: Int): FontVariation.Setting { + require(counterWidth in 323..603) { "'Counter width' must be in 323..603" } + return FontVariation.Setting("XTRA", counterWidth.toFloat()) + } + // [END android_compose_variable_font_custom_axes] + object DisplayLargeVFConfig { + const val WEIGHT = 950 + const val WIDTH = 30f + const val SLANT = -6f + const val ASCENDER_HEIGHT = 800f + const val COUNTER_WIDTH = 500 + } + + object HeadlineMediumVFConfig { + const val WEIGHT = 800 + const val WIDTH = 90f + const val SLANT = 0f + const val ASCENDER_HEIGHT = 750f + const val COUNTER_WIDTH = 393 + } + + object BodyLargeVFConfig { + const val WEIGHT = 400 + const val WIDTH = 50f + const val SLANT = 0f + const val ASCENDER_HEIGHT = 750f + const val COUNTER_WIDTH = 603 + } + // In Typography.kt + val default = FontFamily( + /* + * This can be any font that makes sense + */ + Font( + R.font.robotoflex_static_regular + ) + ) + // [START android_compose_variable_font_custom_axis_usage] + @OptIn(ExperimentalTextApi::class) + val displayLargeFontFamily = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + FontFamily( + Font( + R.font.robotoflex_variable, + variationSettings = FontVariation.Settings( + FontVariation.weight(DisplayLargeVFConfig.WEIGHT), + FontVariation.width(DisplayLargeVFConfig.WIDTH), + FontVariation.slant(DisplayLargeVFConfig.SLANT), + ascenderHeight(DisplayLargeVFConfig.ASCENDER_HEIGHT), + counterWidth(DisplayLargeVFConfig.COUNTER_WIDTH) + ) + ) + ) + } else { + default + } + // [END android_compose_variable_font_custom_axis_usage] + + @OptIn(ExperimentalTextApi::class) + val headlineMediumFontFamily = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + FontFamily( + Font( + R.font.robotoflex_variable, + variationSettings = FontVariation.Settings( + FontVariation.weight(HeadlineMediumVFConfig.WEIGHT), + FontVariation.width(HeadlineMediumVFConfig.WIDTH), + FontVariation.slant(HeadlineMediumVFConfig.SLANT), + ascenderHeight(HeadlineMediumVFConfig.ASCENDER_HEIGHT), + counterWidth(HeadlineMediumVFConfig.COUNTER_WIDTH) + ) + ) + ) + } else { + default + } + + @OptIn(ExperimentalTextApi::class) + val bodyLargeFontFamily = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + FontFamily( + Font( + R.font.robotoflex_variable, + variationSettings = FontVariation.Settings( + FontVariation.weight(BodyLargeVFConfig.WEIGHT), + FontVariation.width(BodyLargeVFConfig.WIDTH), + FontVariation.slant(BodyLargeVFConfig.SLANT), + ascenderHeight(BodyLargeVFConfig.ASCENDER_HEIGHT), + counterWidth(BodyLargeVFConfig.COUNTER_WIDTH) + ) + ) + ) + } else { + FontFamily( + Font( + R.font.robotoflex_static_regular + ) + ) + } + // Type.kt + val Typography = Typography( + displayLarge = TextStyle( + fontFamily = displayLargeFontFamily, + fontSize = 50.sp, + lineHeight = 64.sp, + letterSpacing = 0.sp, + /***/ + ), + headlineMedium = TextStyle( + fontFamily = headlineMediumFontFamily, + fontSize = 35.sp, + lineHeight = 37.sp + /***/ + ), + bodyLarge = TextStyle( + fontFamily = bodyLargeFontFamily, + fontSize = 16.sp, + fontWeight = FontWeight.Medium, + lineHeight = 28.sp, + letterSpacing = 0.15.sp + /***/ + ), + ) + + @Composable + fun MyCustomTheme( + content: @Composable () -> Unit, + ) { + MaterialTheme( + colorScheme = MaterialTheme.colorScheme, + typography = Typography, + content = content + ) + } + + @Composable + @Preview + fun CardDetails() { + MyCustomTheme { + Card( + shape = RoundedCornerShape(8.dp), + elevation = CardDefaults.cardElevation(defaultElevation = 4.dp), + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + ) { + Column( + modifier = Modifier.padding(16.dp) + ) { + Text( + text = "Compose", + style = MaterialTheme.typography.displayLarge, + modifier = Modifier.padding(bottom = 8.dp), + maxLines = 1 + ) + Text( + text = "Beautiful UIs on Android.", + style = MaterialTheme.typography.headlineMedium, + modifier = Modifier.padding(bottom = 8.dp), + maxLines = 2 + ) + Text( + text = "Jetpack Compose is Android’s recommended modern toolkit for building native UI. It simplifies and accelerates UI development on Android. Quickly bring your app to life with less code, powerful tools, and intuitive Kotlin APIs.", + style = MaterialTheme.typography.bodyLarge, + modifier = Modifier.padding(bottom = 8.dp), + maxLines = 3 + ) + } + } + } + } +} +@Composable +@Preview +fun VariableFontConfigured() { + VariableFontsTypographyTheme.CardDetails() +} +@Composable +@Preview +fun VariableFontConfiguredCustomAxes() { + VariableFontsTypographyCustomAxes.CardDetails() +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/tooling/AndroidStudioComposeSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/tooling/AndroidStudioComposeSnippets.kt index b71bc5507..eda389162 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/tooling/AndroidStudioComposeSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/tooling/AndroidStudioComposeSnippets.kt @@ -175,20 +175,22 @@ fun UserProfilePreview2( } // [END android_compose_tooling_preview_parameter_provider_composable2] -// [START android_compose_tooling_preview_annotation] -annotation class Preview( - val name: String = "", - val group: String = "", - @IntRange(from = 1) val apiLevel: Int = -1, - val widthDp: Int = -1, - val heightDp: Int = -1, - val locale: String = "", - @FloatRange(from = 0.01) val fontScale: Float = 1f, - val showSystemUi: Boolean = false, - val showBackground: Boolean = false, - val backgroundColor: Long = 0, - @UiMode val uiMode: Int = 0, - @Device val device: String = Devices.DEFAULT, - @Wallpaper val wallpaper: Int = Wallpapers.NONE, -) +private object PreviewAnnotationEx { + // [START android_compose_tooling_preview_annotation] + annotation class Preview( + val name: String = "", + val group: String = "", + @IntRange(from = 1) val apiLevel: Int = -1, + val widthDp: Int = -1, + val heightDp: Int = -1, + val locale: String = "", + @FloatRange(from = 0.01) val fontScale: Float = 1f, + val showSystemUi: Boolean = false, + val showBackground: Boolean = false, + val backgroundColor: Long = 0, + @UiMode val uiMode: Int = 0, + @Device val device: String = Devices.DEFAULT, + @Wallpaper val wallpaper: Int = Wallpapers.NONE, + ) // [END android_compose_tooling_preview_annotation] +} diff --git a/compose/snippets/src/main/res/font/robotoflex_static_regular.ttf b/compose/snippets/src/main/res/font/robotoflex_static_regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f857ae9c569eb2caa8700cab80905ae355e41ecb GIT binary patch literal 109860 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�@;14ryCp4;9mpwhtoh+W`Yg&CFnRNqw% zRNqw(GJO()Vd31QEMcBO1P7AsNB+o5$Y}V$yDOVEC?su3-EO^YLf*!sZEk;jBArOP#Y(6 zFD7G*BQ~4bBsq+87)foCJeJxdc>>iW*}#1{iP|JNn)8{%<(_6OH{=METX4DExZGY` zZhtO!XU3}Ia`)nL_al67Or&zZVJ3WUY~ylAP`TgW_I_hBaQ_3pLNQ{!=m<8eHvRlXDx7fYSZX>zK0W;A2S=6sM3+jy; zX;7c!q$XW2%>)2h(rCL@+6Yz@{(R9TADYAXbCQ82`*>}E@)}q zAO*Ap7qkQyv;-Hl1Q)af7qkQyv;-Hl1Q)af7qkQn{?tnIW}_xKNmubJJ_)n2{2_^M zk%cGaVhntS_MukVgt8Q(Wl)oO8hms2W|A-3>bE4GyFhhRD_)x?6*5H~QpO|AF>W`N zx=vGW()fNcW?HZJH>2H5@0U=!y<(b}K6cC4y+*DzH++Q%zo;hKcjr@0-d)7G zE#utGxKdW3H{(;WUc$yQwAhh18P&Dx{Xw zvpl2ce)|{GyPo?E@e_zj^!t!^ydIhl`GbBwQHg#LQHg#T=LUL5{!H(4N{CAI2BMNg zURUa~C?EX}>MQ+6L?!wSL?!x-)NlG7)NlHHT+9OP>t_(p)z3tUqv!b22$(aFMgUxt z8!pBHT#N&_7zc9(Di{ZFF%IBj9KgjmfQxYe7vlgf#sOT61GpFma4`;mL5r`g7Qa)C zRxQ-ih+d)(Aq+Ds$~h0@oQHDGqdDjCoHI*-E222(DV+0Dobz<)&z z8uJdN!3|2duW>l23VwoJjX8+iTy}B42jREaz0GbTxwy;&dQ0FnRKg;vbHXy36%rDm z@5@gldE!PQ&kYIq{+K+LNHc^;U`Zlj11^9aOXM|KLKf9CE==hz^Or4Fdayf$VwGX+ zzRn@|Dkeg1v3r}{Msle~5i8xguO^IRX3&a0m@7)7*F7yBY>wV7{ zhsJG&8RQmL$hl#VjN_Punb1rac1%tygpimpV}@aE+qNYg*4h#!q?6>dR+3a|Rgxr0 zR#GGhNt*ljcs=iX7}TEH-(TO))I8_ubsgT<^}1fy>w3Mf_o=YHwX3ixV={*OC0KS>?Z+)!yu4#&e9$oLMQ%xi4pRx0R-_iyKIu*KN)fj%1`3 z%<5&UPGK73b<3>AUytB3vxYNXf1hPv_+`zW zc8CX`j?di5yIBlr>FCC^^vJZM*3xMwn6I;^ow2s$x8-r0Z)UzjD-P%LSy}P*!VQLA z3t^6Ms@3M558FE6CM`CX;Q{WDve9%oLbb#KpXZ+e`* zPvd*g^f>*9>2XF=)8q8xrpM{0O^-8EOpn+AZJ$2e^f_XOM1 z>iohK9&o+4u$N;$Ew2_ms4-HzVB@eKPb5 zt6H62HDPsO4dL~6bgzf<3>FR*^1vGT$BT1sDE06@Jn$XicHs`;PT?-$Zs8sw@6Mxz z4Y)Gq3f`jkZsaKQOkfiBwa5GuI8CV-HF*kz(}gpHg+lxgIbRZgS@?<}Q8Trf_sZX6 z-V5w0d2eA~AvT7b8p!#G5KjhQq|_&bJZ?;FONCDfpBCczkv}hdLHMF@wQ#Kvk4XLB z3Gs+57K*(-h=cWr1v1b z2kAXX??HMG(tD8JQ$M{2={-pAX|0d9^+fQWJxs~tl&lVyAuG>+_WeY=iecZovY5C7 z{w2j_V<+}r@Dv`SAIW2Pqj^P17yQE{*OeE#Jm9)nm)@5C+^@{>fd>k^=~r16{P(E)g#Q-sW|B{N>()Pbd(A@Lc=b7NKm3CK7W07QVID01inm-X;W5Rt zd`Y#)`;}YmUCFBYkyqDi>-KobUaC9c-QW!%?PmU~;0^Nb^kTfJ{MW#n?>)vlB^P;b zdI{d&y**w(y}53L_qq3_H_|)lo%P0eMZPF+qOYv49Pg)$_Eqo-eD!?wyqUiGzQ*1x zU!t#t_j_LtUr+B3zP`S`-XD3Mk8}N7YNMGN!|p~iIg{hezuwZu*3Ze+%$rTF<+=oq z{?FHv{ozAl?kbn}K*UaIbKmkS~not?*)m9fT=Do+CouUzjCaFWey9 zDBL96EL5vJwaQbgJRQZ;QM}Mm4q8s;P70roioqV-v^4Xd)6&^Vvuh^(KzpHvo7U0v z!F8T2Nd}OA1GZtMuzm0`;X)zv0LkM*W&?b^N^KBslw^}|v!PcDc^i-M0qd}z7-KQ= zw2mGz^0Y4AHRRdgG2_7`AyvbgK547!iK^|!p1_=XBscGDCHLC9%bg% z&xvNHF3vr{OkI$B21^~9qbrL!Rn1a!YM7Dl2%1t1j1r(b(&u zyc*c6Av>OV6&bhwLzc7R^~$S?1)H1^%SmtpDO(3SK9tuLJ2qS*Tq;~9+#-BkxK;R; zaGP+uaEEZGaF=kmaF1}WaG!9$Ar@@dL6{;;6Y`}J?d+2@AH0Q~VB;0J=Cj2{VDK~MC8oY*b7Qcs|A1KA#ELd62H$0~V(Ko_@zm`$ zE08cNrtZbdT5VV!`I#Fa_6IH$GB@DZBFNkTnH!X4Zh*`UB%6er4ZW&%M6a5#x{w|q zVTMfIWiw>(T{c6e?zI^LGDARS2xXZeAZ-RSg=17U2Y#2$5Ne>EAT0#dDw`qXXNG{x z5Re%HGDARS2*?ZpnIRxE1Y9FzhQOI2)PGvY41qI4z#`KOUkL$yyvPTPFrBlfZpfGV zzzXEd^Rea*&Lf6nlm^;$h57^cGFEe@+|5{Z8MuV8GR{~{(Umu@3$cegaEnC;Q}XRi zRa3I;+-=Gj`})L`2^KF*>2C4Dl*tw^OtG&ex+$~l?xHD!ZJej{Vce|dY4CiPFDwvF z7tRnC3TJ}DErOtimn3;v_=@m2m}TdNQ^t6g3j@L{gf+nltdNGp8dD})tTAPl#TuZs zd9c@7XssP=(Z`g0??!OA#UOAz2{;-Y(mD+7r~z@YxBh>$$@O$A8!Xncc;|VgJh7mR{jHh8aq2IYdI#-)A z$JfI+PuZ6WK6mFqTcPh5#aWthc5Lpn9h?4lzHVc9=RO;~o3m{6?ilaTN4D)S*flG( za_4Rvy@{;i!8v#CAhK~c`-yA}(ZtR59Aiigj3LMvf{Y=^7=nx;_^|5ylW?B!&qB0F z&5SB}7*&u_y>p+9=gnC*o*?51GM*sgdB=DgPq41l;9VtT9e}d}fY>8=wU9BtbGME8 z#A-I?U`NRrXO6-MgMEb~B)?V2Xmcz^o1@T2N=-Gr*_cz?BSOX;&X`jJV-7OrAY%?P z<{)DZGUgy-4l?E-V-Btst`&Z+<9;DLEc{CNweTC^w?eFg_IxM&UWj!}tj0MpEwpRi zV5CsvZhL6iD>*YZd3i%Og;miF=x(z;>ny9H@e09hIklPXHL~_H+l@2ZC+#-RJid#q zjRPi|rR2oeY|mO^_L8-deUbMk*|pgNlMeDt&Ldp)N}|+pc1J#*blPS+r8*!fGOwOf zS^k{eDY&i_a`e$UA{Io=SP+N>fmjeYLx=^zXHr`nyDT4b4ee1Rl^r7hJ|>mw{g^&a8r?E96*WPK>P}IhD=t42ZLJ z1deSY?<3wbP{804RxAMVr<2MW36!3 z9XK`%XZ3+&xp3AXIQ9#FMjR`KvmPPGmf?{z8SUBo#fLBbgc*v+-=cgW65;ORonPT+llr~2(AO7GHd z5AjH^e*0}_gPiPa^gBa5Vv+&k({$W?VS#YEaE7o@$S6_gqiVwf;bX#u!bQTzg--|< zD?evNl;W%ixL)n#>)*8YCADOu%DybVN&FS@ z&ElNXP?mEVkaHT4GcAxaEs!%UkTWfiGcAxaEs!%UaF394AUNkhAm>2faT^iauj+rV z?N@>9SAm>?fqXTr-%fUT4EeGMSVPF!W4}F|vluov%`?v|e+%miv(5N5rhjIbVUm#Z zIpmzrft=5Q?23Ust&bk>0PjE0OBZUCz21`dk)*G9rZ{JTl*$qg77i7TQQO9encHPlzwpv7QuPBED37nfO!U%f+7-=V?mX&o{g2 z3-45hKQF#Q`~~rq;xCG?5??L8MtrR}UkIe^dbO6bTUyT9Ey&p|$k{C@OR%$BxGcf; z4&kx^Pd4Dm25j#Txop6b4cK`w64`*A2g45t4+>8TPf1JPiJun#Ui^&s58`KybKb}3 zbKYmzP}oS=SlHK)=)MkDre^aVP1pMvyI6)zT>Wv`>{J*hjtBA1w~k~DTQ_c^#XLy3 z%XnOxtz_f4N(N8ITg(}EkF8|mhT0m|$8Trty-(RnHg2q)wZr?t=i2$nxaqdGjhkoZ zCrAc>BP}|jCHX?uHu!Ym3}K;gmX6N-hT}5bed2S3_Y3C=9}qqyd|3D=;XL7=h4a-~ zR!7>oK*;I{UnpcHfIlu|C4l48`#fxCM6`B;koA%lZd5AkC47_kE8?5QU)8Z*6TTsQ zQ}~haW8o*lPld;&`63tBXA}1pfF6-Y?_=I&LcBJ-g0PB>h^@in#@ZSTuO=Q4uP)9S zj2tgdo|-mxUM%`wyFWwctCwyP{f$&42tjm*id9p5EEoqkX58-FR&xKzI4-3B%el7e) z_^t4yG<+~4Zk*$86sD7Nlzq(s z2`e0>ut7LBIJ&=iuh9d|dm-sB#Bad|2uG{6*v{x-Zh;Wnf#XX+EC|GcKr9Gcton&j zI0`WeNQ?q56JjZ&Z*o`)^%JSksue;a75GXakqVqh1;i(j6Q2ZbRQ>oNj)DgQS&gWf z)d*xY0*OmN;u4TG31m$IS(8B4B#<=;WK9BDlR(xakTnTBz_IS;9et)xECoCv$w{^0 zJMr&@KL~#`w0DKxILC_+mJ&t@%LvO+^C*jQK%yLwC};F|ucA`pgq4L=IbwhFb|8KZ z#KVELz=7t~KztR)!b^eI2(K05jgS!QP&2U(cs-K4z3!3|_aGte;po`L=warQK(mKY z=8fQ)LZTdUW(kRMNF~YvhpC?7!ZGCR?~Mfqa$U_*CkTmn;5o{}o4Q8lnFpd(*bj*1 zfU*|zG#n8h1L9pk{0jJt5DS6hML_%qxJtN2xK6m9V~zKSR6rsXkVpk2QUPTf7OB8x z8y2b1HnWOR7O8+{6{9Rt0nI8#S)>BWDlAf=tgON!732pcIi+5l7M>B}8|YV&%@p3> z3i@~(66l!*ICC+Ku=&oJi*fk}Uz8-~A9C0$H91}a^wYb$%+rj%*E|h~rvdRaAf5(H z1PgfrkK@|@4*6{s-^=GM>Tpdg#Uh>&y)5DZn>csFR*QJxlmJ^HscySGBbr;pGolY? zMs7qk+vOS2+Roia)Uv&v5m^@TjA(2T&xr2q-dZVa3hXMxvfww6T95ZKx*MAErbd%s zO(O=IM;X4vJj#gn77yJp+u|W4_!VlK2Bx@tVS#YEaE7o@I1B7$kq|gXc)xJ2@B!gN z!iT{=?oYyb!aob=gITsuz!4V+u|YWA3&eYYj|=f$aIBK{v;KkDCb(3Hg~Fc)oAOS6 z!xw}rg)a(M3)icUcr1GQ5_P7yjjH)&al98tc}0A)_^V(qw}rCRd2Oum*Tvru-zxs5 z_*>%JgxiHXggb@1gu8_wDgPevkHzW?Q7LASQ<&}dswU`VZEnZ$6 zt3+NwJO*Cfc1pmiNCsP!2CpU_5U(zNg*ZNpJT<}Qwr2;{1^d{Z9f*yCST~5Rf>#Th zfvwHkjc9K>cO$aQ=M7(C`*(0`ctm6KecpBlV;UGn9IhQhO`aY`eR~ZRE@p@2`5YgoBXu@&+sa5b>en zBjA0!TZN;Qa}0d2?Jc5>aUl06DCh0s6U6TjpC~>Fo@JgD4a|qPHqVM?9ua?3+$_Ac zd0FIU+bQO2X|36Iig{c(whhO&;Y-D_ZTM5-%f+7-e@6USar`lPuz$*~5Xb)EE5)&Y z_$u+$;%mg$imwx2uU>BuG9$1S<^sqp0A>H4EZ>vOdv8;!m-h~-O}%%;w~N0gzC-+d z@txuyi0=~rP<*$z=7P6JTyw$O3$JdmBlT-8SOf{zT(CG2en9y@6F;c@pTqljUkDEi zzY=~e{6_e#@FbXJS7R8d@5E1we=mMU{0H%~#@+Y$?B+vuna>`w*L*hEM3Uy>ErhMW zjhvo`jtIpl!(?5sBCv#)>HeD?Jd%x8mL zh24Tjh8(l^=_0}Q2X!~k4Zlg)2g&Q)pS6Do&%l6OV-ugI_T&o-gwusHgoVOcYUdwa z{p-h=&!!i1g!c>Q3Lg+YBz#!C_>*v+@Xx~e>ID`}`>|*civ|}8v1>SX4Pw{eVsL`_ zY!JH!v1<^!2C?6+k>48{$|o{7rE@H+-9LyKsjP%SDdOf>314;q>mAF|iH`1KRai^K8a@bcn*@e1O2apYCt8_kOkdfmJ@yqb7Gyt?=m z;x)u;ngw!}ZCKaFi~Eud8weW-xw9I{)xu_GpI&pbCC;z0Pwwx-x;Vc!j#X#1G5-y= z5w_=8d(CIlwvMX7EO`R=vX~s74aaWbJ;ZyO2Fzz)|FHRNFhi-bXLipm6{|+hlU?vk z@&4chFH1N``3H;Rv#EKg_y`^SR^e#m8*R58E#0QRk5kU^%6Yr^1o1n>CyGx}A9K`S zzT}J^{vtg*BF?@qI$0pjzAt={S}5DbXIpE{wjai48#mj27@uw2Z2Mt+wsCwm{AuxL z#Ge(%XCr@J+${fLt~yzMv;2oSA2+^Ae6{!*@wMXX#MgrpybVH|3lq#|gJ%B|%x8nL zdGpzDd^Xy{XT#qWm$iHEiOc4__r-TA&j;eW#PQjb-7T(JU_P6AGz-jU!!-*$%>wh; zfZ_tiHq z>ci&2hC(bK-dNbzkh8&3&UIR6SJpu8<<5SP^L>|H!_N0REwuCf>^c^&XXjXq-sww= z%d>C7$A6YR(Bkq=d-3syvKv}lo~=6#vlH;~Z)D$PK0aH|GH16kPoJG*X{C%e-wle^~QJAh&W(*Q$3^{v?_kn9?AbXg_@!9uU9G^Yj;`r>g z7RMtQ0QPVr$^Q)3@2q#s5BN0XIWAvVAe=6oAuJTmBnB%a0TJo~^Ch=FqH;Zop3oU8~w+i19ZWA&CkYoEGRu5wDAeIhd;~>@zV%Ok) z;Ze2r8{u*AOLx+^?K6N8LbI+dUX-wmu$+}Oe-HYFF~W*UjT2TD;`Os{GOwTA-@HD& znmAq`US0eO@fzYa%_hBC@L~9Vi{-v(R}v3tOLf)^1E6zpWVY&1NgP#ZN!trJAj2=N7a@h-W|Th)&%4|ggwC=TMe@F z>?&%fm9{3pZ&E6@O{&>;o<;ERO!59;p{)ksVBt{VFx5X?I0EDwzd}|6v@{0n&uU=W z7z-a}5j-_a5Ka_MQtxu$_j*$)yUt>F^zavOy!VK>+4*>Hfw+v8xK#qRLM z;%4DFwhkaS3(v820REKta`C6dpAk39&#`@3@|fl4SnLir%g?cO0B)9_W9tCi>_5lu zDT1#RUnjmEEVOk1+$gkJP-yD_DEqf{051Et6#%|nxI?&8xJ$TOxJM|<_x6d)^397= z_Mq@{Y5NP|Vc}Q8uZ1={_Ilq6PfE|HD0MIUxMoqO#lIInBmRT$Ke~!1(Xgg2nyUETIz$U>yne%LK2hP#JR^&fqdpnsYY*#09fvq0>9M`cv&0K7|I{kRN zQ}AFWPuse-najBXezG4=+<^6xqrivq^5Co)ugN|F)mq<7kpTNRF~| z?9W_7%4p(u<|SWkTjk=2rHkt&b~& zF9=r(Ulgtuu2=6i2wzgmH>&=Z#W#t+BEDJtRkd~tWoy_D4`cMY_#5I|#orWvOMIJf zyKskar*M~Wx9}t7-y{C9_+If(#P^ARD!yO*ICk=mog4Js#5H&NXy*p-XmP9??ia5h z9%H5K+#vIitrD3>ZIysm6K9oxR~NrRoK=E6HNg{JEv({v8erA**Bh{JZ8OBxxR0C`bgeaJX5^CYReK1QvSipKSX?}_-NX5$b3Kjy$w8p z@3;PrQ=ak4bG!Hi@jJvPiceC1bJX{#Hur5cKr?>{@u$R>i$5*?jQF$S&xt=T&Nna6%nRZx#a|R(CB9mGjrdyeb>i#k zOAYqj4L1rm2{#L6=j^*%s%+cN3K*StkW{s^0=U_BRXZzyn}t`kvjVu;c~$QNakKWS z-iP95^Hn|BJUjHpW%KOQ+fiim?A9BX&9i53{2waI2ldGRnfO7;PomX2?9Z45ekXof z{Cn{;;y;L=6=$tzn_z22+XP!HK+ndGwZbsMd^IbEart&%lqBVZ(USA#3sPA<`svLD zZKG`UNZM+v2Z$#JSv^2j50DjuoPCXRF3LL8auX}Y{)`wqmw>Y-Wi00I&HXJO;hLh$ zn8!86ZP%aSnxb*;=gg>V>qbU(JIBbVZRZ#nBl&!uYq{Rl3x1w4l}|GorxhTr02@k9 zE8w&OY(l9nd}z)1)xrcJvl&TqraO6qiAVwz!{p+!gWNl*v?@xxPK;iFk?EakYQJ0H{>f=g-pUMZ}~W@(BX`UtU@MX z70S>v6B(I&uI_NgY<8|b&Cop<8G5F;j|-m=E|wmi6fO}i6)qD#OP-FbX{NCi!WV=qg)a(M3)g_N-CE%~ z;a`R8rM(Tpm#A%|+o@Ezj#2KY|#55#wg;~S9g7XL_f?h*f3e6RQ?;`_uu72hxZ50xdpq=qkqhlO7W zzZM=79;aVj?6dLYJS8Nugr5?hBL2QK4<4?&kNlP6VW)0F21@gCGL(XPN`jI{H&jInm+24*PrCZ+aPs?GYbcK$}rO!0oI zv%hNlwRo2J0P&lJgH+F8)iXq#FHmvB-zfDK;YcL2`PiP}XlhQgbsnwWM(Qd%$3v^* zRCc_|-Yz~t{0{Mn;&>G_mLu&=rR*kK=g}>*8{M+b!)=Za^%jWR93N_Dee_7P+s^vn zi@~vW#Rk4ae5v>{@u$R>i$5*?jJVDEk#^Qc+2_Sqh`%7dQv5~nRpP6~*NCqbUnl-o z>14e$`8V+m;`jkZkass@vG@V_CUN`#e6#qg;_?IDYvS?)-W%fb1KykB@&Ml3(%w7L z-n-)4#orU(A^yJjPVo=KcZq)}zFS;=fEd9>R(^mO!P+T5K#X8qet;Ok_&-$kfbxGP zeo*p5NM?Iq3Xcen3Xcho3r`47qN{tnQyS~<#7~QVFMdY+2l2DwMYj5ImjK9J0*1Jc zmYeL%6O16|JUjn{ml8%vQr6ZfAFDs9tp22y7y6OtT>%*jd{@C2TV#>3!XgW>p|FvV zH62M0aJfYm87sVrb}pJ$)$adqa<`p}!l^s04riosorm!(K-bi4o&xBaI+SPSx22Bc z1M0h)jN#MChWM3K-qja8(qsbXrF~K-T6~e_?Cdlx%Hj(+Z2@TuNL!H87IRi{6Qgt}X-J3d(_~LNtV&V(KuEK7lCJr)Db-BeIsr&7|snkQn9bcxdAnrJny1~wYQ}r&o)HTE%Ccy)x?sNmyhLPxbvh9(A z(}I1P@Vt|-Ksa4ELs%%BNzRAue3-uf7Uabu!ruw+68>Izx9|_bdxZB2?*pUkDjayf zkh5s`1Hy-dcqTN4XQKW`(b5^WK=_z&p>UD#ap4oreijE0Ul+r3jfP8vONGmXc%anH z?m6j==z}~fghU_kl|rHq_-fU*CirFNQA8hx>x6$5@`U2`&G}Hf;Y-p9pGv2NFN<#y ze?@$=_^ayC7S)W`p{K8lzahR=9Iu1?EpdDgz1}ANt~g$YR=p>V*MYw;j@N;IAdc68 ze<+UEfqw*#;*K)oAB*o5|3rMB_^0Cg#s2|!Jk4$Rh48TOE8*9|W5VOik*yYekn^PU zc}o1W@Qm=RAx^~5vpgQY1Rf!dFM*d5j}n%aq>Ol3c$7sb*TvY506bc}ytrSyf_RL0 zEZlh&Rko6NoOrxA-|FM&RT%v}7PF-8x0nT9O*|l8UHl4hVixk$ba7pVd9~n&h*^xA zZ_zsrlUI24%o2!P3>yj?3!4fPgm{e9qZYZOp0LOzEt<#$o3Y3RZXV+u+h0iCY4Ho( z{Kig;V&LXCcG~^|eea+?c2b?m>QQH5isaXccM*0Kb`x@TLa$TdQ9NB>n!G`rhz8!% z?34Wn?ACUqo9HSf&*@|+&rN3k>_=FhKFZTqJX5@%>hG_5el4CQj#pt6h-<(>V3bE( z!?A{l6W73hqtsz)+b!b5#Yd`lqlBaB`yPvN7=_!U`LXarwwFPj<5kb?;uFO05GTf= z{z>p?VjR;mdl_j}EyiIK@Fa`^F%Fy<2fjf3G4Vy}ojeJ98P@B?>gki>OT?FoFB5-C ze7X43;?IabEB>7L^WrPSUl3m@{-XFQ@zvsM#Mg?i6aOo{a6I#1J^GvY2618>whscAx3PT?xV(++gTUo&Y##(JZ)5u)aCsZs2Z0mgaNN(t4~id>4SXp) zB0MTQCOj@YAv{T`Xkr{2>+i%*i+?YEM*Iiyv&LMKXYPE@0Qg^p-Cy5Kb4)5Ecq&sqep4-)9Sd zCnWkn8^0IcE&PL!=mYs5h4%{YQw?*3_Y3C=9}qqyd{~cp3z zNqh;2F98<{7YQF1J|SET9&hty1H(Tt}d8<9Y z)cK5ES5M(n_2R9}3laM;--&&UUn|~5-2Bx7_Hj%z9jM_DcU)OZI;rMl^}4e#MXC5P z^wULnJ(9&2i7#Yl~XZ(zsA^utpQ)Oou&&pN>G5a)>pI8R=o`5b9}K9bEA2QeZ% zc?CD$wbh=yf}8K!%3hE4@p1T0_Iivj7JpKFiTG0SW#UhXFBgAW{2B3Q#h(*@UVMf4 z3*sxqUld;@zFK^Z_*(IG;`lW5ydHkY;vhIa4gQk&M)8-$H;KO@zFGWL@h#%7iN7xX zhWJ+TH^t@6*y}NU@-zl|dsm!iGT`rt^JE76eQ}=8fPWy)QyTCO#d%f(E}v#kY{2Ey z>@G3dET87>6PHi3yTp+HLuGlAgZ!U~AC&xa*}x(A3ErP-_Wz~$Veup4Uy0-K$n&-M zG4XH2kBfgRZXWN1$8%-a10Ii=$a7`z)8af=2FK$e=eaUC9xugNypvMV;vKM|u#vE_ zFcFNhy9rXFE$T_B=uKlsrdASHc7mIeW?Sr&G}m@sk``F(1E)Ta`atSKPJM9d1Dgcb zC8b&H1HW3BAZ#YYmyn-hlFBjREyY{8a!EtkdAU1jtZVJ+CoO0H<-sJozB4q*-X=RV z$*%7_n6!r2r+-p9doB}_?y=Y>DVv>_yd>LsG3+Yr=HimxVduppsmhZE>fQNCEiCq- zR8L{A;2iEmxKWr+{&_A#{3ey{E#4GhwIh?n)40J?No|OI zOfn#NBq@{q7t>q5us}FnI73({oW;=>*v<=jm@WLB@Gjx+g?9`8AiPJ&)4NF>-M!-X zfeUQ^1-xH4SNMSNA>qT)ge;p4(5go~wSNrza@^hpzqtn-xc33{+{>_@%P1dihm%! zOPtt;vb)7Uf-hiq#*X{3_+If(#P^ARD!yNw*oU$Qz-)_s;9m$23%?TL39waSA5!rI z;5U*S*Ub7>5gCxHJTjwgWsC|)EUH10X$?CemF#XfM} z_XCdOl3_yS@d#@BXs;L+mc#r@(H#AB@27W+^$??k1ZO5$;tAK)%@68i+#ZB!EB3t;N67XDYe!1fT%4^`EL;K0iVYn z5Z;D8Ap9YBqZno=)jZfdc7H6jkK}#DGsTI0sK38zBldx3i4PFJSvUw>!0wOLGemr- z_-~XtOs%>_e7N`s^>L*7c&qp*@zEN!F&eeoG*V+VQsY$Tc-48k_yqAg#3zbRlD2cC z`S}`=zmUpP=i-lwFA#rBe3AMnuf-ma^?kAW`=t01@ulL+#GevhF8;LmGvd#RKPUdY z_zLkC#8-;HD85R3wfGwGwc_if}2m9XL~?!^J(*J z4+w5PZJzA`!Of@5vppcVe46b6!R6Cz4+t)wW_v*J1IquI_(Aw$?{nF}A=$te;$Mm% z7C$2XmH1Kduf>mveRXoCVtJaCrxg+MII!C#B zWxQf=ar1p#z1nu=5w2bt*5(3}z4du<^CQGiFD9m243(J8{?WIIBQ1u46GMRwgbgKc zBu)&4ya}ahTMPxiT1X59ZzgQ6{InfO3-OlXt-z*scTA$aLESY!Zdb1o^~ILvr-`2G zHyCVJuPW~5>eYkIi(E$+ml#PTwLLMD7-~o2SYjx{u0niI;yhv~li+VEZsY3J{=~V& zN`~o_8cM8W{3hk;4KHU`uM%6>K2c&vVx2QPMc5%E5e1|yR1-?@p z?*iW?j(36Y7XL_f?h*f3e6RQ?;`_uu72hw8ccJX(!Y_n}gFyT;HAWQgC&yEl9UlIYpo*cVRYE>F&-^m zUfeHUK|IDf%?3*ATA>wjt_a ze%U=ZaJ&t?p4kAAj$uP#V_{Qag3!E27mH{T?F%}11FmE-6NzYy<2@?wW;cgfX;-q~ z_z-v-@g(u~>Rku*u9NCaMxJf4445MMb>hS_NQh!U^Ca0`cl9?_HKZx$4dOkdx1MI1 zL@`*bUCFArk66ZdhVtB`JiV2tkK}#DGsXL<{{E`dJWMvRjOpJzOtxLg0tcy{!K!D7 z_)ziRD0P_Hc8mCM@saA?DB)=2O>OUnF}e+GV|zE~e4OeTuX=75pCEpR_(btZ(ru3P z%$2Of+1`B0>RrZ+0-gl^C}`gm2hY-b>W)@RhruU@y67i+t%fz1&UoQT% z_%q_qia#g*ytw(6Ozz6HI?cCadM}Ev5??L8MtrUKI`O~Ks%)Yd)9T;EH;BI^zEPYg zhCG|ZUlHFd{;IhAj72fzk)N?B1};BiQ4Cxjh8-N6S?_S%q3qxo-!A^1_zv;+#dnH- zAihidL-F0>@-sv+R*(D)QH-@;eugN;dKfO#Gnahhzg^3Xcen3Xcho z3r`47YOGIbtiKaKE&jdu8Sx*)&x#k>ddJ;5Ab0B+a&0Sdwq4r-BP_b`acv8(n1pLv zCMnD8IOr=U&J`|FxxxkdovYKvSHZa}kK5I*#Cy2fMZ{veKZ)~f_XlLR2DC_Ho?Yz% zd0sYguHCsq*`6xf*W}#oTOps|$T_gDivml#%Rw$UidO@#a;3nwVM%#-x~l;OobiBb z2DWqMz-Fr9dgW~Asv{|ISApp+4)nWg!GNm?#=2jDqg*VQ;Oc|zTwSo7YDjREB`FKu ztlIo88qPcP!E{#z^sDA(O3iha(~~^l8o=9yd3$)k^^_!3XH|F?R|dR6Wdm-2@+1py z2HUyP;-iGW7LEj~NDt+l51!^CL7u?@lU+Pm&P9T;DmzwrB2|Ba^CM4Ie-ni1uC^ps zf)!mPh@S!dt__$hZTMXhyqSv>T52=ZnXWeQbPtl)@JLyE08HKfKqL|5;R_=Wl%vC<#$7o#A-wW8n32me_7>^)vRf%Uie)mIX!76 zS>qC`S>tJ5msXvAH;_CP!pDt-*AVxlrC8;hqMq`7Vp3yenG>Y{a?X50r26hToAu3A z_Ijl@m-gDJCF$agls`dMS6c1o8+DXQliZWd#HyX;RD&0uO{T+GXIM}2Bw?;gKoU@U zTDwTN-;D=jH5Z6y;0dl47;rIQb+s+QwSbqFe`}|D+Nf>Kq{((Fd#B3Y7S_paqf&GSVv z@+3%a>FRH~#^rh)@p_f=^NrYh?XYrd4~X$F>8*%oR~1?6d~_S~r2 zx~NA1jZ44{CVv;DwpD6^Y#>*jEg&uNT^RCI5yool0%B*ED{^}Fl9mg-loS~5XALF3h1 ze1iJhQdllL7Pc<<-8Eo2`l)aOQ2w=_svqL{AdGtkf6obx-n?mdz(f+X<>OLHQFjQa%?+ z9-nxEEW`^R-RzSu_kamPPxW{%5{cjS721gSCHK2da8Ld6JBus)Zme(+n4tEQ3m?VS zO24xhgZJQrKGpA2+k9c&n&l+8hQjKg7q&x-aC~8{T8!kAwO0)5zYdZFd1)UzM)vI? z>4?%5n41yKzB&}e-A{E~8CQ?ps_YCY+;3Ei zYi${>HeRehD|VK%{VMxPQ45~a9Ye`!+#7ri-zS>S%Ks?uPq242zUT((D@DWfm7-jI zr6`XpDIc?cV_zw{OJ6Day}nX(x3jMl-NO}=FW9-UuN2*U_N}6q^{t{!`c~0yeXHnzeXGcwv~Lx;Q~Fj>1<$@!6r*nyRo1tPI_N7!J@u8M z41J~O*S>OmrD&+nzEboXeWhrGzEU(&Un#mxUnv@=uN2*m{z~~WZ03i5%Ck0yeprRE z-Jkx^n>x-Vc`!e}k^IIm3Q<_*m9DB-D3g7o^>U;R{o6WH<=jy$-N#5&;%_NN&PFwk z(fbu+#JbDK)>0i??lMN%B8CbVlt*;#r>pBK108bzo8#1S^R5t*iXc{UpsCrnlJvX$QYFT zy_^xboZR+Xnx6gCZ#Bj%n!ehIS2*`efpb45C%&bn)>cF7o3+DqV{Itr#s4;0abJtu zTinLtHds5YeZ}ea*VkZW|1DUrihs?2ogc@4hhIFN7yr9>{7Sa{QhsUMi~D|Q zip@A1gY&-@CE9=X-8RmCg`sjbB}WGm-L1Hmm*o zny<3CS5B5|-_eec1z%2|FJtbQuQHE!zP$bs2J>Z(mWTd^g+KYH*tgi@I^W@^c z=0l2oRW(LE^lK%o<(Au8X~zk*&5jr9UzGG?Uw*ar6zl4|E<*h*ZfkKni;r*Zw6+ze z+h1!(=;!>(92WeCe~LY${k0YLVsG=$|9!p>myT^H?ZUp5?8A9}-c~}gkT#3^fAQav zek!DgO3aZ;@=6uM7*c}Gc=J^?Sx^77pQ_B>;{QsPw8-N>|GD(|<{P?{Dqp!wWwFTW zmCIF*aS=XOG@^2J<%(k0S8i{qKKJ92${i~cE0B6k<*3ThVp*ZG$eLBAv}8Y4u39{y6Jb*S7W{LzviRL%55+Ht-)Ssre*A;++r=it-yOeAEFpe+{8r`rF+L}Li)4}U zyW=;Bb%-Atzrk2!_4sx1^vw&xR>d=OBwG=8I?UR}seJ@{kE`|hrJjpl5Ms#Y8;k4< zdpQ0PN=zhmo>C_wyI1TTWOs{gK{h*-imdQlzR6;fkxh)BYPFCrCqB)QP2@ z52te87@wmOA5nrcM@oEzY;62Q*oVl*OZFkM;l{iQ$cBa(vi@SM=ka}vMf4#x-I%W) zvL0f0BI_Pv$hsKwtmny+eTA;t$ESo_+R=D#576y%l1}HYxQkWE(;Z*-E7jLH1mT zAzLgq4B5gEL-vSR2C|TqWFUJ`vIddWnyE|?csojuG zmn?}Ad2xlvl91(}%Quzuh{(a`QmsTNH38YwiZv+F16fWS7Uo+8lZAPWImW~|?9Xd# zsiFEPF(LMd9k*y;+(?tT6XY8fHwxLcudl3ju8^rdalxJwTc;4Nq#7zkbLQHFaw;6P7$cusrkw+83H>e?o+X~_>cRcmfg@&u6GJK0cx~qcC%X#ZR96NpElEe^ zOn2px1Y9*RPjcc&xL-Rlem4z1+4;fR%AfCQD77*;N_8f?7I|qQ3A)xXQK?m3 zBzY2C9WYUn(yHM~^|y)Y@iZ3st_pelYD2#Ia-&l5Hpqz&!E_f1Cg^G&g#U>k!CQr% zt`;_Rkx2a7WiPE>__bRcs~Xz5nxu9XucsR7sqAFwbE@>Q_K};WtQo0qr9Obj>H=ZY0kYI%2@x1W#~PL3RK@PvbI5wFTTDB!1-&xEAm$ zT%;tw0t3>y-{rx}D1S@!4*!Itu6PagF`#Qxe%DW>%+iP@z*xC#zTF8=a81D}(qVh0 zPF4*8T`}-$&)%=rwvas8T|xdErI{-vDIKnD6!KoGp_fwA#M_0@th9mT?POzhb;Mk? zld}y{1G-ujaJRzq!;&tN{|2n9oPKu;e6ouM)1B>qx0Bw|rO9@({4Oq1a@+B3sZpq` z;|5$dl61Adrs|&}t81*((wgrrT_kw|ZV1>l}G( z?vA{*Bo&n>S*^WFM`4M;x=1ieH4jj!#^Qe2 z{1hF<69zO#0vi2Xm8~nSCaazKnxO$*Nyt_`b;J6(j{3`n>$D^C-CHoAI{hl!P{^zH zlxl0itty)@JL#>|-a2BgX44e;yZ*4Q!@9NAvz;unog{n<97$c(*<43ytJ>OWCbpA*Xs3GG$>+C|KK}-Lzt4{X$;d$!OIO(K|bk#-jDK3)KT(!1~QpYJZPm*!rvZcr~ zPPOGJe_Qd%YWbDop5~XQet8-fo`s-PX<@81z@8eCD})t}QAhE+;iM8Zg8p!{ zW4wwae6<xtCE$|Q-o7W zd8#T;HF3YYotn#sH9rCFSN%<;)zU6fk||)obqCp#0!u4@6=6X0y_NE}R$2BP$&)8d zCg^H#g2u76^7!S+^VF{ddEEqg&OrF8<7CRFg*{Rtyjr+z7XSF2t$^iJe`)p3@9snr z>*|2lgxhBESgiW%7skqWRnVCFwVtL)Z+^8cSyquQZ&^cmk~Io>^31W$j+?5Q)59(4 zfuxc85|D?VA}b1ndu=gHvW^?jD%MJ)=GSUlN%aK6tANGQeDw|tIIDAz>d$rU;OVL% zT}O|VR@0@=JHvU(lgF>MCPDF4X1HxuHd;Jg79I%4Ga<{Yq*7*qHPsTouExi?NXgBA zMyV`UQ{e$=AfRjD$>G(_^q;IYC(E})h3(De7kl$6W%Di|9ma)6JOxRv+LJHMr-tQs zAfF-$-`<9|)3|dL7amajpRe|`(~9PIsmPO5wu|yyB_7cDwhg!0Vxipdys-QMMa7lE z{j$*sNW(Q;q`2w7uEs7PPaBX{Ye+x2(s_TCtq~sO+sL2n%qjx9$8E53-mIhFs#fKT zPY!d_Oup*R73NDmSze`vdOca1$&-Y0QS#^N&Z)$3%{JpE%cJJYpQNfilT};aFgG8P ztGM)5)$nVT{dG7slGIU}aeRdlK0v9rI+IV84%0Q81}cAF)sU$?`Oc!sj^gP$dcM}& zk;+-%B1s*f8m^QiTREqyj{!x?>~WCi3gJ}c@2)(fl|N4-K2^MS_=u+4f#L}oi0oRs10qJCehBf5}2ZGOduJ;1M3)>gxSO8H%~cwMln`qI}$ z!f#Ql{BEMSjY6_?m>xdwGh1Re1k6zzlEe0I>le?@fPRf*zU(Srtu0Us<6R`FSF8R4 zwV^<>xTe^W`SgTun5I>1NCPu5ZWqom1P^)Wwez1Bjm5U8yAnF7^Tpwt4j zVT5Xn*U?8PXS|MHpxIp@Nr8M$uKHdeD=LtkU#_xU!|k#CjRLKD1!_rwtf)YKpg`U! zPkPQ(ol{gpfpnXzxF}cNsX#r-m1irEHyfq4bq%+~ucO$pa%EBZTGL0VRk=D=gxXV} zksYNruFkd!+^>*dr##mx^*7=C7U2}gZu6DD zK;x39Jh?8C)Lh-kRiHL^2$!Y7u|9e^Z-&kkxQH>D&kB1-$BBP4$Tw$Hn0LM|(xQ^_(*t{%u!m&r9simm$7*Ulm_3 zUxx1{UvHj)_u;S2sv7eoypLT=<7ql_6OLO->;{;<``qWcaV5g%(tMnMyPiDl5W&4^ zX}-q#+tbH-Wd9D=!d#@BU6T&oQ&5M$#48TpEQujeGiYtq-N4S<=)Pqi6F1VkBO;jH zePlnJY27dh@hdB^OuQr3;G@bpw*X#eAeZPFJ{GSg0Plx}F2LAu>HlaHIS2Y*c z^S`oitEafm|3+gMmI<}$f77;-tt!bcJmSCmuM2DV8ExfesrILTQbwAZMEBkZue^u{Kx8%RA?R-mqNew02TwKpj zx3grJ?m{kzA%Fkh$*CGo=a|Lk8E*7LtYh#XUV=_EO3Dw4Z0ir7qT3vHa&t{&b4f zb7|R2B|lyIV(Cw7?7yq+!csro&Wn%#^Z&lIHm6zk^CkXyN~ouyJioMU7q%o+bIJPu zc}p%%{i&W>o(ts{m-_jCmu$&-{@>PCvL*kU+FW=Xe|c?ILvg=CwVki?=k@c`DWQ5w zVklp6{Xbpm=cE_bbG}u-q&6qLm8_v8|GAc2DlaZ|vBrw!mzMbF600Xvwqy+@`9Cjz zVe0wXLj4V;{*u~4^^~lkB){eI!2~50>%ye>@S4@^P06c}s=ll&$gODWv6mMXIGVxm&uLq}J#D>lSCv zsD3W)L+==akB=WRmEoe7J??e| z1shPbIfYwsBbf_68RVvjA3t|*xJ7nnnTH@tg4f;S&K(N24puE%DKcKT3++; zavrRPbirxcypiJMT$dz@F&4L!LWiZdpDB9s& zR@Bp5^xB{{*T%Jfu-pez*O8TnF@93dp-B`P%uBW1q1VeZUPj?|0lE0_Wif){u?jV! zCU&P9g2UYWVB?}g!HHgEQHv*MQkPG%K`mK0k2Q60=~N zsb-D4g8hpg^d@_GFE7f;dVA*jQthu!?NuqFS*;*RnIsi@vq{Q+d*-@QEt>T26&KO0 zwq1%X<+xc947D+Il*_qDYQt$W#hivI%#MP}Xv^&2aJM|z#VtEsuKa?>s?=QYRlkA$ z+p2u={Z*fa(^Af-MfDpPb6b^ne(-sj%sr=>t^$Uk6}e~;$G{v;c&+@cN~1T!$pZzLy6Z~;*1W|7VWrEogW%m*`uIv+P#&_{IR z&Yp$YZ4unY5^`2#F}n$b?Iv2YE@U_7=Unk(9h%)GXWnmvw_-c<-1^`UZ0F1guVz&F z3S|aNEjo31^ao}B@u~aC4ABFoo*~0~mci@?+h$Cw>DZxB3(Y|DF1E5nGxMzt#p7)2 zN=7ivZFG;|b3bHGbnLZd*Y4@Rn>3gDi} zLoT_jY&R61m|MOajhMHwqlT<0t6VgQ*FEFx4it1hbtzx-f%1{2Hybqxh&6goM0%NaJ>7 z>vjE5Fi1~B$E@uo7MzKIgdA<2uH@z3GjAm1F0>%JCsN%=W5*p>|!k zCSHaO6t6kfw)1O_Szj0Tc(7T~S+8|bDX*Lty)85O_nWs}*SEpG&6`UfY4MlEOT#&q z6z6z{9Gl*{uJ2WQH*YC>wAEi0E#1E0r#;#Jya{?oz9d}6p}u#(qRGonIKZ_hi{>)7GX{51wW7vXJLTlFXNL|v38f?03A zzIf!%Yu)Bx$l}fGSuA(4_j$rSj2~$2-Q;;iscyGd?!@oAA3V1IXmsZ;KYaMRDBoiT zUUN^lh2cDx74>lMco8S=?SA;!r$?jfwLNlbW?kQg-7kdm4D=ck<`(BUW_eQD9(gan zj&A{ZY;JIS_qldnJU2>?(mDUg2;5(^i{&k{Xs_4YYgg2t*IIXXAFavhSbccuYb%z1 zXM_J==h@D~bzv=8EL!#gPi1ktjin~jW zRw%AK=w1xQ@zJ{JUUJclyROgQb}VVfi%oXE^FzI%+ZrvpYtxe3uQQtmg|pbH6e}&Xq!ypDoEtbdC)mxcE!tMZcU8O|{~vE}0;f~;2mXJ~ zGxI$2%rpCDU&bzblKq;=mLy3Ml8~g5RFXX7vByAp?b_Yuzz2cPA3DC%J9*~1JCh&0 z*9r7RzCb%<*WNb!-VH47|J%;Uw?5j`D|tXaQjg7t(p`SH@bGpyO}FuK^Pq>wN}cSW z^lcDmb?i|xiOzCi%ad&*ycGj~R7{E3x3;7kN++szaA{Wzm75FGeM&n7gv*z@42was z5ut7r9`1&`s0*UGPp9fAn1JIToF~*v`YvYEo!a+Zm%hnY-4tkYUxyPv7Hts<^=5%k zzuAA}hU!iz)|Y~8Sce&!>MtEa|Ja#zUmdA^FdC0zZF|rjpo-{9^70!QJxko&wPfA< zs+Z|Ff5wL!);hr|%Fq8Jm{TKWC#*2yximK}a}*|i-1=}(zwRm1?QH5>?BlAvEDV0G zY>@AZTRPoTA=u#ht#LUirPqJnG&flJe+)(*0_F;mRayIESjoq@ zo=EOCJ~lf$F;IE?^>sTgJGB1uBUcI2RRt-^@EmIz)Xb0wR7`EOTW6i=JY1FPyBdw?QSjpSHRg$z@$!Wh(UX~IV#xE!o%-Moh&@` zp4YcSffmup>IT&SSp2Cd5X_s^QKaNM_2IN)x5iwStLM(s+; zm68)p!0$J#9rr0Yip$q#g{KRH5?pRDuMfGCS13oitc=# zU9Gm!HKvT+`3gr8^=%+oSRAYJPK%WC;`xH4o zWqH^C6ncm=2EzR<+@_{IU2N+1Cex<*IrKa_ID}Ev7=5q$RKC~Ebd>7n$qcTvHzMQP zCo^?7-7WgWmJ<^;H~ymix-@%r%4Zv1{!hUVzKle}Y@g~*kKs{a$Qn~eMrLH>ykWf+ zo3n&!Hr(^-+ux|A`hb)J-{b5Wp7Q+LZjKKNHs$FSd$BsK4(s=7nvF691&t%fidL)Y$Q%UflRTFu4;}}*NfG?r1lL@`_S|J zVz{g%VVi4IQg!uf@~S>3F&Zrz0s62qOyqjdj#1*UR7g)m!t}o0kLm^(_RJ>UQ94@! zdJeCm2g+RjRn(}qY~+&o%%%@l*Sq3bi^S`%2H=HD0Me;SL3PCr^_o>iOgQ@iNOl2c zbLefh`1Ar^LryoA4*@vDYouheq^*ravOexF=QCM(O#dxWdXah6W6gSBy%ABN=!d!f zW~cBm8pmQeRyI*^0^X-Dh+h+g0F&4Z!AK)5QaHntN6)3u)Ab1eOtl^t{UvA4&6M|a zN7N1r7zEn^``(;Ar)%kzh;*)!x1_25>uUCT0APhjBXg#uMN|JF#|HICUCZ#pw-ox-^jkrXz@cfpR#?GxKJgVr3L!zYd)6$QmxXvDtvcaY%Ckm?uN*fvyK{Q+ev5 zdj{9Y9uC$k=INp~*g53B>i9k~)d^+*bi-VLL8MSa@6@r>SO-Z^6QqWn(+2<(qEBwH zpK_mi>v8Hyvee4)sTxt1gZ;V>Fq`_M$%fu|nrl691DLs_zvUTBju!w`c8j!mo4k~T=ZscBe(*3i4&Te ze&60JPct6a{gQm!a)zDY@1X0B=VOJsEF*qj~Ab#AY58SOA`GT#I-1-lc&V2<3akI<#Y=&w>4nXL_W5SkIz!n??9h zw8u;+Bjf1Y&VO_3!1aSXu4nNdd}!WHKhO(#Zp?p1lzyA?8q)>iVpu{Na-uVH<)g}gxuCw*c zbl9qLk7|g-ayH)udAI4_1sxE4S;eiQ6w5gxTU1}-IIB0(r*HGz0n&KY3GoVALsQ%N zT`Z78@o2@-lILL>8=6g6kW(82i4W9Gwsx?$pca3@%tHB{rgjn0P=_)|Z?IX0tAE1m z;volROjm1lNsdf#-J`NU^c4E1sePU9%yM@z4&Kll^vS2upw_zbl{&3Es-?u!$plxG znc)jLdzZb!-mN$3={8s&cN=|O)LU{Vhbn5%7AA^5dI}pS)w8$jb}F(ExH&{<8acR~ z+BJxpboD*xz?z^hyH=i5N5xX*(aQa z8%s>{EzW@6=wM81gPkS6-?&(@}DQcjz}wL+Q2%)wLb;#7TcAbx4d^x| zyu;GPjz!u$!|tPY(XZ;VJioE}i?Va*0TW63XC3hSr`2vT@LmW3N*M zdWW411<^3o-?5|aqh{$gXuk&qH(*LKGkDU|kA5e}EPjiuLhAQ%R0{==NbvARJr>;G z(5X7N_F+VYiD3w(JQT_h1OQ6K59JnU=pFhstb!I3CR_igw*VNa_n=A;kh5`sFJ?Y_ z7|rwbx~7`!_-z8yOoSNODt+v7=-~f0G@X7FD~|K3AvyTU>{#hI$dBhh_#aSp4eU(} z6jbOY^Gqkn>U}a_1LWw0WwP4@Vj9QEy}9`mV+G~J<8$U6H_C;Q%IIn;S26#-&v-B{ zfDR`B)&DX$bD-m6Zpg45MVZ`;IxS9h41IWl^N|mlU5ag|ocf%86=vyr3SmRi?|v}S zoNa5spG5958%)?kSJo8`g@fM#wmW@Ff2DW|2IX4S&G8+DkhP5bh3$cHv_4Khhmz)d zl`c;Qw*~jAV~9hVIv?&~pwfYI9--_D={7s;5ptEVuPXqqilcvAB%ST&5dL0c z4^o?)Zc|%|n$3=b-$FlJ@8t7Vxl6BRPEOUII2m^{uO>r`9hCa^ce<)_OKFH0NDZ?e zGoAK+npI?$zJx+!{2&|Lps<#RE zo3TRCo$S9DL}mcH)+{hqujo;no`yw@!%gxaB47IyRBTNJZ1DniX1qMXY9t*+77mrI5&k<68#a^gC(DOZm z^a(Z)z7xjNI72y8CApMyh|hLtz%Z|Ea19}$9HE)vxXl~1fpLHz(Pd{d%w!%|qTiAq;g{uW}ZpKHY&gzkU_JGJ_e<4>mO*7 zQhFUj*Kj3xqpWAnUL>t-%`D^kb$9;xJzo6`=%TE#8J2R8y%j-XztVx;;XT$3`Yx0q zGD`CxwrkQ{|aiDbG8T;=323?3*5P7ItUYsNX?T|%tJc}aA@6ZJ2e3UOR0^@89< z!>K#qT^(>m>WSdnzv1lu5&Rv=58e`EM!G9(#NQ71#e(3|(G_LW?y-68Zn8z-XxiO} zwc<5SyI-KxC7{6nmMXM60ZgbXF^re6iiCVve*}Ob71-4>5*Z5)zHkRT=c{16r@(6q z9KW-O1G+#8EYhp(D&jY!k^WL|mbQAE8mj-)X9#t-30VL2F3>BS)c+aWtvbMAcn!E)bp^o3IK3`b zKj6e?ZVCxm9CYvoCEWbYI!#wL+-=BJ(iaR9Vt-HnH1kh&c%ADh z@h(J$@x0e}!Xa7+cbj{RheKH%CO^jTWh3uBVVg|V`9U95^kLe(oL-l0@RJk#GT_Lw z!{8$T-)z9C4ZwrX*-emHT^Zbo(n%e`z@@35CiR;6!9T?=cB;H6MeHrQcW8qC9-^_P z6!$cjdxKe^s?gDTTtsjICn%U9vk3uNK>ww-gTQ_z&{h|Gk-P?BIvO6fR1Oj!BAm&h9M{5Z)(ot{JRy+pZ&csuGPs;o>zTGC9h)tr7*-vRhz$^#?(+eK%K zU6XntaFeTCa4QVXI)V<+Ab`suz}J__1^-Guh9@4+1nh^04VT?)#U7^!WwRB(8sbDc z3i0D6r21LrEhL+QvB(d8Hn;5m8hjq9Q+85s;lykDH>o4t@JbY^w=i;ECaqCYOMj!h zdb$y=C(s-?ou$g5K>I`b*|*!9)l7#dHNEayeK_JaG9O8wo96_LWUPOo&%#+4MD6~8c&QHWbRHaY^-$Ctv!NgN!w$H9LHY&TYSU@k1>Xn!HG19KOcUqy zY_*7fzf}&na(e?llTJH9u7j$i%h(J=eVka>-L-) z`GBAtRg2jDq^i2p_~;)g!jFj7S2*9@8+h|R`uv;FHow?Mb3f4E=a@q+C_$R28Rzgv4w;|1paFwg6UaPw*&_uADbYO2icpg1eZWh^i2Yn zvF9Vtq5<`*Fy|@s_XVf|=6BBJVb_BAhst0$lv+;aO_YBCQVxkITZd!PRiF76l@gq5 zDg6}lF*=Y_W)pSe^m_VmEbV^1J($tux@v%ol47csWafM>PkTN@MDVfw8~Uvwo<_O? zf`Br2feUbeuh3moF{Y~4_8cV2#??VPSYLndxl^CE-(!$Q!i1f+-yz#iA@(Xc77&RYy;jf`>DI zIq)uYo9PUNtL<5;1{&36Xy2;ny?P~D3bDNm(*S9&l4yNGzl|FB1O3tR4Y${KDuB%Y zJMdl*WVzr~a>2L2wKX&PKz*CNEw@Vh@>Csx%QeB%Fr?@Bx(mc|fH|%>f`PZQ*@4wf zeXFtSW1nJZD0CFA-%=Rdn)I$eq={WdZdb$kIuS(vF#^b2VGCO{Z}b%mDh}=XT;{lW zOcU|CsA_?(VmZQ{nrIG}CJZeweMqMV!H3zO zLj<+MjKR2~Sf0>XbG`)hedB>jdaeGM@y_VSxid7RzyR>fY|zCqEEpZFvOxz7%5p?} zDmY%6t0e$`te=Fg+m9~cJJYTBGp;bWerXctbhT=kKDSvLmnX}!?AYASy<%5q%Pc@n-2ZC+pBE$Pa zKV|xS$f23tiyrtLxj{ETQ;_L+8#DCUdJ)t`4-j>K`4El#8r=hOya&R;4;+pBUMD2e zZFf5DTxn+?G1G*7%y=XAF=xorV8Q9q*O?|1bRArbTA<%VHx=SVq%gP>=l?CZs%IZ_ z>8MLmXTa+9;Q0j*X0C?K$!3Af|10n-XFeZzrQEXDHDw2-Jplv0foX!&b6tV5yXcQ^ zxmA}!)jjQi|H0h8h;gt$zYcYouj-85>gV+NBD#Di)>8E7N+69>@)7Fq8Yf;aMAY!*S+}WKO0BSvAhtB@cNH zP@MiOI1cE?)o++|ym(g1lyO3m`nF5Jkw?; zc{=T{QbVmXUd}ix3o>aBdKK4NLeT3jK|j$A`!lbufRHPb39AT`a524Iy{X@|CnK*g zBdmk&#r$Fza%SegCoYc<BEk(V8&f!}iAFv#3;I!YU>SNu>^5Ep#dY@u#7nJ&9&t*)IAM zy%YkViT(!dZ{^?#NmsWM?l>dvAUgT^`Uk@dEwTZ|`xj)vAJTB`baUM)q)c2+<&~vt z&d_6RV>b=TL?k(wdkOW5Bk(eyruF{^_?cYrGzUB}AGnDEo$F!@F{VljdnqJwQTo*$ z1p7vA^QmgWkZA||f3p*^D=1|rlUponrB`k@y#Vk-C>KUJowkHgCOV!FBUDTomX`}l zZZlog9kgsJ?E25poNJv>=2igwngZaZ^S~X-sxKn1Re-MmJdErBpLj{?Zse&(u%0jV zk)-}Tlhh6;b<=E4>V?2nJ?BFySm1)-Ci6e#f;)js=3j@VH3PP@uAu5VlF~gyYcptr zq~0B@x6kbGp{LOHf60EPNG9@-D-3SDAxHl`xY`^l`_1;-?h#tNd=uh(3{Nc+r99hTOBd_L(!o$cY5^gwHH;>6DXh5z*wKG8a+WU;4m2P8r zwyk_Bg(bp1yS=nDQX|IUW{8A6XvBJgNF>z}hg<^gM41Qv7vRr0LZ?XVfY!lH{HnX? zKaO4&91^%t>ict3|HVmtH{dVPeEGmT*l#0$>#fsG<{dY{1VB4+C#)%pyOfz#Dr&HS zeiZuv4sxL2b)1ltU9)^r7WAXHX<7rIsPP6OFV^T6W4cxW|Osm23$@&ZR47|*~ zU$VpOKdc{f*29eN0U=P1$w1su43*{_WC~AVKH^LXM%jll zc7QEbSe`K$BF+7hts?1l6v%XAu=_&pM$dcM(|e%{5Lvn z0q|ptxY>w40*F33hm;HZkqtyMH9o_v-w7$khma-jV)tPn;sWHsy{{LP^hbXL1rXePgnnQ$bM($eT+M})(fY1frmG}KjcC+Jet{1&|mfk>*I zqK~NvieiihDk0CfmY#Rb`p*yz8Ak_vggSqR!I*-%tUJS2g^sN#_hEZ5(Y~4)b`o7? zEb3O#>1h8O=rPBo>F+N1NryE0lKQV~77wwOung?)F*;3YY@jaKuOhcIQls;r@#0Ke zC-tZLQ0-i9!hny4I04)~sj3)odUqInz1_zJm&zDs7pFDK8gNoh38(HX-)5T5UBK;_ zNc<}C3UPpa8^N5}l<{AV`cR00ii!NLE(>lv9q?nh;AKMKAJZFG(Z!cK;5q*VoU~}n z{|r8w%sZ*mSqylllRA>E-$SXN%4cg7TDtEP;0zLq^OU^}be*Aj0+^Qskd(%vf8P%q z7ApHcfYWVU@Xc_KF8E4}Mi%IefV)m#4!kWTC3SUHDw6sz*$lJP7QH(LJxozM?34ct zPRtH?bU1aB6q=C$6x~HKZwjN0pA=5r@ihJ>bqEzUFlg?SJyySrpmn93MtZgBOfI7S z3sa?P@USiH9DAT@0!`7yP>p1?q8K4m4{E6c??EWv8feGLu>xX0oO%tdx# z2;{?Tqf0n-{)63i*aEK_$?5Oj2&e zo7Dd+_y_+N;7k)RN>1t@P^>GZ?qt*LR0T2*_>%>|H<*x@WIh+XP}%=Q>bk7zR{;E+ z6b)6KnVwDN=R!EXtiLx$EIE#<%V)Jt0Qxg>95YGgvscH@wOGGL)rW@~5ZpO2)awd? zJE{La0KbSp$XLresmtY451HKmQ|b++*%dSYufPkG{clW>hswtg0#UkNXoejE`FTt~ zjj%s}d{kr_SF)ZB-!lfKYD?L^wCU#zY8-S#e(+{Yna}GtL*VVg;4lrPn8v$_*#oMj zys`A#&qGsWA#f*3H}(6Gp@dR*!AX4z^7GpP&rSV;j7HzH6*2E7h?5r_a3^E>I}dYe zaG|tTi1KN7m;*^tjj@>j21aJ72`TVQ6G8ryBpxyESWjigFDU(xT=Y^$BrDhkQ-79; z=@xL0~`(SCIk7kXQqr1Fjp2=%bAup-YFV?nC^4)UQDrc^uxZ7Xb$&wb~?i zV1@RnblutE!+Fdc4!B{!UGM->>7}5d7zg~cqIv+YipuQ({Qc{gD?W-c0CTWF+wWY& zM(TOs;nWQ|@FS*)9D`OM^_>{QN72aLc6OLa>L&9+hd5aZvMQ#N)KJIIHd8dR_-dry z8)RjwG7-JaIvBCD`W3y-_WLiIkcNgkr)y!`G8iWGNske1cfe?_3_6&h3i<`B&LVOU zJycPMm){V`j$mQf#VY0B*!%Cm*XM$la=;%i08SkF1nf?X(33_sLOzhi=1R!xplE7| zfZdUhZ{B=7th+17O_&IvqQ2n1D?c{@S+tq?5WO_|Z*}Adlvl{LK`#SasavuB-gTW= zmy&?$>NJ}hjD$G#aZ7tGDx%lMZE`#x>%T^KFas7 zb48uviaJA{Rro&;zP(*=x~mb>KVd>M9mBi@`X;S^+N~;v!3(HyT~9~sQBaNB2qfA9 zn$A(ccBX`xP>L&pv2q&95|t6Moskty;!dR;1;B8>?} zVCuD+D$gcy_t5LUq$YM^v~mc_@+6eKAx?7L6i3V}x?HZ%NsK`z1VAOqe!nbGOva3X zcbK9-Qpch1`s~ImE)1V*`4DErAkIxMFKGGD6jPC=Vatb=E04RKmSFi!Rzgu43;9A8 zFD($am<1V*#miS;` zj@DE3HTpU|HfKNRG1i3ChL+mqIRhG(-F=(HG@zbcV+Oox!?qJ!PQy7$MTvBei(vx5e75E*&V36i4cRNnjq!w zSf5-(wOJV*#U^84N4Te0wegCSJ=tW@auX7#N>e%QRVvcJ_GYyJ-~;s6`d5U%KjnyQrjO_Loy`;K4y*?C$ z8c$Ddi-0%6-Vn-se>kyoiiK<~eX|jc(ltVd)lX=KQ zmSJbL(cWj2SGW}H2|LMc7zVu`d<$(Ph)_Mi^~Ue;JYVZk}%E!o@SA&Ox+Oi`5F9<#(s%nZGc7J)v6i zzaugXDvhVFKw_*Wp+_D^umS!vE(!2YS-DUfPH6z0$E?<2EK_->jLnI@T4LR$bZFxk z>#W>3i&$6^5xN^^QgRm&Lz0ACWu_xCi1kHfI{^)>p|Y1_ni$Wtd5RHub!^tI8{M#_ zV6D2yA?c2}jT8G6@spadHa7>HV{QbjE=_BEk*LjsMf)VA0S{3EVeng^s1sc_kf5ey&DEW( z|D8b3=*3$!;7b|KpM;RbyCzDupFmX{i%@d`R0H&cp3EF-kkqF%O#?RXT|^kBM8^NK z^!F92B~rsfQlZq(4s>B~5O3X+t+6-4&%$EUY0b>d+Cawl z=V;+}+rx4m0q4`sdI18~2khPIM6ey~Q`pi;Jx8#KP-z>XtXI+kA!k2@`ivoyGlJ^d zV?14&Q$1=X?>wiFx?jbs*&{5xu-@GwDII}hcw>+7vU;;UV*^ZeGvIZuN67AO%TvnP z_Q~DEr48G-uuM02L=LcBb7MK8#<5dJ8;0Fjgf>6wo^1MbzpBaV+G27lcwByhV!O)x zSnT-YnfTM)xoc6M z3#~<63{t#-TByNl)ZN(7-Wj|@N~$)9gZh9TSLt}Qn`wJ4Ay%5Ib8dnyMBbXxqRf#C z+{F_FcpijD=Wh?CA39VZmKWhTM}e~j*y}O&a}d1qJ(Y&v$Pq7)$T)9a-q@T3E zBZs%x@3XDgwA?KULXqjul+Vsaak1DQ;?m1ZFcp|=J|y<1VXUhL53!}rM;L89AnB;m z&#{wRFJ}7!jv+dZg|DNTj~pX;@^o77#~RPebdrtL-QQ5YeONU)gL0olkh7W%>3p~K;+;)`mZ~d1ux95*#n<3jFr@EpZFben->gj#toA<+a4TNH?hgp3KIG`8V z;qfRj^-#A#sT3!Q8ph@)fro&xkoG`yJ&1~e`i+ zRp#MC7U{jtQ5oB)7s1rGU<(#?ltwkFrI(2Rb$a8Y$Omi|m+UN*7iWZe`l)vvI;)TK zH46jkR(cPc!B)_ooP&C-stE~Uh{e&EFY90lv%Vs~%aw-Tf=KtAYHA29MsBuIVL|Le zv)DCg>1Di40l&1=2UTs%-Lvz@!MBUBLyu#BHq@RLG;~e{c9bavy?+6n-e$PrMmah1 zFq=yBw5RFEP}V6Ah8HqiFmPzyT3S=hU+_bL!o<)4*~Lq2GtGK?Se zqZhxE*XT#%jly0Pm!=U@?Wr&hWYUBUyZ;eORw$P1La~&(d@Q6r2or`(B0r@{IdR{E zUw>%o76^hQ=K*Pl9Q`;w;4iqTF`kd~Nl(>q9`gRfqGq6a%VilHWkF9}o6+>NK4Sj? z);I~)>IuY~GK!_dbMwOfi&*?Dt1cYNv)E63a=BQDZwUI!Yr^q5n}C!z3_fO%E15yo zQ0qoEAgY&KRF%+F&>sr9Sma1U*l#L#0!N}D7_ALJgYpJD1ni}?o?-;ILiM|ZMFJD) zfv%iAe?*CS)-8Cq4K0eLEy1yy!}cw@4zper2;Wjr+EqiU%>1$BVa!=TPK1yGV;XX* z0LC1Ek2=j$8iXl5qD<6Sp=?WeghW4NVOKphBu8(of%$-O@w%>58T(V?l^Qv zHNd=6z~U8=!QRZe*AWgTh-W*7TRB|e30VqeD(q&!voM;mXDrQqGS_PQyBXDk7?m-> z3(^)sy&t?TJ1}4*T#>cB@Ysc1K64miH~>lcG0Vjm@&ycH%7Ay%cNtoEa&>LcJsSHat6Rg6>;9_pwoBZC0d0?-X+1BSUOOs8Q_mT1>^M zc=jfFhA@$=OPbQAF!P091B=J#OV2BzEl7C+-Cir*&G5ps(SePS!NN* zY&(+~@F!;LyX?BKhVL;eu%Qo3!3(Tw(79U+5bzo*|WS!_B zk}f_c8x&*Ard}{E?-%hW^xx1taQBJ*4a^9bR%is&<`|7FEWfHs?LN-;1bVV~o;Pzp zl9i_}iKQGhFb?Lm3%dq5^qP@9u~K6)RyK8XEv$9RV^h?c<&tomu)Sv)rAv8Ul|Lr< zfPac*P$(7&#nSrV8f%E&_nDb+!54g)7c8? zGoB3qyhhW{^1CA$+R#~Cn##g~l?Kv*cW=eeFSUbLb~#^n2WzwM zxV!zT;ga(XY6@@MX%1jxM+js^@r@3^iZIFT88yv3g z!4NqOs=XGR$uDfobJ2jmT^RUW)z?z`I}#V~g}a@Pw6fbe2Ee!jN0`F~KoO)MHa6C= zoiX!!l$j8d1Gv8f%<~7B`$JfE8V~^k7ItOIl&RD+(|LQq{ZJ zBam7)gp*>!JT=Q^tmXhR zE40Re`@JkDdB~yEMLlZQ!w_r|GkbE&@X9p9?xwTZ*Y1$QTa`}RQ zGb_Rie<;DT)6Uuu5nFTOZF)!m^)-nhm2 zFev}$(DReboQ_<@oMC{-ts?fP?;=V0f%B5~P`-UwLY;BLngMete-y67^<%m(OP*(2=~@24fa>=3IsModpBtI43h`Z95Z+_ZuWFr`fjHhrRtK zW}1Kmel85l0aA%oPdUE52AF?=(C9A^@EdCBX=FHQP?u&*GvnJm(OG`ZEOCYn4U3@E z+~z`D0)8=j@5QTKWY@>(Z)(3AvcUZSYO)n<1v;CSu7UhDO0lyPBG4-4(~h5Fvz_Nd$DDs13I}1tm1c*v+3fxow8xvT*hGD8C#xQ88J!Bv zHbb>$F~NMKH>@DOB!%ifuCCp5v;nL4xZ#zY1sx`+km-=ChuQ2HmQ`nhHF`QNEh?7Y zx(j9JFsPrc7)-8UM`6dg*$jj7|Io?(*+t?Uk1|f~&n4#j8h)H_PlcjbWKTlCZCp*+ z5{&XpMKbt0vqNo90P0|o8~AtkU*7%6z=JDWyH(iJ>v&hp`p^dwNakCl%W+QL*@pfL?uQUJbl+c%a|5S>up`xXP{k`4Y zceKGg!?8=;z;k@^DYH4X`uF4BS z%}wH9&JWOZ-b6d}M@sgA=c?f6V3FPSYtFi?3+PC0Ko0zre!0xKLheX|J!@}&$?x|E z0*${8;1XvM!sGEP6HuKCn4c7lc-o{G7ZK-a;%(xw9<=^ws;u5kqO1y5g(k@XPZNKp zr%8nMbCZ}DM4EZO1fH8jTIm4<#{p$UH%YUWSZ!)3tD|*`bwfR6-Dy>~EbE2p%DTzA z#~N&1XFXm?r7P>r^2(asNUUeAesvLkSo?~rCaG3e>p%rnPFe3-Gp|zCerrZ)v97kR zvHDxrT8B$}ta;_cnq}>>UbcQItE_LV71kG3JaxpX*~Hg0!a5l(*7H^^>wD|hCP~&0 z9%XH5>W_*Pv9@~94Mjy}#8{I(s!5_%qKV>bT+?Xlko9LqLWUyO?(cJJNi7B}xp#ln z$-nt^wC*MMpT}yT*S}DE=9Ve!@05-9%b)ju@oZ}I zN|)OPrXAeNFHPc_#HOmEQAMMy9kD7_ti+6>O#@9543m{nI-_bvk&LuRRn(VJ%-U?# zzE)W~Gg7SW8I>}sXVkHN%&5{dDk`!`e4Io@M0uk;QJy4LV_65S##SS%rPV@VIaxHK zs5ed(WwXUJ#7Oz;^nX2DCyK!&rl^c+8Kp9=$*7T0zKCiPZN*w8Gs>6f zGAd_8R#VpEj9S)4>pSbHwbr`Bdcazj8D(uqR#x|9$w;^6SnaHp)-%=`tDE(ZwaL2Q zTAfkCDwh#uMP(GX+FGw?cr#+H*R4I7V%=<2v#zq5TDNB=TO+N3)R^5uapqSUwzY&Rp&BB5v07Ud{u|{Y3th=pVR#mHsHKeL!#PdtEj$7Ya z^{jdswXK)i8NW)_ z2iE)iKFRbNp`Z0gW^|@M)8AM!QyVL*Xl9c6)knaa8J8JRQLF{lf{M!e=o)N~t!=r# z^46Eu@XSC1#5vYGRzvHp%oyv9nqrO1OtB_dHLQwOU2CuPmGxppPi;?Tk<6l2k<3Ud z)#{QNdkrdOE6e&iBVcvT^jQpNc8QeDew3O9G)WE?CRI(58`2KIC{?~Np)Yp3gO#dIXH zYp0g2jDD|cr`9*9rsC_`sa*?YNmSQPx3$3R&HvEAN1ueshFJR8(kpFEgn%&t{^&k5(*Aiw%%Ycl+Oj=u{F;RCGU7fr1R;kP@_(L84wANw*E{w%E^Hfzh;pBAa9CmYxh?Xe zaQGYP?&0TlMvfcG&rL|B!q4qNZQqP%|nn6y7|?(;G~j<~aev z#AwuGsQ*OMcAjOq-;zS@VZtSQ+;%e0Dfz;rMx^J4Pm37kJjW8(ojjQ|FkYiy#8IoM z(%AGBEko%9Q5~$4{C5?XVZ%6^fX$K>XRmx|^oRjX&ypM7G7+;LDX~2278asY|Gv+*ryi;eM zY{xI!j8o6^ywj&6Iy-&=GiHtXGsc%@t67sqj2XX>l45o{h)8w(VrdE24#||)lrQ8Q zd$gXskRK;~lOFM#_zXNGtO;#e?!Q8oH){i(cK)xB6_{+C*80zBR%E&sr~mxdG%G12 zE>3UzuaK1$+?vxj|0`q_NO^I3@_&V_iZolCe*a$~uTn*TG^60ZLRNDukPK8lNHY%p zXCJC=q>Y99(7%GL0Yi03ANp62HIc1c(ue*PWG%A@y>K7;SCF+KP%i01{|d5>(UKPK zL;ni$YRIcg`q00EtgFgi+K2uX86{1g2D`)_m*vL1)ku*9cE3^Q*SsRh%Jw!H- z;-oc3;qQY*F7_7{*_f%euc)L^qEgYQm_bvmA|%XYQ8&&O)vbr92YQMcG+oq_RYeWs zc*Y6iMZK1Tnv*kH-vj<5bYP#*KHsbowXvb7U7bW7n#Dk9CLY-)o+1;(Qxcl0;zaS( z`dU0KCX1)t3*x!Gs(9{PD4t%t_o*eGeqF@Ve}H%%>L{K^`-*4u2JyVsRy-dN&-~Nk z`IhJPNPzeAe(VwPoZ>q+qY>T{65-F3h~i}=q5}VG`y`?nN1@y_o5^m1MD*_|5s&SW zh+(TF;`tg9@iy1Y9ul$WkVJerS0dKf60v@WMC{CxhyxcuafGwiNM!73i7bJf^{OEf zS$(!dUcX-=J8~XIU%x~SZYGgW%yF+5(c)iuc>yH(0;G}rt zwuraL8u1pNDc({`#9MZ1jMt=bcLTvhSbJTBfk^Tc~ibMe;qiMJ7Qx+cIi z1LnFX#oMx-c-wRn?~V1v+rFuIZz0UBJH*@heW-N~sknQNc%SGi-l3#DjQB?S#XIVd zc*pD&?+agx_oHXTJ7=VLKkX;p1;n+ej(C^U74H`p#QW73;>{wB6`jPpt)h5$oDlC% zJ5d$R74N>`;yr->uPw!Ue3p3sTqfSrQ^k9>w|KKj=VCy-K@PWzV~?f8BH~NtIc8lLO-64 zwOS>8r|xO?@nNQ;&*p_@%61LzJ594d*Fol1}qof z!%M_B2)M^dV|+XDy#manmg0M(qxhzf{@dNfH!WR!?;jH1jOpT=MVcQI$0x)wZ;SXo zdtH2sdx~#qG4XxLcI03065qGW#J8@8_%?PC-{x-O+e)5yR1@D%jm5X8hWPd^5Z}Qk z#dmn6_P zD!G|yzeJ*L87EPlh~xHV64fnMqPicKsJrm* z{enc@gMUB#9{_GZ35goGL82brEK!43O4JjFBx>j!i5f=SBMI|dq(qI`BvCI+lc<;a zOVosh67_0diF%!M-{k+)6u#7}~j{bWo z=`SOVwQVHo$7dvJ*AR*Nxwk~^e?+1Vc9*Eb`2EIp9QZ#6O4RAj5_L8pQRml4)CK&4 z?V+_Bi$5Y>{NBUjk4_eU?EB(R;3&hCV&X626MykY@t0~Y{<4$AU!GGTEA0}0)hzK> z=ec%A@z<>*{%cE!zhNKoH<=^;W&_249eynbiT`@`2X8xD{5Opfe}@g?@02S3&S%8m zb&dG%B<`MF#D8}g@!xYy{QVY-|A808KcKbvABNL?475FDp7@7$692H};(wNO$BY*L z3y+BZrQYJ78Y}*H`2XHf@qc(y{2#9p|EJ5uKcBoWA%EWz?>geyIzaq;H;Mn?B=H~i zi~lI`A0t1;Bbk4bbv$;?jX@m06VmVL=W>w^oT!LSHAa<4n65o+P%Igv+GEV}<@he?l0_j~OP~i~? zR30vYtGmOut8w_6Zj>&6neVXg$)ZIM6+ME|!IlR)Q= z66o4f0(Xv;Ku=)qo*;p~Jl|hN0uMIhWYTmAJj#mr$7~4UCg1mnk&yZfsN7E!`!Rr$9Ik3x?OH3B9DFCxyhXOkSwvDNfPTlCb7{=BsO(|#1`2sv8BsMY$aP_ z>r|82Mpz>@uOYFm2T5$Z0}|Vbuw8r-d)E|+y|0+W_OB?hgC|Ptuu&2_5^2%6H4^)B zRf(OmOkzKMMq(GfFR@>i9K^t;(WU#u5>?%tIJOC%~B=qx_T0K({hRH z7%y=>#!KA5GZHt1Z=-ul+^a_=Zt`%6n^Q{SmY$ZlWrHOytCqwqpC@tO)seW33nXrH zHHq80QsQ>Bm$;p)ByP_@iTiDW#2qgpaepq6xYNL#;h>0|A)Gk^X{Sa>d{ilkkDe;= zagh?AFkIr3vL(L6*Aid4j>MN;An_IYN_^#x63*`AU##D*_v6ICA zv_;~vMv32dLE?`Ml=$NZB>vAy5`VgjB*3dCcqdANe~BcN8Yc-=-;sps3nifz&-GhN zLZkkY(1Ok4T1}UPHl-w??KDZasi!1#I4udc_LGF$awMS(VfxONg!`sSLjQS^@X!WH zc(lAEfDaPJ^p%8hJtW~Z;HK=9g!lSL!W@x=Pa`E^$^DYB_M9aA)Ls&Ptsx1&;s5&< zNw9lz*g-Q%j2S73sRJaj^khk_7%7QWI!j`W36fa5m?SplxfNH3%97Y^mL%TIu`hk^ zm&C^tCGk0~2|h{uV5TI_+$M?3CQ9O}evn^K zT%wxtJusg&(`q zCeN57$+I>{@`4GHyn_F0*%oE}3zEF4pCoVTE6LlANiy?k^6qhxyq7qCDI>{;s!8$@ z@^WmjBwuVS$w3w&dX7m-?30p`bV5>!jgpk|J0ztN=N?kWDc9|hlnz5BrF%0;=|4wO zp6M(p;HH#k+epgzo{}=*fTXc zzcrSW(^VxUd!eM{a9lKNzEY#NNNVb7Nlnj^)arXBwLuL@ZNyrurVS;v*$zo<_l~6A z&bK?*_wLU9lG<~ir1m~3sZW=X)MuwlD#EtZh4GTQ>V8Sxi{Gg>lICkEX(gIUS|#>< zu02K48XT6iCSOQe#vb=-zD3en&5^V=110UoPLkF>UeY@3l(buCN?PaPlGb&Iq;==p zUEL(DcY8^@ha-IZrAylV=OpdH{gU?BWJ!Cvous{3Lek#cCTZ_>khB@^OWOQ-lJ<3` zqmxD2WSAw}x?%a}IE;b^=WjgnQx6AptA>1#Q`)>TQxGr^Bj#uWTADpyJzAtsA zl$ZaKMc~VS3CChW6m(aL%f#efSp@+cUsH3JD^n)E#$`G8{5O-Y%={j?&sjWWa+&{^ zx=g&XF7Xcgg#YIS$RuqtFUun3i}p*&&=l$&Ott}e2-Z?o9mxkR=$rWwoKmh`-MMW z&d>dpdD-yhThv!oFw>0569q>zTg`u)SxxOS|sC6#&&+n6&|E17#R-yO2*UY@f%RF8AYgTUPbe=ME z-~RdG%Hgv988FnN{;BmYjo?bD8UHNjGEaq_N#nnylT|o^(0k?;{N1$8J@X3b7=LqJ z>N1_4aJetTIb~UV{JgAg_OhZ}Se zClN$qWS1<+;-yS_42L?TNV)VRtOLqQB2abHMJlFO!|I?B?+x&;$^SA^rsw}%%f+Uf zRVZFbr}fIFN07dUd`3wuwc%w2ia)(E&)0G_CG{I5ffX^u(qpA$dJ*!4Rb_fAc_>XD zit`_CjC~xU*y<=gJ)SF0($dq!oNk@K?h?st!j-@pyd)_>xODzkkQhojBH_rU#Z#wF zUA*bAWY2g<%hVC-(4Qmye;)d2&6+ho{rTr}F#(S!!kDh%JSs3OQ@)CLCb02f3)Uhn z#@73V5iMjmTR$z5;p%}0M*5>v1dg!7eHXIr?DLWxsU?_WkBstpyvh^d@%SPFeh)&O z;SrHOU*w2rP8f?M2?G)p6(8k^CHr2l#3seWjO1fPMEK+KIomHR_(bM-Psq0ACr=Wi zNz3C=zVuW36HES5Hu9AGyy?#o#@`c3jJ~~z<^L>^zCW^<7ZZZS=*cxxTo zQl##t5#C?z6|)Z<7!kK=(@`l_w{G2Ha&*)2)aO*K5+nU3YF&579d}&Ut=n@WJnU9J zl0T1Ddem^|d4x$BlkMk{iWEsoh{cLFJ}I?GLSk~Pq>qR@c0M*X_WZFut5>hyla%ya zQmtAgqq7ekI`ns-WUXq)j#QWA5$gLxBmIZIU-s_1?=D-u{JEqVGj_#T4?p~H)976@ z-hZsmd?_+Qb*n$pQ@`7==1x;B@(jD`s^?728%MkP$uk-Lz36YgScxrBxkT)UgpwuW z<;<_Y{(45@OQ!vPxWuz+-yb9Wf9%`x%{Sj{A-92OtP>&(v{KO}Pd*oj5TvCSa0tjQTvDK=}&gD^{#fv3%Jot^K}0z#FM` zWX_1u{KJiTl}JbWsagJWk-SHZj3zm!(?sY|ud0i|k^bPt?6YUjW}Ey`Atr9q7yV~1 z_+nx%oIP6H7l?=mBo|K}L64$iN1XB}_@7NW{(oqD6EG>NbK(C~RafslJ^Q}&%)qek zAUnI6EQBk8Yi-}qMlIYab;DCrmFnTq)#<*wENHi)M6$Jzp0TGaGfSF-)av-A-p~C=8XO!nlh>@d@#b4@z4g{xZn|;J%{Sk=2Kc|%@PtS(90|!&s5UV;P~sv5=Ye=q z?4a9o=(L_C=B=7FtC~J$3gzAnN@3wz0R4lTsW-P`DF%zB%lfY7yjfVL?2k3_+7x)N zx2jd@ihe1t4V`L~H7Eaau);QgQLz$(MN@P+?n0U)8gYbdn$SGD!Jv?}OJJgRPzES#1uFNTaj)e2iJ4NhqM&brBI-RM#RRG*s=2#>uP| z4bwznO_N>7UF~!wXVHbSoQ}1dedn5!UZlx3tg|qr8_ak#5{*V9wbYy8kbm+8%NUJ- zaXXvrcvhUQ7mQT9!bAO?om~TigCyWh{9|Df5(lu{vssB-)h=F%#ds1Uf>74d8j5bG z2#W=angyI@QHkhjRF%$r;I#~ zBduvX2O9+fgi_KRpXfh{!424zfQjwRSERQUmN0jjP$hVjw)Ax{$4$dt!%|?Njj)AQ6UyL7HZF z5+TKvVrvv5jg6zv6WMt0EwXVp;OH&u&T_H2N=%SPWdd6NV*2!h`z^~ct4I{dKyOOC zqT5}k3X6l~)=#R$vC*SYCr-R2fpN53&RvOH%m)}r4&}GMH4^7FYsew^iyS?KldKMq{rS(w8QM5`6yr?HM`ZnWicU2i|8b@A zUF8<#7NUr9*V!xFg zf5#CF3Vv}^Ih+=VSg-%=*s+r*!9Qwa<8ebfE|20kP*7D(0yRZRbbkQ4OFog1 z{sD1s;s^{`2e>l{wc>%#uasec`OuK!_ITE+KvF{kpoR?*HXT;nZjXck*;x*e2>)oz zV{M{M2H}zzRo9hhB(hdbOS2i8O&*2K6lz<$Oidn1jT#IN2MsMKk0Qvu5|5h%S@)5M zj46*YrVYx?rdB})2@Y5~{mcC*Fpzz>%5JHuh|{}V;29Z&0n!5%Rm%cCfL;xwfqDTd z+jtxY$0;?knlO@+t*qweI1SB}%`wrcYF4(3dwE2ROfS$eyb!8Q=Vg`qdlPRZpzv7c z5>ug=Cy43nv&2~TNwjFOa6zy8q13a0q>IIPpzsV)0R>(OBpijp9%77zT9nlHOi*Vr zP7AX~*}c7{|4g8u zUIqz|Bu+Oet)duEb31k{TC{uj;>G5La*Bb8=lXMJ$F5zcPnVS~Sz<~OlNV*slw(yD z*1ULK)lwFiwZ~tJzqXb!BEAqqlvU#CZnyH)s-?=MIIaG<^7AT{>AoT3RcX(@lk;qa zwbHs#c?YLcE3K7PBBuhg%o~*)O1E;fbkwk^wXiWm{#m(rP{~*dQE?^ zVll%Ni!EHZW5?XNG=uHIOD?!itH7v#s}g;*0=FjbE05O5p0-7;5!cB#a&rw=Ztm&R zSy`&OXp!mY^Lx8xFrfltF&b_($-X|nzq{M(HT{__tvQ*^ZQ0Ohz!CrliHw$Q`t<$# zr%c(mk2uYVI641yoXL}kLxD#^hAT8;cf^2){r%?Vsw9Q>AawU6CwF%EeCB4KSI#=* zMrEn$N^7AtKb{s(k3SHC&Zis}Bq&*uut? z0o*uHeGMnqkmh#or@6?K%eq{MKQl(<|$roI&BU$U~2rH;em zFUrM=8+XcMm2Jvpcu%@f+@QSTjm2%WzoyMOFy%v$QkU2H!kZ(zH)z|pYYk65)gZP@ z*p#1dxbpKq{`kD}T3au@)LeIVMs99i2LhqR)@}x)N=zarZD7^JEl=d+2|U3AFp`p( z3~ku#i0Zb83?{P$puxHE5{>G5Bmx9+>*2(uo#fWlI^0y3%QZawf9|kuTQp{~MWeRS z7oENd9%;Rx5WHW=E1tAi)*@WWpn4A4_UL*sB0EX$hYR$vvSo`?O^JDwrPNZrvJRP&kzEJbwcEYk!6C1Y+3sdAw&_&d?jU6xrccTeQE*6g zQeY;{2jqlQ=1;LC4~1!{sQQv}B{nWjmTgGJ5%Y9xoMvIaF_vq)K+_5z*?w$hvT*pl zSX#@Ap8@jjWuEk1F!Z;;<2PZMGe=wmJv~o+Un~*74V))_0B`m?;OHNMxxWuCeh|$4 zWpM1};K|FukC%YC@lPqP3(QP-A^k>R2H%`W3iAnbIZlBF0E3tR&$xm=1c#$N%J(M| zvhfhD!Lm^)r-QuZV-vEFuz+vP;cJV?;R<5m%MS|RD^LJvEs4vRhg}KR2 z3(=VYor(4CMT-{AUpRBYf(6TNT1v4u;wbEa^y?R=~Wk}r(b#H#o{t! z&g?O8vP$Mo?QZYh*Xf!wXHNLwr=K1?Lzn69Y|70mtV~lr{q$4U?DNhmDe3L~n60El z&RV8V|2i#sK*>{nn%I{qcJY~l(I<8!1Neh_1>%5R`AK5W$4kKmZ6edDi^LQ7(R?tm zzk(OlUi{(8eflq!Dwq)})7gLV-3le31hgA({4Vntk755(K4^aOwdJB(|HbvoPVafP za+Cw5|L3c(yz*9awe#rnYipl*zjVPjD#;YPEr8H#H;c_0S2zp$u?@A0jMhQt>&yM5mE%c%Lc z68mrMKUkQXo4e?`3+Xq^McB6{_I38_W_UcFv0qyzp2q32+-p*=U!0klY5(R;H{Ei} zH&?G&bM@7$85e&x<^&4KOW}D_9qy!tmX`kh{-&lgXPR2bOLNO{E!sV`s3DLcJnocw(6av-lO2GuTM?cdRl+Ge#-v`gcwYIuQ#40IB z^85Wh`o5u$_I*QPv>9U61vm~nrj*DXm#xp)zD&GJR$v?WiISe!^MD+Atbz6`TP1|X zj0-5~Vfl!M`^9G4Dn1NW7=;rOk~|0)8@=PIs$3}{cV$ExTQE-ODGhB+WbTa2-Dz@n zs_m3V363cU@YP~+XKJ!b)Y_IWcOIs~Z;`v_@hv+)`skzmhmY6S*H_{LnmzE;XKuRu zc|{JQpE$h#!w)}PuKn(JFT9`){qFa=9u)s!q{f@zAGcarQJZ&2NupaNgD{osYG zKGNOnv-+x)?zjQ^mPp*~K61n?DTctLH4+=lX$Y**YZ%KgtK~#P6BSKZ&Gro zgyzIPBqGY=%HyI}1Jd7p3G)n}NN2@0C6I&GvSYwXpJ{ke;ge z!KgWU&!-=}=j%`I7U^z7O{*8oNo>CA$;l4ZAacfSt`Xc{S(eupAwMD2L&tF2;?hA6 z@Ydwlg9_F!%sc+)OLvJ^z^-Z zWmTuAj~{OurIN6)tRinI<4tw?Kq{nXseZmTF;`*R>(h=T7`@|ouDR33e&6#t>yj5Ra_0QYNnc0~x`@Iez#(4RUnG+25 zN@kZH4aTWspVuMlJ04H<*{Z!TQIdRKMH%kt=?PYA(WuZ&eshktATap&wOx(<%IwKw zl9H0jN^)~c#?f2K#xE$cckDQRpsTB^{pjh_ot-C6T*B7bIcJVJAu}`ABWFpuk-U_Y z6tEHagxi=qkdcv*oqo(=*Zm$JLm~6*$0$vyG3WFi%KYh{-e~J>3uNc=xp8^<`FRz5 zt~fA5x2L_=c(S{@`{?PDCp$YE8dkD(cFvq>jvpr_FQ0D^ub*F^y|m%hNd9mmyE z6Z<^tTekNQNjYkxa1hQgbAfd!I9vw@MIJf6-~03dN3I7nX~sakm|En|Ju<%5J)ei!HP*`BJ)KpXWV?I zU)y?)@}XmJZBL$TXaFP6I(d?6pZn>jM|QsY+H0?EeRt&Dci*kw`S#(%hq-unXFV5f zfBV(Pdp>$&r+o71$M3xJx4(USe8-MYKRqt~V$9jo!WU1!^LkVJnK9!_sF#w-Q>IML z;)@027pA89_cwmVP&~2c!w*lMY^%SB?c~WB^Ub+4W+*4Og07$2+0@wBc=FWgW5@@Zi9}z_H8= zuDtR}|NBdkE+#sUiwb^!>+@^Zt~HnAM=5Z2|GxgN*XH6;p`i07ymH3HeA9H&C^y%NZFf}#R9UW?V{da%unha1G zx4*HmqoY8!EKSSYPk~TKVFYDmW+W#kdqjk0;kG&tg6DW&3s9~N8A(>w8JHJ-zhq(b z_4PqKr1*V#qL;r1@70rT`Khk9Y$Zg8SRZFgge)cJ6xPX{76QnE5qyy0LUEzvX3-#-|sP7C$6ck~Y1J;^ya zIcbm()B)W}{tK*{Z)#SM|1@w!Zpm<)MeZ#A?1D z#qWsq$~}HTe7ALxT2oVVu{9nq#y^c`C3a_A?mv$ounN@8n>T;S%8PG_&x@;x{X4u< zqybtUx;Xwx{AG3)gW&3T{O|0?*pFA0$NpxNTZ{a)fb~DU-`<=x_gj@$f)gqry7wu$ zxfP;G)XL1Q{>rz%m0j2H@@A-s_2t$DzWRDeiy~LP^`(~z3(dj;?Oc5ziRSuqkPH7) zwJBBEz?{JtqHs@SsJnZFp6ykS4Gs?4)69Z!*PcU>k>NCNDs|yk{aGa;HSLhBiO#~# zLR)_Rf^Xbe$vlPK`R$c6K!6uqdE0W<>yUeb;&T4%%F5#6;$>@YUCQDta$lSJjSJ|y z`PY8^>sMWM?Ty!7d-KgVGBwx*QfZ*Dod-{ZgF}TmIUtohiBxhZWNyw_#g=sF%o*}p zp8%tsougxo5@yPt0>V_GA;JlwAr5kiSk-w}RO%<_39gi;ql&`DClE8s&XNgRjMvXq(mVPEl4PvO{OR_ieRf2UU1|= zmApLq43cf9Ga6-_GfglsdwLeZ|J>up8$S7jImO}Q2LZD?-+31))UI8xZ`-z)S<&8o z`*!Sn|C3Kn0EdsCtgAbG_~h|}%+rsHJ;sDGIUAd`Vt%$Oyr=O*|3Lq-Q!Op0jzVo5 zJMw^4#bO6v+*~OcnAXpo&%f|1<|}`A{;}ownw9&V za(AwKdMkkJ(Px=(-(an=ZcKk{%K;ib_UAo&KKbO&Pi@~0-6u?AjxHz3fh7wj=as%Y zbdsLeSAYEY$BpEnF8tS?^f?QrPtDKIk86t;cXo~)yWx>XHmq9p(MRUo#>V;qYDhbJ z@+0!qJ1|T&(N}B(U6k}l`*fN#G|m7LV6HZm1H z-PzI6xt}j~9QiGIO+A-ukdN`np>&k^mM0tCtG@YQ=?gQ;DA15^$j=NaP#8O`|rOWD_eE<-FJWW ztLI_;%@_S8cU0mK2M>&!H_z)Gw`{_MtgL0QLZ>W(Ew7K6JEp(A{XlOU zdI^Vi@7lHdGm3C}@6ImGIcCyiAan_C-D0tpR#O`oC@V9SZ-4tjRH25HMan&i{c7=v z?Lx?aAAOC7KUIbj`;Qg5&lf?~PfbiU0ZTKL!>~~0{tMi8Zq)oqN#DL$SpcWz6LAPX z&XN>eKC-k=cu>$h$3fpgf)7I8j0S|hL^2Qq#@sRZs zKcnIgf8X+E-uKVH{3`Okyj(o&yZrLb&UpM`wpFW`ELY&j@P}E?p31)Fnro(t=0E@W z&-?4tva+)4uDdS%1k<)VNbnBNgWGyaOH1P?w>!SzPj&Sy77Vcww^rGI(3{RFIFx6`qxuZ+S+*Bkdgx4 zo?BlZAODpf{NVOG&y#eaT6WP-fBMt^^}qht%5liNT2JKv{3k#8$tB}eaBaOLEzfP@ zj4`QbA<%Kf#Zx`Ows$@`MkhHcxiWj`UfVx8s3xU;b;)$_Txo(UW9agW>FI0d0Bl%` zD;yob64I#;qt@Wibq8YfxaM>WD9OX2NH`jcghQcNG#pCuC;8*C1W`~rrqtz0HbiIx z`e0q*;Xb=ae|SzfNOIOlcrX^V>zYhX0x$#|am8-$QL=}_u}~x$N+cJF{GXC@2E)uC zqQP*?@VIp;WwV3wU3zt%&FOZiN@zGNfhI$QQ%r(Mrgplybyj!?kT=*rVyQN-QvzKI zrR#1PTuu>>^$$wLDhU^(QOPrwFRtB+G#nYZ0vGq!>v467YlZbvXpXCO#nfQtEBD+3 z)cv(k9#w+D>J<5!Ljrb~&-8uns`KP$qf&=WLS=^|2s@wI7e_J(QO1o^NYEU;R~re2 z!iEa6geU`JSXP8YETJ-_xvkCv9`QBqYyv1ff-?j*jTsh@38E}cqeY^IjmB~~YrU#U zPIxHid67+@6OCEv38FFjZ$xAJe?v4TeUWHv8zma^^CY%EyQvD=Cfv!n6<8nfo=0Xr z#-!a+95j^7HXSG|N3UVCz)&%C0O(ZJc7-{oWrb?y1fy}5;E99=ViAW!583TH<)ol= z6Q`q3%N&VBhetvo8kXJ{@g@0^B4MYSQq${_k~7Zry5at=M6c@#(waiCxx9X#7=XeH zyOA1ssX=rBq66InQ70s`J%~D7WE7oBc^2r9_IOaGX&%k2>!hdk4@G0TJJlmO1DRuW zeL@zru|GA{HWD7_CR+O`iAbYSIXxd3fU)w$6v7cX+Z_q9f)VJRZ<9D1eN~s(nr_b~ z`z7vc6a|)>`DF0EbsQSrwk;KrbNMzWMs)E?jVnDAB4NxvD6dEk0=6~`|UhY3P zC*&;OlnREjHA&jgq^g-gTOoyUQi&*?jW#B=22Y9nX$BNJeK8iR$qLb!aVs2F;t>>V zU?Qoy!-=|jb*{}G6Lua_;818}M3P2!-L8kj6ntydYzpQ=5arkGgI2^tB7lWqN#xTx z{8|ur1mUCzub0;x9i3h6USBXsCxFcF@9j88=DU;9B$=NTl$m4fF}+0yL^fa@xu`eU z`5cy!F(T_7V8Pg=DRi3-0Vne@N0velYc8}fV{s*kTmdm05gV{87E4#Vlhl|^6;a6~ zgIpUL92!(5)%V}!BPN+mvCz;!|3F-I!kl*S9%I7D)9gs%95E{dLt_Y9Pm+8zD4(~J zkCO2jd?5)P)1H?4o?cp@?fAgJfi_a>8>F{oc>MlqJt^1kr)?aPfb#iJMEU|vHxA&3 zY%e+j0ifd#l)j`fDkNE{*ql^Ilr;ySDjB2@G$ZoUQsM`^w0r1}9v`4FIyfRbC{y7` zM3O`33d$fI0H-@M4xyhz{N zNZ-6j-=tn)3eq>Bqf!NGMtR|^RX2y=+Fi1P}f0>-!oYVQQfRICw8ve71a|t1d za2dfz_zKT6IA2bfz;zjC_{~V;bfj@Q(l|TPI2~zRmHN_CFwL(u)B=%VYVixFQ`zeb zbr2z_P%B{ZUr|*aN6~gz#CTASXzWL#T*)-lPGZ>9$tB{ehT13p9I3Eu@sEg|VHhIC zRAbfj#o{p$lI76IX1qp? zi9sGtyH5PnPzytvX;UVALtJgJaG6G7(m3>UWpf1Q9ZAjn^C#EryydA|^V>F;jI=O(L@bDaB#3 zQ!D>MrF zy`tJ=Rbg3xIx8hQS3quQ7efroLxVhojDl-`4U2&dKj!#jy6e{h6=HRulF>hv5i^N? zjrSs8gAQ!afekvaLFZo`*q{R&bYO!nE@Fh8#|R%IZU7#v0UoRc9$W)FxCVG|4I^|K z@L($Nzz;ll6nNkv_HDoeDa&S2SVoUr)uoV}6pK4ZaSG%5R>t*pjO)7@acdaY69W09 zvXD`?fD+7M#4e&VE4W+9H@qw;oyplvNGJ6I(#YZe5>lGYH!cy214&$8#@Qz>LAqYd z(^-sXxu)wBayXNeXOW{xjOX#}#^i1(Af7f&IsN`~&pr3dj`z1o-fHs@yuSX}^nGu? z%66c6*yr>0w)aT|TZ0x|>uYA-ej1KMR;tfy>D4yX(u;Eq|C!biE5EX`GGFgGdbH_S zpJ@vQlNbGvt}Z^%8tQx(UyS|(D!J^BQwQ&fcF~{MUvk_!wyCM~LAq`Z>$W_K;m>waO~6MuR2ovvzI=eyeuylwakVu!YG zt*x!y`rf{XqciMb;3;))Kep7mmHl?>_VmZ!J^~qgY}+%BtXsG4**EsWq&%^=0@d!T zlXo6uPPg}s=V1sx@#2S#7QOpwKB}y>Nh%|5*iqO5MLDa5)8K+&W9|Tr&iWQMjWrKU zLoKcR_9zQ!lh~AgL*)eIpcxf6-FDYqcU`?=CiHUg%nIa&&-)fmfzLl@#p)mY;0HHc zF|WE@JkOURYkiVz1iKEP{f`b2m5Ww>-0(-kvAB?gXgmty9p+1ulMAO^c;Wo{6AH7K znWhxYIFI@9l#)#Fs5gDV#RWNVMDk0ML{)XaT8hZ-3iq6R|oY8!-g zIAr*hSU41fEzP6>QY@;VJhcCDX`#d#wyyi{f8_BOVah+eVHuV%-(eLgcBlE&4s!GU zj*aEkl%xkA`|Dr-`lqKJN2+??BU@gFBRGY^gx31Hu-$4`6~Eu@bcg6EwvaM5%kVd~ z4TQ2$O2}4Q_I`5gvpxy~r^)47yf`D=xNFz04_dlA5F8E0Y~)wCmS_z}VH%$d!)fa~nVV6Du)V+&hRZ*sbOlEf&!;krJi$XdK0SK;VnFZ#{Wz`}Xa}Pd3H%;gH=-NVn0lw0@DiJsAA(kw+eRY5U;;HN9xzs+-UD(##t# zS(u|%Ri#fTzhw1yzVn@Le0kZ-3E7TQ=F5ii-iGDYMJ)f7*jZ{~!?tQ=*JjC}T5(pY zbiKXixzndlzx#AWyeEFl{`i~Bt^ZWB96`XS)ai2Td&(1gjq><0s@%W97LSYwl*Uu4 z(PzYl#GvG=NUnCIh?vi#hGg3=`SEh`Dzs=~7q2KkF0WQHzqcHVvcIC$BKP0ef3Z3c z2%LX)1M*@r-apN zpFblj#}@6NOE+73Fa1ql>zjGoZMV%W?AiL(C&yul)G*5-A+B%6iQ%LegLhn=I7!lxl3eW(*J8GfN{8pKn@b z7!lHh{M>@+6`|X@f|^+pW7G8 zhR#qTCso7mW9F9y`!Ofgo$igOL30MYQ7zWoJY{C#VB@xJ+ZsDN&oDfiM%=*G?Chn{ zWBY(PO(7plwfwBST$hN^MLpHYuzu^dZrysk&s8>m=7ceY&T5-0zaXQ~@DHk~xg`LM zlDrI?<+7lRKK?lKOW>hKj9jK+*L@0FNK(8%x(!@y<(tOF7U%J#798M8B5X&lnBj;B~ zz*v|JX48v+w<&1nqzWYjmpLe+)iw;s+Pe*Zs^2EM=x$w6cXoDiwp%8y#70J@Oi5E( zKG^-i>7g^oVH-Mw3asZeZ+=HlJ+a$@IyLXI{04F_O?3{B-CHOZbyq0`+2{Q%ky%Kx}dI<(gzT30V1M zd-YgfM^E3tPzn`OZQ64WclHYofYVj>w) `@`<{o-DWS^1L-}NfAue(m9boeros+ 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�qA1S*bv>hczh9w)=D!D>az=&)O%O*U&`Xl;) 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�HNv-^Tnn=J3-QiLjQ;~v=H=+FQ_42zw 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

&q^48 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

w9wj%Bd*(+L%#xzaOi75` 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 z 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 |o7zPeovhwfJ0ZF2wHuhP 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

4w&l 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∈SCb=I-1XGS<|jr-wZ0=`}Tr{nWJd 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�P8*4Vx--Tg9e^2Hi1jN^;j)7NkEA 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⋙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%0D}csV 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 P(>mHcL8}9P8P)nPcVzhY literal 0 HcmV?d00001 From f6672266b5e2e48acab210134a87a66b8c0254ac Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Mon, 14 Aug 2023 16:10:55 +0200 Subject: [PATCH 117/463] Animation Quick guide snippets (#136) * add animation cookbook examples. * Apply Spotless * added more quick guide animations. * Apply Spotless * Added scale on shared axis * Apply Spotless * add more basic animations * Apply Spotless * Finalizing snippets for quick guide. * Apply Spotless * Finalizing snippets for quick guide. * Fix snippet tag * Fix snippet tag * added missing snippets * Fix snippet name * Apply Spotless * Remove additional copyright --------- Co-authored-by: riggaroo --- .../compose/snippets/SnippetsActivity.kt | 2 + .../animations/AnimationQuickGuide.kt | 924 ++++++++++++++++++ .../snippets/navigation/Destination.kt | 1 + 3 files changed, 927 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 6b8a7e977..62d423942 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -26,6 +26,7 @@ import androidx.compose.ui.Modifier import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController +import com.example.compose.snippets.animations.AnimationExamplesScreen import com.example.compose.snippets.graphics.BrushExamplesScreen import com.example.compose.snippets.images.ImageExamplesScreen import com.example.compose.snippets.landing.LandingScreen @@ -52,6 +53,7 @@ class SnippetsActivity : ComponentActivity() { when (destination) { Destination.BrushExamples -> BrushExamplesScreen() Destination.ImageExamples -> ImageExamplesScreen() + Destination.AnimationQuickGuideExamples -> AnimationExamplesScreen() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt new file mode 100644 index 000000000..446cb63ca --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt @@ -0,0 +1,924 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:Suppress("DEPRECATION") + +package com.example.compose.snippets.animations + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedContentTransitionScope +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.EnterTransition +import androidx.compose.animation.ExitTransition +import androidx.compose.animation.animateColor +import androidx.compose.animation.animateColorAsState +import androidx.compose.animation.animateContentSize +import androidx.compose.animation.core.Animatable +import androidx.compose.animation.core.EaseIn +import androidx.compose.animation.core.EaseOut +import androidx.compose.animation.core.LinearEasing +import androidx.compose.animation.core.RepeatMode +import androidx.compose.animation.core.Spring +import androidx.compose.animation.core.animateDp +import androidx.compose.animation.core.animateDpAsState +import androidx.compose.animation.core.animateFloat +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.animateIntOffsetAsState +import androidx.compose.animation.core.animateRect +import androidx.compose.animation.core.infiniteRepeatable +import androidx.compose.animation.core.rememberInfiniteTransition +import androidx.compose.animation.core.spring +import androidx.compose.animation.core.tween +import androidx.compose.animation.core.updateTransition +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.togetherWith +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.interaction.collectIsPressedAsState +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.foundation.lazy.grid.items +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.TransformOrigin +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.layout.layout +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.style.TextMotion +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.IntOffset +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavType +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import androidx.navigation.navArgument +import coil.compose.AsyncImage +import com.example.compose.snippets.R +import com.example.compose.snippets.util.randomSampleImageUrl +import java.net.URLDecoder +import java.net.URLEncoder +import kotlin.math.roundToInt +import kotlinx.coroutines.launch + +@Preview +@Composable +fun AnimationExamplesScreen() { + Column { + AnimatedVisibilityCookbook() + } +} + +@Preview +@Composable +fun AnimatedVisibilityCookbook() { + Box(modifier = Modifier.fillMaxSize()) { + // [START android_compose_animation_cookbook_visibility] + var visible by remember { + mutableStateOf(true) + } + // Animated visibility will eventually remove the item from the composition once the animation has finished. + AnimatedVisibility(visible) { + // your composable here + // [START_EXCLUDE] + Box( + modifier = Modifier + .size(200.dp) + .clip(RoundedCornerShape(8.dp)) + .background(colorGreen) + ) { + } + // [END_EXCLUDE] + } + // [END android_compose_animation_cookbook_visibility] + Button(modifier = Modifier.align(Alignment.BottomCenter), onClick = { + visible = !visible + }) { + Text("Show/Hide") + } + } +} + +@Preview +@Composable +fun AnimatedVisibilityCookbook_ModifierAlpha() { + Box( + modifier = Modifier + .fillMaxSize() + .padding(16.dp) + ) { + // [START android_compose_animation_cookbook_visibility_alpha] + var visible by remember { + mutableStateOf(true) + } + val animatedAlpha by animateFloatAsState( + targetValue = if (visible) 1.0f else 0f, + label = "alpha" + ) + Box( + modifier = Modifier + .size(200.dp) + .graphicsLayer { + alpha = animatedAlpha + } + .clip(RoundedCornerShape(8.dp)) + .background(colorGreen) + .align(Alignment.TopCenter) + ) { + } + // [END android_compose_animation_cookbook_visibility_alpha] + Button(modifier = Modifier.align(Alignment.BottomCenter), onClick = { + visible = !visible + }) { + Text("Show/Hide") + } + } +} + +@Preview +@Composable +fun AnimateBackgroundColor() { + var animateBackgroundColor by remember { + mutableStateOf(true) + } + LaunchedEffect(Unit) { + animateBackgroundColor = true + } + // [START android_compose_animate_background_color] + val animatedColor by animateColorAsState( + if (animateBackgroundColor) colorGreen else colorBlue, + label = "color" + ) + Column( + modifier = Modifier.drawBehind { + drawRect(animatedColor) + } + ) { + // your composable here + } + // [END android_compose_animate_background_color] +} + +@Preview +@Composable +fun AnimatePadding() { + Box { + // [START android_compose_animation_padding] + var toggled by remember { + mutableStateOf(false) + } + val animatedPadding by animateDpAsState( + if (toggled) { + 0.dp + } else { + 20.dp + }, + label = "padding" + ) + Box( + modifier = Modifier + .aspectRatio(1f) + .fillMaxSize() + .padding(animatedPadding) + .background(Color(0xff53D9A1)) + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { + toggled = !toggled + } + ) + // [END android_compose_animation_padding] + } +} + +@Preview +@Composable +fun AnimateSizeChange() { + Box( + modifier = Modifier + .fillMaxSize() + .padding(16.dp) + ) { + // [START android_compose_animation_size_change] + var expanded by remember { mutableStateOf(false) } + Box( + modifier = Modifier + .background(colorBlue) + .animateContentSize() + .height(if (expanded) 400.dp else 200.dp) + .fillMaxWidth() + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { + expanded = !expanded + } + + ) { + } + // [END android_compose_animation_size_change] + } +} + +@Preview +@Composable +fun AnimateOffset() { + Box( + modifier = Modifier + .fillMaxSize() + .padding(16.dp) + ) { + // [START android_compose_animation_offset_change] + var moved by remember { mutableStateOf(false) } + val pxToMove = with(LocalDensity.current) { + 100.dp.toPx().roundToInt() + } + val offset by animateIntOffsetAsState( + targetValue = if (moved) { + IntOffset(pxToMove, pxToMove) + } else { + IntOffset.Zero + }, + label = "offset" + ) + + Box( + modifier = Modifier + .offset { + offset + } + .background(colorBlue) + .size(100.dp) + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { + moved = !moved + } + ) + // [END android_compose_animation_offset_change] + } +} + +@Preview +@Composable +fun AnimateBetweenComposableDestinations() { + // [START android_compose_animate_destinations] + val navController = rememberNavController() + NavHost( + navController = navController, startDestination = "landing", + enterTransition = { EnterTransition.None }, + exitTransition = { ExitTransition.None } + ) { + composable("landing") { + ScreenLanding( + // [START_EXCLUDE] + onItemClicked = { + navController.navigate("detail/${URLEncoder.encode(it)}") + } + // [END_EXCLUDE] + ) + } + composable( + "detail/{photoUrl}", + arguments = listOf(navArgument("photoUrl") { type = NavType.StringType }), + enterTransition = { + fadeIn( + animationSpec = tween( + 300, easing = LinearEasing + ) + ) + slideIntoContainer( + animationSpec = tween(300, easing = EaseIn), + towards = AnimatedContentTransitionScope.SlideDirection.Start + ) + }, + exitTransition = { + fadeOut( + animationSpec = tween( + 300, easing = LinearEasing + ) + ) + slideOutOfContainer( + animationSpec = tween(300, easing = EaseOut), + towards = AnimatedContentTransitionScope.SlideDirection.End + ) + } + ) { backStackEntry -> + ScreenDetails( + // [START_EXCLUDE] + photo = URLDecoder.decode(backStackEntry.arguments!!.getString("photoUrl")!!), + onBackClicked = { + navController.popBackStack() + } + // [END_EXCLUDE] + ) + } + } + // [END android_compose_animate_destinations] +} + +@Preview +@Composable +fun AnimateSizeChange_Specs() { + Row(modifier = Modifier.fillMaxSize()) { + var expanded by remember { mutableStateOf(false) } + Column( + modifier = Modifier + .padding(8.dp) + .weight(1f) + ) { + Text("No spec set") + Box( + modifier = Modifier + .background(colorBlue) + .animateContentSize() + .height(if (expanded) 300.dp else 200.dp) + .fillMaxSize() + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { + expanded = !expanded + } + + ) { + } + } + Column( + modifier = Modifier + .padding(8.dp) + .weight(1f) + ) { + Text("Custom spec") + // [START android_compose_animation_size_change_spec] + Box( + modifier = Modifier + .background(colorBlue) + .animateContentSize( + spring( + stiffness = Spring.StiffnessLow, + dampingRatio = Spring.DampingRatioHighBouncy + ) + ) + .height(if (expanded) 300.dp else 200.dp) + .fillMaxSize() + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { + expanded = !expanded + } + + ) { + } + // [END android_compose_animation_size_change_spec] + } + } +} + +@Preview +@Composable +fun SmoothAnimateText() { + // [START android_compose_animation_cookbook_text] + val infiniteTransition = rememberInfiniteTransition(label = "infinite transition") + val scale by infiniteTransition.animateFloat( + initialValue = 1f, + targetValue = 8f, + animationSpec = infiniteRepeatable(tween(1000), RepeatMode.Reverse), + label = "scale" + ) + Box(modifier = Modifier.fillMaxSize()) { + Text( + text = "Hello", + modifier = Modifier + .graphicsLayer { + scaleX = scale + scaleY = scale + transformOrigin = TransformOrigin.Center + } + .align(Alignment.Center), + // Text composable does not take TextMotion as a parameter. + // Provide it via style argument but make sure that we are copying from current theme + style = LocalTextStyle.current.copy(textMotion = TextMotion.Animated) + ) + } + + // [END android_compose_animation_cookbook_text] +} + +@Preview +@Composable +fun InfinitelyRepeatable() { + // [START android_compose_animation_infinitely_repeating] + val infiniteTransition = rememberInfiniteTransition(label = "infinite") + val color by infiniteTransition.animateColor( + initialValue = Color.Green, + targetValue = Color.Blue, + animationSpec = infiniteRepeatable( + animation = tween(1000, easing = LinearEasing), + repeatMode = RepeatMode.Reverse + ), + label = "color" + ) + Column( + modifier = Modifier.drawBehind { + drawRect(color) + } + ) { + // your composable here + } + // [END android_compose_animation_infinitely_repeating] +} + +@Preview +@Composable +fun ConcurrentAnimatable() { + // [START android_compose_animation_on_launch] + val alphaAnimation = remember { + Animatable(0f) + } + LaunchedEffect(Unit) { + alphaAnimation.animateTo(1f) + } + Box( + modifier = Modifier.graphicsLayer { + alpha = alphaAnimation.value + } + ) + // [END android_compose_animation_on_launch] +} + +@Preview +@Composable +fun SequentialAnimations() { + // [START android_compose_animation_sequential] + val alphaAnimation = remember { Animatable(0f) } + val yAnimation = remember { Animatable(0f) } + + LaunchedEffect("animationKey") { + alphaAnimation.animateTo(1f) + yAnimation.animateTo(100f) + yAnimation.animateTo(500f, animationSpec = tween(100)) + } + // [END android_compose_animation_sequential] +} + +@Preview +@Composable +fun ConcurrentAnimations() { + // [START android_compose_animation_concurrent] + val alphaAnimation = remember { Animatable(0f) } + val yAnimation = remember { Animatable(0f) } + + LaunchedEffect("animationKey") { + launch { + alphaAnimation.animateTo(1f) + } + launch { + yAnimation.animateTo(100f) + } + } + // [END android_compose_animation_concurrent] +} +enum class BoxState { + Collapsed, + Expanded +} +@Preview +@Composable +fun TransitionExampleConcurrent() { + // [START android_compose_concurrent_transition] + var currentState by remember { mutableStateOf(BoxState.Collapsed) } + val transition = updateTransition(currentState, label = "transition") + + val rect by transition.animateRect(label = "rect") { state -> + when (state) { + BoxState.Collapsed -> Rect(0f, 0f, 100f, 100f) + BoxState.Expanded -> Rect(100f, 100f, 300f, 300f) + } + } + val borderWidth by transition.animateDp(label = "borderWidth") { state -> + when (state) { + BoxState.Collapsed -> 1.dp + BoxState.Expanded -> 0.dp + } + } + // [END android_compose_concurrent_transition] +} + +@Preview +@Composable +fun AnimateElevation() { + Box( + modifier = Modifier + .fillMaxSize() + ) { + // [START android_compose_animation_cookbook_elevation] + val mutableInteractionSource = remember { + MutableInteractionSource() + } + val pressed = mutableInteractionSource.collectIsPressedAsState() + val elevation = animateDpAsState( + targetValue = if (pressed.value) { + 32.dp + } else { + 8.dp + }, + label = "elevation" + ) + Box( + modifier = Modifier + .size(100.dp) + .align(Alignment.Center) + .graphicsLayer { + this.shadowElevation = elevation.value.toPx() + } + .clickable(interactionSource = mutableInteractionSource, indication = null) { + } + .background(colorGreen) + ) { + } + // [END android_compose_animation_cookbook_elevation] + } +} + +@Preview +@Composable +fun AnimatedContentExampleSwitch() { + // [START android_compose_animation_cookbook_animated_content] + var state by remember { + mutableStateOf(UiState.Loading) + } + AnimatedContent( + state, + transitionSpec = { + fadeIn( + animationSpec = tween(3000) + ) togetherWith fadeOut(animationSpec = tween(3000)) + }, + modifier = Modifier.clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { + state = when (state) { + UiState.Loading -> UiState.Loaded + UiState.Loaded -> UiState.Error + UiState.Error -> UiState.Loading + } + }, + label = "Animated Content" + ) { targetState -> + when (targetState) { + UiState.Loading -> { + LoadingScreen() + } + UiState.Loaded -> { + LoadedScreen() + } + UiState.Error -> { + ErrorScreen() + } + } + } + // [END android_compose_animation_cookbook_animated_content] +} + +@Composable +private fun ErrorScreen() { + Column( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally + ) { + // [START_EXCLUDE] + Text("Error", fontSize = 18.sp) + // [END_EXCLUDE] + } +} + +@Composable +private fun LoadedScreen() { + Column( + modifier = Modifier + .fillMaxSize(), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally + ) { + // [START_EXCLUDE] + Text("Loaded", fontSize = 18.sp) + Image( + painterResource(id = R.drawable.dog), + modifier = Modifier + .fillMaxWidth() + .height(200.dp) + .padding(16.dp) + .clip( + RoundedCornerShape(16.dp) + ), + contentDescription = "dog", + contentScale = ContentScale.Crop + ) + // [END_EXCLUDE] + } +} + +@Composable +private fun LoadingScreen() { + Column( + modifier = Modifier + .fillMaxSize(), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally + + ) { + CircularProgressIndicator(modifier = Modifier.size(48.dp)) + Spacer(modifier = Modifier.height(16.dp)) + Text("Loading", fontSize = 18.sp) + } +} + +@Preview +@Composable +fun AnimationLayout() { + // [START android_compose_animation_layout_offset] + var toggled by remember { + mutableStateOf(false) + } + val interactionSource = remember { + MutableInteractionSource() + } + Column( + modifier = Modifier + .padding(16.dp) + .fillMaxSize() + .clickable(indication = null, interactionSource = interactionSource) { + toggled = !toggled + } + ) { + val offsetTarget = if (toggled) { + IntOffset(150, 150) + } else { + IntOffset.Zero + } + val offset = animateIntOffsetAsState( + targetValue = offsetTarget, label = "offset" + ) + Box( + modifier = Modifier + .size(100.dp) + .background(colorBlue) + ) + Box( + modifier = Modifier + .layout { measurable, constraints -> + val offsetValue = if (isLookingAhead) offsetTarget else offset.value + val placeable = measurable.measure(constraints) + layout(placeable.width + offsetValue.x, placeable.height + offsetValue.y) { + placeable.placeRelative(offsetValue) + } + } + .size(100.dp) + .background(colorGreen) + ) + Box( + modifier = Modifier + .size(100.dp) + .background(colorBlue) + ) + } + // [END android_compose_animation_layout_offset] +} + +@Preview +@Composable +fun AnimateAlignment() { + // [START android_compose_animate_item_placement] + var toggled by remember { + mutableStateOf(false) + } + val interactionSource = remember { + MutableInteractionSource() + } + Column( + modifier = Modifier + .padding(16.dp) + .fillMaxSize() + .clickable(indication = null, interactionSource = interactionSource) { + toggled = !toggled + } + ) { + + Box( + modifier = Modifier + .size(100.dp) + .background(colorBlue) + ) + Box( + modifier = Modifier + .size(100.dp) + .background(colorGreen) + ) + Box( + modifier = Modifier + .size(100.dp) + .background(colorBlue) + ) + } + // [END android_compose_animate_item_placement] +} + +enum class UiState { + Loading, + Loaded, + Error +} + +val colorGreen = Color(0xFF53D9A1) +val colorBlue = Color(0xFF4FC3F7) + +@Preview +@Composable +fun AnimationLayoutIndividualItem() { + var toggled by remember { + mutableStateOf(false) + } + val interactionSource = remember { + MutableInteractionSource() + } + Column( + modifier = Modifier + .fillMaxSize() + .clickable(indication = null, interactionSource = interactionSource) { + toggled = !toggled + } + ) { + val offset = animateIntOffsetAsState( + targetValue = if (toggled) { + IntOffset(150, 150) + } else { + IntOffset.Zero + }, + label = "offset" + ) + Box( + modifier = Modifier + .size(100.dp) + .background(colorBlue) + ) + Box( + modifier = Modifier + .layout { measurable, constraints -> + val placeable = measurable.measure(constraints) + layout(placeable.width + offset.value.x, placeable.height + offset.value.y) { + placeable.placeRelative(offset.value) + } + } + .size(100.dp) + .background(colorGreen) + ) + Box( + modifier = Modifier + .size(100.dp) + .background(colorBlue) + ) + } +} + +@Composable +private fun ScreenLanding(onItemClicked: (String) -> Unit) { + LazyVerticalGrid( + columns = GridCells.Adaptive(200.dp), + horizontalArrangement = Arrangement.spacedBy(4.dp), + content = { + items(randomSizedPhotos) { photo -> + AsyncImage( + model = photo, + contentScale = ContentScale.Crop, + contentDescription = null, + modifier = Modifier + .fillMaxWidth() + .height(200.dp) + .clickable { + onItemClicked(photo) + } + ) + } + }, + modifier = Modifier.fillMaxSize() + ) +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +private fun ScreenDetails(photo: String, onBackClicked: () -> Unit) { + Scaffold( + modifier = Modifier.fillMaxSize(), + topBar = { + TopAppBar( + title = { + Text("Photo Details") + }, + navigationIcon = { + IconButton(onClick = { onBackClicked() }) { + Icon(Icons.Default.ArrowBack, contentDescription = "Back") + } + } + ) + } + ) { padding -> + Column(modifier = Modifier.padding(padding)) { + AsyncImage( + model = photo, + contentScale = ContentScale.Crop, + contentDescription = null, + modifier = Modifier + .fillMaxWidth() + .height(200.dp) + ) + Spacer(modifier = Modifier.height(18.dp)) + Text("Photo details", fontSize = 18.sp, modifier = Modifier.padding(8.dp)) + } + } +} + +private val randomSizedPhotos = listOf( + randomSampleImageUrl(width = 1600, height = 900), + randomSampleImageUrl(width = 900, height = 1600), + randomSampleImageUrl(width = 500, height = 500), + randomSampleImageUrl(width = 300, height = 400), + randomSampleImageUrl(width = 1600, height = 900), + randomSampleImageUrl(width = 500, height = 500), + randomSampleImageUrl(width = 1600, height = 900), + randomSampleImageUrl(width = 900, height = 1600), + randomSampleImageUrl(width = 500, height = 500), + randomSampleImageUrl(width = 300, height = 400), + randomSampleImageUrl(width = 1600, height = 900), + randomSampleImageUrl(width = 500, height = 500), + randomSampleImageUrl(width = 900, height = 1600), + randomSampleImageUrl(width = 500, height = 500), + randomSampleImageUrl(width = 300, height = 400), + randomSampleImageUrl(width = 1600, height = 900), + randomSampleImageUrl(width = 500, height = 500), + randomSampleImageUrl(width = 500, height = 500), + randomSampleImageUrl(width = 300, height = 400), + randomSampleImageUrl(width = 1600, height = 900), + randomSampleImageUrl(width = 500, height = 500), + randomSampleImageUrl(width = 900, height = 1600), + randomSampleImageUrl(width = 500, height = 500), + randomSampleImageUrl(width = 300, height = 400), + randomSampleImageUrl(width = 1600, height = 900), + randomSampleImageUrl(width = 500, height = 500), +) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index b4bb39adf..21a1e5e07 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -19,4 +19,5 @@ package com.example.compose.snippets.navigation enum class Destination(val route: String, val title: String) { BrushExamples("brushExamples", "Brush Examples"), ImageExamples("imageExamples", "Image Examples"), + AnimationQuickGuideExamples("animationExamples", "Animation Examples"), } From 856480e1e23eed7bd8333c24d60799341d50d7b8 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 15 Aug 2023 11:44:44 +0200 Subject: [PATCH 118/463] Animation Quick Guide - add missing snippet (#137) * Add missing animation snippet --------- Co-authored-by: riggaroo --- .../animations/AnimationQuickGuide.kt | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt index 446cb63ca..4080fd890 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt @@ -67,6 +67,7 @@ import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.BasicText import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBack import androidx.compose.material3.Button @@ -75,6 +76,7 @@ import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar @@ -459,6 +461,33 @@ fun SmoothAnimateText() { // [END android_compose_animation_cookbook_text] } +@Preview +@Composable +fun AnimateTextColor() { + Box(modifier = Modifier.fillMaxSize()) { + // [START android_compose_animation_cookbook_text] + val infiniteTransition = rememberInfiniteTransition(label = "infinite transition") + val animatedColor by infiniteTransition.animateColor( + initialValue = Color(0xFF60DDAD), + targetValue = Color(0xFF4285F4), + animationSpec = infiniteRepeatable(tween(1000), RepeatMode.Reverse), + label = "color" + ) + + BasicText( + text = "Hello Compose", + color = { + animatedColor + }, + // [START_EXCLUDE] + style = MaterialTheme.typography.displayLarge, + modifier = Modifier.align(Alignment.Center).padding(16.dp) + // [END_EXCLUDE] + ) + // [END android_compose_animation_cookbook_text] + } +} + @Preview @Composable fun InfinitelyRepeatable() { From 79d18a4db84f41d9a045f425ac529acde1085727 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 15 Aug 2023 12:33:02 +0100 Subject: [PATCH 119/463] Fix snippet tag --- .../compose/snippets/animations/AnimationQuickGuide.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt index 4080fd890..7c6493578 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt @@ -465,7 +465,7 @@ fun SmoothAnimateText() { @Composable fun AnimateTextColor() { Box(modifier = Modifier.fillMaxSize()) { - // [START android_compose_animation_cookbook_text] + // [START android_compose_animation_cookbook_text_color] val infiniteTransition = rememberInfiniteTransition(label = "infinite transition") val animatedColor by infiniteTransition.animateColor( initialValue = Color(0xFF60DDAD), @@ -484,7 +484,7 @@ fun AnimateTextColor() { modifier = Modifier.align(Alignment.Center).padding(16.dp) // [END_EXCLUDE] ) - // [END android_compose_animation_cookbook_text] + // [END android_compose_animation_cookbook_text_color] } } From 8d9e811e4d9575fa33f54c397751033607323620 Mon Sep 17 00:00:00 2001 From: Hoyt Summers Pittman Date: Thu, 17 Aug 2023 13:21:19 -0400 Subject: [PATCH 120/463] Nit : Fix error in comment (#140) The LocalSize.current returns the size of the widget, not the max size of the widget. --- .../java/com/example/compose/snippets/glance/GlanceSnippets.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt index 49819ef8e..4e1af17dc 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt @@ -610,7 +610,7 @@ object SizeModeSnippets3 { @Composable private fun MyContent() { - // Size will be the max available size for the AppWidget + // Size will be the size of the AppWidget val size = LocalSize.current Column { Text(text = "Where to?", modifier = GlanceModifier.padding(12.dp)) From 030d22cb745ff8d6f2564edfe36bbad1922cc036 Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Mon, 21 Aug 2023 18:06:03 +0100 Subject: [PATCH 121/463] Top components (#138) Adding Compose component examples. --------- Co-authored-by: jakeroseman --- .../compose/snippets/SnippetsActivity.kt | 33 ++ .../compose/snippets/components/AppBar.kt | 344 ++++++++++++++++++ .../compose/snippets/components/Button.kt | 102 ++++++ .../compose/snippets/components/Card.kt | 147 ++++++++ .../compose/snippets/components/Chip.kt | 163 +++++++++ .../snippets/components/ComponentsScreen.kt | 58 +++ .../compose/snippets/components/Dialog.kt | 291 +++++++++++++++ .../components/FloatingActionButton.kt | 105 ++++++ .../snippets/components/ProgressIndicator.kt | 164 +++++++++ .../compose/snippets/components/Scaffold.kt | 101 +++++ .../compose/snippets/components/Slider.kt | 114 ++++++ .../compose/snippets/components/Switch.kt | 146 ++++++++ .../snippets/navigation/Destination.kt | 15 + .../src/main/res/drawable/feathertop.jpeg | Bin 0 -> 330652 bytes .../src/main/res/values-es/strings.xml | 1 + .../snippets/src/main/res/values/strings.xml | 1 + 16 files changed, 1785 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/Button.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/Card.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/Chip.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/ComponentsScreen.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/Dialog.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/FloatingActionButton.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/ProgressIndicator.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/Scaffold.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/Slider.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/Switch.kt create mode 100644 compose/snippets/src/main/res/drawable/feathertop.jpeg diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 62d423942..c15d6543d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -27,11 +27,23 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import com.example.compose.snippets.animations.AnimationExamplesScreen +import com.example.compose.snippets.components.AppBarExamples +import com.example.compose.snippets.components.ButtonExamples +import com.example.compose.snippets.components.ChipExamples +import com.example.compose.snippets.components.ComponentsScreen +import com.example.compose.snippets.components.DialogExamples +import com.example.compose.snippets.components.FloatingActionButtonExamples +import com.example.compose.snippets.components.ProgressIndicatorExamples +import com.example.compose.snippets.components.ScaffoldExample +import com.example.compose.snippets.components.SliderExamples +import com.example.compose.snippets.components.SwitchExamples import com.example.compose.snippets.graphics.BrushExamplesScreen import com.example.compose.snippets.images.ImageExamplesScreen import com.example.compose.snippets.landing.LandingScreen import com.example.compose.snippets.navigation.Destination +import com.example.compose.snippets.navigation.TopComponentsDestination import com.example.compose.snippets.ui.theme.SnippetsTheme +import com.example.topcomponents.CardExamples class SnippetsActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -54,6 +66,27 @@ class SnippetsActivity : ComponentActivity() { Destination.BrushExamples -> BrushExamplesScreen() Destination.ImageExamples -> ImageExamplesScreen() Destination.AnimationQuickGuideExamples -> AnimationExamplesScreen() + Destination.ComponentsExamples -> ComponentsScreen { + navController.navigate( + it.route + ) + } + } + } + } + TopComponentsDestination.values().forEach { destination -> + composable(destination.route) { + when (destination) { + TopComponentsDestination.CardExamples -> CardExamples() + TopComponentsDestination.SwitchExamples -> SwitchExamples() + TopComponentsDestination.SliderExamples -> SliderExamples() + TopComponentsDestination.DialogExamples -> DialogExamples() + TopComponentsDestination.ChipExamples -> ChipExamples() + TopComponentsDestination.FloatingActionButtonExamples -> FloatingActionButtonExamples() + TopComponentsDestination.ButtonExamples -> ButtonExamples() + TopComponentsDestination.ProgressIndicatorExamples -> ProgressIndicatorExamples() + TopComponentsDestination.ScaffoldExample -> ScaffoldExample() + TopComponentsDestination.AppBarExamples -> AppBarExamples() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt new file mode 100644 index 000000000..ee638c4c6 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt @@ -0,0 +1,344 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Add +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.filled.Check +import androidx.compose.material.icons.filled.Edit +import androidx.compose.material.icons.filled.Image +import androidx.compose.material.icons.filled.Menu +import androidx.compose.material.icons.filled.Mic +import androidx.compose.material3.BottomAppBar +import androidx.compose.material3.BottomAppBarDefaults +import androidx.compose.material3.Button +import androidx.compose.material3.CenterAlignedTopAppBar +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.FloatingActionButton +import androidx.compose.material3.FloatingActionButtonDefaults +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LargeTopAppBar +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.MediumTopAppBar +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.rememberTopAppBarState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Preview +@Composable +fun AppBarExamples() { + var selection by remember { mutableStateOf("none") } + + Surface( + modifier = Modifier.fillMaxSize(), + color = MaterialTheme.colorScheme.background + ) { + when (selection) { + "bottomBar" -> BottomAppBarExample() + "topBar" -> SmallTopAppBarExample() + "topBarCenter" -> CenterAlignedTopAppBarExample() + "topBarMedium" -> MediumTopAppBarExample() + "topBarLarge" -> LargeTopAppBarExample() + else -> AppBarOptions( + toBottom = { selection = "bottomBar" }, + toTopBarSmall = { selection = "topBar" }, + toTopBarCenter = { selection = "topBarCenter" }, + toTopBarMedium = { selection = "topBarMedium" }, + toTopBarLarge = { selection = "topBarLarge" }, + ) + } + } +} + +@Composable +fun AppBarOptions( + toBottom: () -> Unit, + toTopBarSmall: () -> Unit, + toTopBarCenter: () -> Unit, + toTopBarMedium: () -> Unit, + toTopBarLarge: () -> Unit, +) { + Column() { + Button({ toBottom() }) { + Text("Bottom bar") + } + Button({ toTopBarSmall() }) { + Text("Small top bar") + } + Button({ toTopBarCenter() }) { + Text("Center aligned top bar") + } + Button({ toTopBarMedium() }) { + Text("Medium top bar") + } + Button({ toTopBarLarge() }) { + Text("Large top bar") + } + } +} + +@Preview +// [START android_compose_components_bottomappbar] +@Composable +fun BottomAppBarExample() { + Scaffold( + bottomBar = { + BottomAppBar( + actions = { + IconButton(onClick = { /* doSomething() */ }) { + Icon(Icons.Filled.Check, contentDescription = "Localized description") + } + IconButton(onClick = { /* doSomething() */ }) { + Icon( + Icons.Filled.Edit, + contentDescription = "Localized description", + ) + } + IconButton(onClick = { /* doSomething() */ }) { + Icon( + Icons.Filled.Mic, + contentDescription = "Localized description", + ) + } + IconButton(onClick = { /* doSomething() */ }) { + Icon( + Icons.Filled.Image, + contentDescription = "Localized description", + ) + } + }, + floatingActionButton = { + FloatingActionButton( + onClick = { /* do something */ }, + containerColor = BottomAppBarDefaults.bottomAppBarFabColor, + elevation = FloatingActionButtonDefaults.bottomAppBarFabElevation() + ) { + Icon(Icons.Filled.Add, "Localized description") + } + } + ) + }, + ) { innerPadding -> + Text( + modifier = Modifier.padding(innerPadding), + text = "Example of a scaffold with a bottom app bar." + ) + } +} +// [END android_compose_components_bottomappbar] + +@OptIn(ExperimentalMaterial3Api::class) +@Preview +// [START android_compose_components_smalltopappbar] +@Composable +fun SmallTopAppBarExample() { + Scaffold( + topBar = { + TopAppBar( + colors = TopAppBarDefaults.topAppBarColors( + containerColor = MaterialTheme.colorScheme.primaryContainer, + titleContentColor = MaterialTheme.colorScheme.primary, + ), + title = { + Text("Small Top app bar") + } + ) + }, + ) { innerPadding -> + ScrollContent(innerPadding) + } +} +// [END android_compose_components_smalltopappbar] + +@OptIn(ExperimentalMaterial3Api::class) +@Preview +// [START android_compose_components_centeralignedtopappbar] +@Composable +fun CenterAlignedTopAppBarExample() { + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()) + + Scaffold( + modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), + + topBar = { + CenterAlignedTopAppBar( + colors = TopAppBarDefaults.topAppBarColors( + containerColor = MaterialTheme.colorScheme.primaryContainer, + titleContentColor = MaterialTheme.colorScheme.primary, + ), + title = { + Text( + "Centered Top App Bar", + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + }, + navigationIcon = { + IconButton(onClick = { /* doSomething() */ }) { + Icon( + imageVector = Icons.Filled.ArrowBack, + contentDescription = "Localized description" + ) + } + }, + actions = { + IconButton(onClick = { /* doSomething() */ }) { + Icon( + imageVector = Icons.Filled.Menu, + contentDescription = "Localized description" + ) + } + }, + scrollBehavior = scrollBehavior, + ) + }, + ) { innerPadding -> + ScrollContent(innerPadding) + } +} +// [END android_compose_components_centeralignedtopappbar] + +@OptIn(ExperimentalMaterial3Api::class) +@Preview +// [START android_compose_components_mediumtopappbar] +@Composable +fun MediumTopAppBarExample() { + val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(rememberTopAppBarState()) + + Scaffold( + modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), + topBar = { + MediumTopAppBar( + colors = TopAppBarDefaults.topAppBarColors( + containerColor = MaterialTheme.colorScheme.primaryContainer, + titleContentColor = MaterialTheme.colorScheme.primary, + ), + title = { + Text( + "Medium Top App Bar", + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + }, + navigationIcon = { + IconButton(onClick = { /* doSomething() */ }) { + Icon( + imageVector = Icons.Filled.ArrowBack, + contentDescription = "Localized description" + ) + } + }, + actions = { + IconButton(onClick = { /* doSomething() */ }) { + Icon( + imageVector = Icons.Filled.Menu, + contentDescription = "Localized description" + ) + } + }, + scrollBehavior = scrollBehavior + ) + }, + ) { innerPadding -> + ScrollContent(innerPadding) + } +} +// [END android_compose_components_mediumtopappbar] + +@OptIn(ExperimentalMaterial3Api::class) +@Preview +// [START android_compose_components_largetopappbar] +@Composable +fun LargeTopAppBarExample() { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(rememberTopAppBarState()) + + Scaffold( + modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), + topBar = { + LargeTopAppBar( + colors = TopAppBarDefaults.topAppBarColors( + containerColor = MaterialTheme.colorScheme.primaryContainer, + titleContentColor = MaterialTheme.colorScheme.primary, + ), + title = { + Text( + "Large Top App Bar", + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + }, + navigationIcon = { + IconButton(onClick = { /* doSomething() */ }) { + Icon( + imageVector = Icons.Filled.ArrowBack, + contentDescription = "Localized description" + ) + } + }, + actions = { + IconButton(onClick = { /* doSomething() */ }) { + Icon( + imageVector = Icons.Filled.Menu, + contentDescription = "Localized description" + ) + } + }, + scrollBehavior = scrollBehavior + ) + }, + ) { innerPadding -> + ScrollContent(innerPadding) + } +} +// [END android_compose_components_largetopappbar] + +@Composable +fun ScrollContent(innerPadding: PaddingValues) { + val range = 1..100 + + LazyColumn( + modifier = Modifier + .fillMaxSize(), + contentPadding = innerPadding, + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + items(range.count()) { index -> + Text(text = "- List item number ${index + 1}") + } + } +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Button.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Button.kt new file mode 100644 index 000000000..1208f816f --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Button.kt @@ -0,0 +1,102 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import android.util.Log +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.ElevatedButton +import androidx.compose.material3.FilledTonalButton +import androidx.compose.material3.OutlinedButton +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp + +@Composable +fun ButtonExamples() { + Column( + modifier = Modifier + .padding(48.dp) + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(24.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text("Filled button:") + FilledButtonExample(onClick = { Log.d("Filled button", "Filled button clicked.") }) + Text("Filled tonal button:") + FilledTonalButtonExample(onClick = { Log.d("Filled tonal button", "Filled tonal button clicked.") }) + Text("Elevated button:") + ElevatedButtonExample(onClick = { Log.d("Elevated button", "Elevated button clicked.") }) + Text("Outlined button:") + OutlinedButtonExample(onClick = { Log.d("Outlined button", "Outlined button clicked.") }) + Text("Text button") + TextButtonExample(onClick = { Log.d("Text button", "Text button clicked.") }) + } +} + +// [START android_compose_components_filledbutton] +@Composable +fun FilledButtonExample(onClick: () -> Unit) { + Button(onClick = { onClick() }) { + Text("Filled") + } +} +// [END android_compose_components_filledbutton] + +// [START android_compose_components_filledtonalbutton] +@Composable +fun FilledTonalButtonExample(onClick: () -> Unit) { + FilledTonalButton(onClick = { onClick() }) { + Text("Tonal") + } +} +// [END android_compose_components_filledtonalbutton] + +// [START android_compose_components_elevatedbutton] +@Composable +fun ElevatedButtonExample(onClick: () -> Unit) { + ElevatedButton(onClick = { onClick() }) { + Text("Elevated") + } +} +// [END android_compose_components_elevatedbutton] + +// [START android_compose_components_outlinedbutton] +@Composable +fun OutlinedButtonExample(onClick: () -> Unit) { + OutlinedButton(onClick = { onClick() }) { + Text("Outlined") + } +} +// [END android_compose_components_outlinedbutton] + +// [START android_compose_components_textbutton] +@Composable +fun TextButtonExample(onClick: () -> Unit) { + TextButton( + onClick = { onClick() } + ) { + Text("Text Button") + } +} +// [END android_compose_components_textbutton] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Card.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Card.kt new file mode 100644 index 000000000..1259685ef --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Card.kt @@ -0,0 +1,147 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.topcomponents + +import android.util.Log +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.ElevatedCard +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.OutlinedCard +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Composable +fun CardExamples() { + Column( + modifier = Modifier + .padding(16.dp) + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + ElevatedCardExample() + FilledCardExample() + OutlinedCardExample() + CustomCardExample { Log.d("custom card", "hello word") } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_customcard] +@Composable +fun CustomCardExample(event: () -> Unit) { + Card( + border = BorderStroke(1.dp, Color.Black), + colors = CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.surfaceVariant, + ), + elevation = CardDefaults.cardElevation( + defaultElevation = 4.dp + ), + enabled = true, + modifier = Modifier.padding(16.dp), + onClick = event, + shape = RoundedCornerShape(8.dp), + ) { + Text( + text = "Custom card that uses the Card composable. Tap me to say hello world.", + modifier = Modifier + .padding(16.dp) + .fillMaxSize() + ) + } +} +// [END android_compose_components_customcard] + +@Preview +// [START android_compose_components_elevatedcard] +@Composable +fun ElevatedCardExample() { + ElevatedCard( + elevation = CardDefaults.cardElevation( + defaultElevation = 6.dp + ), + modifier = Modifier + .size(width = 240.dp, height = 100.dp) + ) { + Text( + text = "Elevated", + modifier = Modifier + .padding(16.dp), + textAlign = TextAlign.Center, + ) + } +} +// [END android_compose_components_elevatedcard] + +@Preview +// [START android_compose_components_filledcard] +@Composable +fun FilledCardExample() { + Card( + colors = CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.surfaceVariant, + ), + modifier = Modifier + .size(width = 240.dp, height = 100.dp) + ) { + Text( + text = "Filled", + modifier = Modifier + .padding(16.dp), + textAlign = TextAlign.Center, + ) + } +} +// [END android_compose_components_filledcard] + +@Preview +// [START android_compose_components_outlinedcard] +@Composable +fun OutlinedCardExample() { + OutlinedCard( + colors = CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.surface, + ), + border = BorderStroke(1.dp, Color.Black), + modifier = Modifier + .size(width = 240.dp, height = 100.dp) + ) { + Text( + text = "Outlined", + modifier = Modifier + .padding(16.dp), + textAlign = TextAlign.Center, + ) + } +} +// [END android_compose_components_outlinedcard] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Chip.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Chip.kt new file mode 100644 index 000000000..0737ddc8b --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Chip.kt @@ -0,0 +1,163 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import android.util.Log +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Close +import androidx.compose.material.icons.filled.Done +import androidx.compose.material.icons.filled.Person +import androidx.compose.material.icons.filled.Settings +import androidx.compose.material3.AssistChip +import androidx.compose.material3.AssistChipDefaults +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.FilterChip +import androidx.compose.material3.FilterChipDefaults +import androidx.compose.material3.Icon +import androidx.compose.material3.InputChip +import androidx.compose.material3.InputChipDefaults +import androidx.compose.material3.SuggestionChip +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Preview +@Composable +fun ChipExamples() { + Column( + modifier = Modifier + .padding(16.dp) + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text("Assist chip") + AssistChipExample() + Text("Filter chip") + FilterChipExample() + Text("Input chip") + InputChipExample("Input chip") { Log.d("Input chip", "Chip dismissed") } + Text("Suggestion chip") + SuggestionChipExample() + } +} + +@Preview +// [START android_compose_components_assistchip] +@Composable +fun AssistChipExample() { + AssistChip( + onClick = { Log.d("Assist chip", "hello world") }, + label = { Text("Assist chip") }, + leadingIcon = { + Icon( + Icons.Filled.Settings, + contentDescription = "Localized description", + Modifier.size(AssistChipDefaults.IconSize) + ) + } + ) +} +// [END android_compose_components_assistchip] + +@OptIn(ExperimentalMaterial3Api::class) +@Preview +// [START android_compose_components_filterchip] +@Composable +fun FilterChipExample() { + var selected by remember { mutableStateOf(false) } + + FilterChip( + onClick = { selected = !selected }, + label = { + Text("Filter chip") + }, + selected = selected, + leadingIcon = if (selected) { + { + Icon( + imageVector = Icons.Filled.Done, + contentDescription = "Done icon", + modifier = Modifier.size(FilterChipDefaults.IconSize) + ) + } + } else { + null + }, + ) +} +// [END android_compose_components_filterchip] + +// You could set this up similarly to the filter chip above and have it toggleable, but this is +// an example of a chip that can dismiss with a click. +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_inputchip] +@Composable +fun InputChipExample( + text: String, + onDismiss: () -> Unit, +) { + var enabled by remember { mutableStateOf(true) } + if (!enabled) return + + InputChip( + onClick = { + onDismiss() + enabled = !enabled + }, + label = { Text(text) }, + selected = enabled, + avatar = { + Icon( + Icons.Filled.Person, + contentDescription = "Localized description", + Modifier.size(InputChipDefaults.AvatarSize) + ) + }, + trailingIcon = { + Icon( + Icons.Default.Close, + contentDescription = "Localized description", + Modifier.size(InputChipDefaults.AvatarSize) + ) + }, + ) +} +// [END android_compose_components_inputchip] + +@Preview +// [START android_compose_components_suggestionchip] +@Composable +fun SuggestionChipExample() { + SuggestionChip( + onClick = { Log.d("Suggestion chip", "hello world") }, + label = { Text("Suggestion chip") } + ) +} +// [END android_compose_components_suggestionchip] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/ComponentsScreen.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/ComponentsScreen.kt new file mode 100644 index 000000000..90d7a4962 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/ComponentsScreen.kt @@ -0,0 +1,58 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.Button +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.example.compose.snippets.navigation.TopComponentsDestination + +@Composable +fun ComponentsScreen(navigate: (TopComponentsDestination) -> Unit) { + LazyColumn( + modifier = Modifier + .padding(16.dp) + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + items(TopComponentsDestination.values().toList()) { destination -> + NavigationItem(destination) { + navigate( + destination + ) + } + } + } +} + +@Composable +fun NavigationItem(destination: TopComponentsDestination, onClick: () -> Unit) { + Button( + onClick = { onClick() } + ) { + Text(destination.title) + } +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Dialog.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Dialog.kt new file mode 100644 index 000000000..1686f6596 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Dialog.kt @@ -0,0 +1,291 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentSize +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Info +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.Button +import androidx.compose.material3.Card +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.Dialog +import androidx.compose.ui.window.DialogProperties +import com.example.compose.snippets.R + +@Preview +@Composable +fun DialogExamples() { + val openMinimalDialog = remember { mutableStateOf(false) } + val openDialogWithImage = remember { mutableStateOf(false) } + val openFullScreenDialog = remember { mutableStateOf(false) } + val openAlertDialog = remember { mutableStateOf(false) } + + Column( + modifier = Modifier + .padding(16.dp) + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text("Click the following button to toggle the given dialog example.") + Button( + onClick = { openMinimalDialog.value = !openMinimalDialog.value } + ) { + Text("Minimal dialog component") + } + Button( + onClick = { openDialogWithImage.value = !openDialogWithImage.value } + ) { + Text("Dialog component with an image") + } + Button( + onClick = { openAlertDialog.value = !openAlertDialog.value } + ) { + Text("Alert dialog component with buttons") + } + Button( + onClick = { openFullScreenDialog.value = !openFullScreenDialog.value } + ) { + Text("Full screen dialog") + } + + when { + openMinimalDialog.value -> { + MinimalDialog( + onDismissRequest = { openMinimalDialog.value = false }, + ) + } + openDialogWithImage.value -> { + DialogWithImage( + onDismissRequest = { openDialogWithImage.value = false }, + onConfirmation = { + openDialogWithImage.value = false + println("Confirmation registered") // Add logic here to handle confirmation. + }, + painter = painterResource(id = R.drawable.feathertop), + imageDescription = stringResource(id = R.string.feathertop_content_description), + ) + } + openFullScreenDialog.value -> { + FullScreenDialog( + onDismissRequest = { openFullScreenDialog.value = false }, + ) + } + openAlertDialog.value -> { + AlertDialogExample( + onDismissRequest = { openAlertDialog.value = false }, + onConfirmation = { + openAlertDialog.value = false + println("Confirmation registered") // Add logic here to handle confirmation. + }, + dialogTitle = "Alert dialog example", + dialogText = "This is an example of an alert dialog with buttons.", + icon = Icons.Default.Info + ) + } + } + } +} + +// [START android_compose_components_minimaldialog] +@Composable +fun MinimalDialog(onDismissRequest: () -> Unit) { + Dialog(onDismissRequest = { onDismissRequest() }) { + Card( + modifier = Modifier + .fillMaxWidth() + .height(200.dp) + .padding(16.dp), + shape = RoundedCornerShape(16.dp), + ) { + Text( + text = "This is a minimal dialog", + modifier = Modifier + .fillMaxSize() + .wrapContentSize(Alignment.Center), + textAlign = TextAlign.Center, + ) + } + } +} +// [END android_compose_components_minimaldialog] + +// [START android_compose_components_dialogwithimage] +@Composable +fun DialogWithImage( + onDismissRequest: () -> Unit, + onConfirmation: () -> Unit, + painter: Painter, + imageDescription: String, +) { + Dialog(onDismissRequest = { onDismissRequest() }) { + // Draw a rectangle shape with rounded corners inside the dialog + Card( + modifier = Modifier + .fillMaxWidth() + .height(375.dp) + .padding(16.dp), + shape = RoundedCornerShape(16.dp), + ) { + Column( + modifier = Modifier + .fillMaxSize(), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Image( + painter = painter, + contentDescription = imageDescription, + contentScale = ContentScale.Fit, + modifier = Modifier + .height(160.dp) + ) + Text( + text = "This is a dialog with buttons and an image.", + modifier = Modifier.padding(16.dp), + ) + Row( + modifier = Modifier + .fillMaxWidth(), + horizontalArrangement = Arrangement.Center, + ) { + TextButton( + onClick = { onDismissRequest() }, + modifier = Modifier.padding(8.dp), + ) { + Text("Dismiss") + } + TextButton( + onClick = { onConfirmation() }, + modifier = Modifier.padding(8.dp), + ) { + Text("Confirm") + } + } + } + } + } +} +// [END android_compose_components_dialogwithimage] + +// [START android_compose_components_alertdialog] +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun AlertDialogExample( + onDismissRequest: () -> Unit, + onConfirmation: () -> Unit, + dialogTitle: String, + dialogText: String, + icon: ImageVector, +) { + AlertDialog( + icon = { + Icon(icon, contentDescription = "Example Icon") + }, + title = { + Text(text = dialogTitle) + }, + text = { + Text(text = dialogText) + }, + onDismissRequest = { + onDismissRequest() + }, + confirmButton = { + TextButton( + onClick = { + onConfirmation() + } + ) { + Text("Confirm") + } + }, + dismissButton = { + TextButton( + onClick = { + onDismissRequest() + } + ) { + Text("Dismiss") + } + } + ) +} +// [END android_compose_components_alertdialog] + +// [START android_compose_components_fullscreendialog] +@Composable +fun FullScreenDialog(onDismissRequest: () -> Unit) { + Dialog( + onDismissRequest = { onDismissRequest() }, + properties = DialogProperties( + usePlatformDefaultWidth = false, + dismissOnBackPress = true, + ), + ) { + Surface( + modifier = Modifier + .fillMaxSize() + .background(MaterialTheme.colorScheme.surfaceVariant), + ) { + Column( + modifier = Modifier + .fillMaxSize(), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text( + text = "This is a full screen dialog", + textAlign = TextAlign.Center, + ) + TextButton(onClick = { onDismissRequest() }) { + Text("Dismiss") + } + } + } + } +} +// [END android_compose_components_fullscreendialog] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/FloatingActionButton.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/FloatingActionButton.kt new file mode 100644 index 000000000..61d8074c8 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/FloatingActionButton.kt @@ -0,0 +1,105 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import android.util.Log +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Add +import androidx.compose.material.icons.filled.Edit +import androidx.compose.material3.ExtendedFloatingActionButton +import androidx.compose.material3.FloatingActionButton +import androidx.compose.material3.Icon +import androidx.compose.material3.LargeFloatingActionButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.SmallFloatingActionButton +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp + +@Composable +fun FloatingActionButtonExamples() { + Column( + modifier = Modifier + .padding(48.dp) + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(24.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text("Floating action button:") + Example(onClick = { Log.d("FAB", "FAB clicked.") }) + Text("Small floating action button:") + SmallExample(onClick = { Log.d("FAB", "Small FAB clicked.") }) + Text("Large floating action button:") + LargeExample(onClick = { Log.d("FAB", "Large FAB clicked.") }) + Text("Floating action button with text:") + ExtendedExample(onClick = { Log.d("FAB", "Extended FAB clicked.") }) + } +} + +// [START android_compose_components_fab] +@Composable +fun Example(onClick: () -> Unit) { + FloatingActionButton( + onClick = { onClick() }, + ) { + Icon(Icons.Filled.Add, "Floating action button.") + } +} +// [END android_compose_components_fab] + +// [START android_compose_components_extendedfab] +@Composable +fun ExtendedExample(onClick: () -> Unit) { + ExtendedFloatingActionButton( + onClick = { onClick() }, + icon = { Icon(Icons.Filled.Edit, "Extended floating action button.") }, + text = { Text(text = "Extended FAB") }, + ) +} +// [END android_compose_components_extendedfab] + +// [START android_compose_components_smallfab] +@Composable +fun SmallExample(onClick: () -> Unit) { + SmallFloatingActionButton( + onClick = { onClick() }, + containerColor = MaterialTheme.colorScheme.secondaryContainer, + contentColor = MaterialTheme.colorScheme.secondary + ) { + Icon(Icons.Filled.Add, "Small floating action button.") + } +} +// [END android_compose_components_smallfab] + +// [START android_compose_components_largefab] +@Composable +fun LargeExample(onClick: () -> Unit) { + LargeFloatingActionButton( + onClick = { onClick() }, + shape = CircleShape, + ) { + Icon(Icons.Filled.Add, "Large floating action button") + } +} +// [END android_compose_components_largefab] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/ProgressIndicator.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/ProgressIndicator.kt new file mode 100644 index 000000000..b2427b37f --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/ProgressIndicator.kt @@ -0,0 +1,164 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.LinearProgressIndicator +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch + +@Preview +@Composable +fun ProgressIndicatorExamples() { + Column( + modifier = Modifier + .padding(48.dp) + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(24.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text("Determinate linear indicator:") + LinearDeterminateIndicator() + Text("Indeterminate linear indicator:") + IndeterminateLinearIndicator() + Text("Determinate circular indicator:") + CircularDeterminateIndicator() + Text("Indeterminate circular indicator:") + IndeterminateCircularIndicator() + } +} + +@Preview +// [START android_compose_components_determinateindicator] +@Composable +fun LinearDeterminateIndicator() { + var currentProgress by remember { mutableStateOf(0f) } + var loading by remember { mutableStateOf(false) } + val scope = rememberCoroutineScope() // Create a coroutine scope + + Column( + verticalArrangement = Arrangement.spacedBy(12.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Button(onClick = { + loading = true + scope.launch { + loadProgress { progress -> + currentProgress = progress + } + loading = false // Reset loading when the coroutine finishes + } + }, enabled = !loading) { + Text("Start loading") + } + + if (loading) { + LinearProgressIndicator(progress = currentProgress) + } + } +} + +/** Iterate the progress value */ +suspend fun loadProgress(updateProgress: (Float) -> Unit) { + for (i in 1..100) { + updateProgress(i.toFloat() / 100) + delay(500) + } +} +// [END android_compose_components_determinateindicator] + +@Preview +@Composable +fun CircularDeterminateIndicator() { + var currentProgress by remember { mutableStateOf(0f) } + var loading by remember { mutableStateOf(false) } + val scope = rememberCoroutineScope() // Create a coroutine scope + + Column( + verticalArrangement = Arrangement.spacedBy(12.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Button(onClick = { + loading = true + scope.launch { + loadProgress { progress -> + currentProgress = progress + } + loading = false // Reset loading when the coroutine finishes + } + }, enabled = !loading) { + Text("Start loading") + } + + if (loading) { + CircularProgressIndicator(progress = currentProgress) + } + } +} + +@Preview +@Composable +fun IndeterminateLinearIndicator() { + var loading by remember { mutableStateOf(false) } + + Button(onClick = { loading = true }, enabled = !loading) { + Text("Start loading") + } + + if (!loading) return + + LinearProgressIndicator( + color = MaterialTheme.colorScheme.surfaceVariant, + trackColor = MaterialTheme.colorScheme.secondary, + ) +} + +@Preview +// [START android_compose_components_indeterminateindicator] +@Composable +fun IndeterminateCircularIndicator() { + var loading by remember { mutableStateOf(false) } + + Button(onClick = { loading = true }, enabled = !loading) { + Text("Start loading") + } + + if (!loading) return + + CircularProgressIndicator( + color = MaterialTheme.colorScheme.surfaceVariant, + trackColor = MaterialTheme.colorScheme.secondary, + ) +} +// [END android_compose_components_indeterminateindicator] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Scaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Scaffold.kt new file mode 100644 index 000000000..5fe1fb076 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Scaffold.kt @@ -0,0 +1,101 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Add +import androidx.compose.material3.BottomAppBar +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.FloatingActionButton +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.material3.TopAppBarDefaults.topAppBarColors +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@OptIn(ExperimentalMaterial3Api::class) +@Preview +// [START android_compose_components_scaffold] +@Composable +fun ScaffoldExample() { + var presses by remember { mutableIntStateOf(0) } + + Scaffold( + topBar = { + TopAppBar( + colors = topAppBarColors( + containerColor = MaterialTheme.colorScheme.primaryContainer, + titleContentColor = MaterialTheme.colorScheme.primary, + ), + title = { + Text("Top app bar") + } + ) + }, + bottomBar = { + BottomAppBar( + containerColor = MaterialTheme.colorScheme.primaryContainer, + contentColor = MaterialTheme.colorScheme.primary, + ) { + Text( + modifier = Modifier + .fillMaxWidth(), + textAlign = TextAlign.Center, + text = "Bottom app bar", + ) + } + }, + floatingActionButton = { + FloatingActionButton(onClick = { presses++ }) { + Icon(Icons.Default.Add, contentDescription = "Add") + } + } + ) { innerPadding -> + Column( + modifier = Modifier + .padding(innerPadding), + verticalArrangement = Arrangement.spacedBy(16.dp), + ) { + Text( + modifier = Modifier.padding(8.dp), + text = + """ + This is an example of a scaffold. It uses the Scaffold composable's parameters to create a screen with a simple top app bar, bottom app bar, and floating action button. + + It also contains some basic inner content, such as this text. + + You have pressed the floating action button $presses times. + """.trimIndent(), + ) + } + } +} +// [END android_compose_components_scaffold] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Slider.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Slider.kt new file mode 100644 index 000000000..39165b63b --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Slider.kt @@ -0,0 +1,114 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.RangeSlider +import androidx.compose.material3.Slider +import androidx.compose.material3.SliderDefaults +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableFloatStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Preview +@Composable +fun SliderExamples() { + Column( + modifier = Modifier + .padding(16.dp) + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text("Minimal slider component") + SliderMinimalExample() + Text("Advanced slider component") + SliderAdvancedExample() + Text("Range slider component") + RangeSliderExample() + } +} + +// [START android_compose_components_sliderminimal] +@Preview +@Composable +fun SliderMinimalExample() { + var sliderPosition by remember { mutableFloatStateOf(0f) } + Column { + Slider( + value = sliderPosition, + onValueChange = { sliderPosition = it } + ) + Text(text = sliderPosition.toString()) + } +} +// [END android_compose_components_sliderminimal] + +// [START android_compose_components_slideradvanced] +@Preview +@Composable +fun SliderAdvancedExample() { + var sliderPosition by remember { mutableFloatStateOf(0f) } + Column { + Slider( + value = sliderPosition, + onValueChange = { sliderPosition = it }, + colors = SliderDefaults.colors( + thumbColor = MaterialTheme.colorScheme.secondary, + activeTrackColor = MaterialTheme.colorScheme.secondary, + inactiveTrackColor = MaterialTheme.colorScheme.secondaryContainer, + ), + steps = 3, + valueRange = 0f..50f + ) + Text(text = sliderPosition.toString()) + } +} +// [END android_compose_components_slideradvanced] + +// [START android_compose_components_rangeslider] +@Preview +@Composable +fun RangeSliderExample() { + var sliderPosition by remember { mutableStateOf(0f..100f) } + Column { + RangeSlider( + value = sliderPosition, + steps = 5, + onValueChange = { range -> sliderPosition = range }, + valueRange = 0f..100f, + onValueChangeFinished = { + // launch some business logic update with the state you hold + // viewModel.updateSelectedSliderValue(sliderPosition) + }, + ) + Text(text = sliderPosition.toString()) + } +} +// [END android_compose_components_rangeslider] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Switch.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Switch.kt new file mode 100644 index 000000000..25a60c65a --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Switch.kt @@ -0,0 +1,146 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Check +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Switch +import androidx.compose.material3.SwitchDefaults +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Preview +@Composable +fun SwitchExamples() { + Column( + modifier = Modifier + .padding(16.dp) + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text("Minimal switch component") + SwitchMinimalExample() + Text("Switch with label") + SwitchWithLabelMinimalExample() + Text("Switch with icon") + SwitchWithIconExample() + Text("Switch with custom colors") + SwitchWithCustomColors() + } +} + +@Preview +// [START android_compose_components_switchminimal] +@Composable +fun SwitchMinimalExample() { + var checked by remember { mutableStateOf(true) } + + Switch( + checked = checked, + onCheckedChange = { + checked = it + } + ) +} +// [END android_compose_components_switchminimal] + +@Preview +// [START android_compose_components_switchwithicon] +@Composable +fun SwitchWithIconExample() { + var checked by remember { mutableStateOf(true) } + + Switch( + checked = checked, + onCheckedChange = { + checked = it + }, + thumbContent = if (checked) { + { + Icon( + imageVector = Icons.Filled.Check, + contentDescription = null, + modifier = Modifier.size(SwitchDefaults.IconSize), + ) + } + } else { + null + } + ) +} +// [END android_compose_components_switchwithicon] + +@Preview +// [START android_compose_components_switchwithlabel] +@Composable +fun SwitchWithLabelMinimalExample() { + var checked by remember { mutableStateOf(true) } + + Row( + verticalAlignment = Alignment.CenterVertically + ) { + Text( + modifier = Modifier.padding(8.dp), + text = if (checked) "Checked" else "Unchecked", + ) + Switch( + checked = checked, + onCheckedChange = { + checked = it + } + ) + } +} +// [END android_compose_components_switchwithlabel] + +@Preview +// [START android_compose_components_switchwithcustomcolors] +@Composable +fun SwitchWithCustomColors() { + var checked by remember { mutableStateOf(true) } + + Switch( + checked = checked, + onCheckedChange = { + checked = it + }, + colors = SwitchDefaults.colors( + checkedThumbColor = MaterialTheme.colorScheme.primary, + checkedTrackColor = MaterialTheme.colorScheme.primaryContainer, + uncheckedThumbColor = MaterialTheme.colorScheme.secondary, + uncheckedTrackColor = MaterialTheme.colorScheme.secondaryContainer, + ) + ) +} +// [END android_compose_components_switchwithcustomcolors] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index 21a1e5e07..9a3d91404 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -20,4 +20,19 @@ enum class Destination(val route: String, val title: String) { BrushExamples("brushExamples", "Brush Examples"), ImageExamples("imageExamples", "Image Examples"), AnimationQuickGuideExamples("animationExamples", "Animation Examples"), + ComponentsExamples("topComponents", "Top Compose Components"), +} + +// Enum class for compose components navigation screen. +enum class TopComponentsDestination(val route: String, val title: String) { + CardExamples("cardExamples", "Card"), + SwitchExamples("switchExamples", "Switch"), + SliderExamples("sliderExamples", "Slider"), + DialogExamples("dialogExamples", "Dialog"), + ChipExamples("chipExamples", "Chip"), + FloatingActionButtonExamples("floatingActionButtonExamples", "Floating Action Button"), + ButtonExamples("buttonExamples", "Button"), + ProgressIndicatorExamples("progressIndicatorExamples", "Progress Indicators"), + ScaffoldExample("scaffoldExample", "Scaffold"), + AppBarExamples("appBarExamples", "App bars"), } diff --git a/compose/snippets/src/main/res/drawable/feathertop.jpeg b/compose/snippets/src/main/res/drawable/feathertop.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..65058c722c6d08fadb5e3ae3159cbfc76bd7b631 GIT binary patch literal 330652 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

7csB(2LebRC(6gu!x2X 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 z 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д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�xvaEr`$R};vw1#reRj8>kAaMPnK6@M9AUd@ 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 literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/values-es/strings.xml b/compose/snippets/src/main/res/values-es/strings.xml index 0a8ab24ba..759a412f4 100644 --- a/compose/snippets/src/main/res/values-es/strings.xml +++ b/compose/snippets/src/main/res/values-es/strings.xml @@ -42,5 +42,6 @@ %1$d minutes Hola mundo + Una vista del amanecer desde Mount Feathertop, Victoria. Example String for Glance \ No newline at end of file diff --git a/compose/snippets/src/main/res/values/strings.xml b/compose/snippets/src/main/res/values/strings.xml index 42772c354..bc99dbc82 100644 --- a/compose/snippets/src/main/res/values/strings.xml +++ b/compose/snippets/src/main/res/values/strings.xml @@ -42,5 +42,6 @@ %1$d minutes Hello world + A view of sunrise from Mount Feathertop, Victoria. Example String for Glance \ No newline at end of file From bcbbd869ef10f7b80db68b429578e0f0a104c42f Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 22 Aug 2023 12:07:49 +0200 Subject: [PATCH 122/463] Sample showing how to take a screenshot from a composable (#141) * Added example for sharing bitmap from composables. * Apply Spotless * Added example for sharing bitmap from composables. * Added example for sharing bitmap from composables. * Apply Spotless * Added example for sharing bitmap from composables. * Apply Spotless * Add image in the shared storage instead of relying on a FileProvider (#142) * Add image in the shared storage instead of relying on a FileProvider * Add comment * Apply Spotless --------- Co-authored-by: yrezgui * Remove additional PictureDrawable that isn't needed. * Remove additional PictureDrawable that isn't needed. * add example showing how to convert between picture -> bitmap * Clarify usage of which canvas. --------- Co-authored-by: riggaroo Co-authored-by: Yacine Rezgui Co-authored-by: yrezgui --- compose/snippets/build.gradle.kts | 2 + compose/snippets/src/main/AndroidManifest.xml | 4 +- .../compose/snippets/SnippetsActivity.kt | 6 +- .../graphics/AdvancedGraphicsSnippets.kt | 266 ++++++++++++++++++ .../snippets/navigation/Destination.kt | 1 + 5 files changed, 277 insertions(+), 2 deletions(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index c2e5d9d7d..4a65136d5 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -114,6 +114,8 @@ dependencies { implementation(libs.accompanist.theme.adapter.material3) implementation(libs.accompanist.theme.adapter.material) + implementation(libs.accompanist.permissions) + implementation(libs.coil.kt.compose) implementation(libs.androidx.activity.compose) implementation(libs.androidx.appcompat) diff --git a/compose/snippets/src/main/AndroidManifest.xml b/compose/snippets/src/main/AndroidManifest.xml index 4c4ec51a3..d8b063164 100644 --- a/compose/snippets/src/main/AndroidManifest.xml +++ b/compose/snippets/src/main/AndroidManifest.xml @@ -18,6 +18,9 @@ + + - \ No newline at end of file diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index c15d6543d..d2e129ca2 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -17,6 +17,7 @@ package com.example.compose.snippets import android.os.Bundle +import android.os.StrictMode import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.fillMaxSize @@ -37,6 +38,7 @@ import com.example.compose.snippets.components.ProgressIndicatorExamples import com.example.compose.snippets.components.ScaffoldExample import com.example.compose.snippets.components.SliderExamples import com.example.compose.snippets.components.SwitchExamples +import com.example.compose.snippets.graphics.BitmapFromComposableSnippet import com.example.compose.snippets.graphics.BrushExamplesScreen import com.example.compose.snippets.images.ImageExamplesScreen import com.example.compose.snippets.landing.LandingScreen @@ -48,6 +50,7 @@ import com.example.topcomponents.CardExamples class SnippetsActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + StrictMode.enableDefaults() setContent { SnippetsTheme { val navController = rememberNavController() @@ -66,6 +69,7 @@ class SnippetsActivity : ComponentActivity() { Destination.BrushExamples -> BrushExamplesScreen() Destination.ImageExamples -> ImageExamplesScreen() Destination.AnimationQuickGuideExamples -> AnimationExamplesScreen() + Destination.ScreenshotExample -> BitmapFromComposableSnippet() Destination.ComponentsExamples -> ComponentsScreen { navController.navigate( it.route @@ -86,7 +90,7 @@ class SnippetsActivity : ComponentActivity() { TopComponentsDestination.ButtonExamples -> ButtonExamples() TopComponentsDestination.ProgressIndicatorExamples -> ProgressIndicatorExamples() TopComponentsDestination.ScaffoldExample -> ScaffoldExample() - TopComponentsDestination.AppBarExamples -> AppBarExamples() + TopComponentsDestination.AppBarExamples -> AppBarExamples() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt new file mode 100644 index 000000000..e1b63a9eb --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt @@ -0,0 +1,266 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.graphics + +import android.Manifest +import android.content.Context +import android.content.Intent +import android.content.Intent.createChooser +import android.graphics.Bitmap +import android.graphics.Picture +import android.media.MediaScannerConnection +import android.net.Uri +import android.os.Build +import android.os.Environment +import android.provider.MediaStore +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Share +import androidx.compose.material3.FloatingActionButton +import androidx.compose.material3.Icon +import androidx.compose.material3.Scaffold +import androidx.compose.material3.SnackbarHost +import androidx.compose.material3.SnackbarHostState +import androidx.compose.material3.SnackbarResult +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.drawWithCache +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.drawscope.draw +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import androidx.compose.ui.graphics.nativeCanvas +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.core.content.ContextCompat.startActivity +import com.example.compose.snippets.R +import com.google.accompanist.permissions.ExperimentalPermissionsApi +import com.google.accompanist.permissions.rememberMultiplePermissionsState +import java.io.File +import kotlin.coroutines.resume +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.suspendCancellableCoroutine + +/* +* Copyright 2022 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +@OptIn(ExperimentalPermissionsApi::class) +@Preview +@Composable +fun BitmapFromComposableSnippet() { + val context = LocalContext.current + val coroutineScope = rememberCoroutineScope() + val snackbarHostState = remember { SnackbarHostState() } + val picture = remember { Picture() } + + val writeStorageAccessState = rememberMultiplePermissionsState( + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + // No permissions are needed on Android 10+ to add files in the shared storage + emptyList() + } else { + listOf(Manifest.permission.WRITE_EXTERNAL_STORAGE) + } + ) + // This logic should live in your ViewModel - trigger a side effect to invoke URI sharing. + // checks permissions granted, and then saves the bitmap from a Picture that is already capturing content + // and shares it with the default share sheet. + fun shareBitmapFromComposable() { + if (writeStorageAccessState.allPermissionsGranted) { + coroutineScope.launch(Dispatchers.IO) { + val bitmap = createBitmapFromPicture(picture) + val uri = bitmap.saveToDisk(context) + shareBitmap(context, uri) + } + } else if (writeStorageAccessState.shouldShowRationale) { + coroutineScope.launch { + val result = snackbarHostState.showSnackbar( + message = "The storage permission is needed to save the image", + actionLabel = "Grant Access" + ) + + if (result == SnackbarResult.ActionPerformed) { + writeStorageAccessState.launchMultiplePermissionRequest() + } + } + } else { + writeStorageAccessState.launchMultiplePermissionRequest() + } + } + + Scaffold( + snackbarHost = { SnackbarHost(snackbarHostState) }, + floatingActionButton = { + FloatingActionButton(onClick = { + shareBitmapFromComposable() + }) { + Icon(Icons.Default.Share, "share") + } + } + ) { padding -> + // [START android_compose_draw_into_bitmap] + Column( + modifier = Modifier + .padding(padding) + .fillMaxSize() + .drawWithCache { + // Example that shows how to redirect rendering to an Android Picture and then + // draw the picture into the original destination + val width = this.size.width.toInt() + val height = this.size.height.toInt() + + onDrawWithContent { + val pictureCanvas = + androidx.compose.ui.graphics.Canvas( + picture.beginRecording( + width, + height + ) + ) + draw(this, this.layoutDirection, pictureCanvas, this.size) { + this@onDrawWithContent.drawContent() + } + picture.endRecording() + + drawIntoCanvas { canvas -> canvas.nativeCanvas.drawPicture(picture) } + } + } + ) { + ScreenContentToCapture() + } + // [END android_compose_draw_into_bitmap] + } +} + +@Composable +private fun ScreenContentToCapture() { + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center, + modifier = Modifier + .fillMaxSize() + .background( + Brush.linearGradient( + listOf( + Color(0xFFF5D5C0), + Color(0xFFF8E8E3) + ) + ) + ) + ) { + Image( + painterResource(id = R.drawable.sunset), + contentDescription = null, + modifier = Modifier + .aspectRatio(1f) + .padding(32.dp), + contentScale = ContentScale.Crop + ) + Text( + "Into the Ocean depths", + fontSize = 18.sp + ) + } +} + +private fun createBitmapFromPicture(picture: Picture): Bitmap { + // [START android_compose_draw_into_bitmap_convert_picture] + val bitmap = Bitmap.createBitmap( + picture.width, + picture.height, + Bitmap.Config.ARGB_8888 + ) + + val canvas = android.graphics.Canvas(bitmap) + canvas.drawColor(android.graphics.Color.WHITE) + canvas.drawPicture(picture) + // [END android_compose_draw_into_bitmap_convert_picture] + return bitmap +} + +private suspend fun Bitmap.saveToDisk(context: Context): Uri { + val file = File( + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), + "screenshot-${System.currentTimeMillis()}.png" + ) + + file.writeBitmap(this, Bitmap.CompressFormat.PNG, 100) + + return scanFilePath(context, file.path) ?: throw Exception("File could not be saved") +} + +/** + * We call [MediaScannerConnection] to index the newly created image inside MediaStore to be visible + * for other apps, as well as returning its [MediaStore] Uri + */ +private suspend fun scanFilePath(context: Context, filePath: String): Uri? { + return suspendCancellableCoroutine { continuation -> + MediaScannerConnection.scanFile( + context, + arrayOf(filePath), + arrayOf("image/png") + ) { _, scannedUri -> + if (scannedUri == null) { + continuation.cancel(Exception("File $filePath could not be scanned")) + } else { + continuation.resume(scannedUri) + } + } + } +} + +private fun File.writeBitmap(bitmap: Bitmap, format: Bitmap.CompressFormat, quality: Int) { + outputStream().use { out -> + bitmap.compress(format, quality, out) + out.flush() + } +} + +private fun shareBitmap(context: Context, uri: Uri) { + val intent = Intent(Intent.ACTION_SEND).apply { + type = "image/png" + putExtra(Intent.EXTRA_STREAM, uri) + addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + } + startActivity(context, createChooser(intent, "Share your image"), null) +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index 9a3d91404..b2c936c7e 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -21,6 +21,7 @@ enum class Destination(val route: String, val title: String) { ImageExamples("imageExamples", "Image Examples"), AnimationQuickGuideExamples("animationExamples", "Animation Examples"), ComponentsExamples("topComponents", "Top Compose Components"), + ScreenshotExample("screenshotExample", "Screenshot Examples"), } // Enum class for compose components navigation screen. From 4bc93d2ebe8fee9f44d9851e22b576205513dd55 Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Thu, 24 Aug 2023 14:30:56 +0100 Subject: [PATCH 123/463] Top components (#143) Minor changes to top components snippets. --- .../compose/snippets/SnippetsActivity.kt | 2 +- .../compose/snippets/components/AppBar.kt | 22 +++++++++---------- .../compose/snippets/components/Dialog.kt | 8 +++++++ .../snippets/components/ProgressIndicator.kt | 16 +++++++++++++- 4 files changed, 35 insertions(+), 13 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index d2e129ca2..6f4f76542 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -90,7 +90,7 @@ class SnippetsActivity : ComponentActivity() { TopComponentsDestination.ButtonExamples -> ButtonExamples() TopComponentsDestination.ProgressIndicatorExamples -> ProgressIndicatorExamples() TopComponentsDestination.ScaffoldExample -> ScaffoldExample() - TopComponentsDestination.AppBarExamples -> AppBarExamples() + TopComponentsDestination.AppBarExamples -> AppBarExamples() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt index ee638c4c6..25e7a005e 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt @@ -120,22 +120,22 @@ fun BottomAppBarExample() { bottomBar = { BottomAppBar( actions = { - IconButton(onClick = { /* doSomething() */ }) { + IconButton(onClick = { /* do something */ }) { Icon(Icons.Filled.Check, contentDescription = "Localized description") } - IconButton(onClick = { /* doSomething() */ }) { + IconButton(onClick = { /* do something */ }) { Icon( Icons.Filled.Edit, contentDescription = "Localized description", ) } - IconButton(onClick = { /* doSomething() */ }) { + IconButton(onClick = { /* do something */ }) { Icon( Icons.Filled.Mic, contentDescription = "Localized description", ) } - IconButton(onClick = { /* doSomething() */ }) { + IconButton(onClick = { /* do something */ }) { Icon( Icons.Filled.Image, contentDescription = "Localized description", @@ -175,7 +175,7 @@ fun SmallTopAppBarExample() { titleContentColor = MaterialTheme.colorScheme.primary, ), title = { - Text("Small Top app bar") + Text("Small Top App Bar") } ) }, @@ -209,7 +209,7 @@ fun CenterAlignedTopAppBarExample() { ) }, navigationIcon = { - IconButton(onClick = { /* doSomething() */ }) { + IconButton(onClick = { /* do something */ }) { Icon( imageVector = Icons.Filled.ArrowBack, contentDescription = "Localized description" @@ -217,7 +217,7 @@ fun CenterAlignedTopAppBarExample() { } }, actions = { - IconButton(onClick = { /* doSomething() */ }) { + IconButton(onClick = { /* do something */ }) { Icon( imageVector = Icons.Filled.Menu, contentDescription = "Localized description" @@ -256,7 +256,7 @@ fun MediumTopAppBarExample() { ) }, navigationIcon = { - IconButton(onClick = { /* doSomething() */ }) { + IconButton(onClick = { /* do something */ }) { Icon( imageVector = Icons.Filled.ArrowBack, contentDescription = "Localized description" @@ -264,7 +264,7 @@ fun MediumTopAppBarExample() { } }, actions = { - IconButton(onClick = { /* doSomething() */ }) { + IconButton(onClick = { /* do something */ }) { Icon( imageVector = Icons.Filled.Menu, contentDescription = "Localized description" @@ -303,7 +303,7 @@ fun LargeTopAppBarExample() { ) }, navigationIcon = { - IconButton(onClick = { /* doSomething() */ }) { + IconButton(onClick = { /* do something */ }) { Icon( imageVector = Icons.Filled.ArrowBack, contentDescription = "Localized description" @@ -311,7 +311,7 @@ fun LargeTopAppBarExample() { } }, actions = { - IconButton(onClick = { /* doSomething() */ }) { + IconButton(onClick = { /* do something */ }) { Icon( imageVector = Icons.Filled.Menu, contentDescription = "Localized description" diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Dialog.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Dialog.kt index 1686f6596..b2ab9b723 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/Dialog.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Dialog.kt @@ -56,13 +56,17 @@ import androidx.compose.ui.window.DialogProperties import com.example.compose.snippets.R @Preview +// [START android_compose_components_dialogparent] @Composable fun DialogExamples() { + // [START_EXCLUDE] val openMinimalDialog = remember { mutableStateOf(false) } val openDialogWithImage = remember { mutableStateOf(false) } val openFullScreenDialog = remember { mutableStateOf(false) } + // [END_EXCLUDE] val openAlertDialog = remember { mutableStateOf(false) } + // [START_EXCLUDE] Column( modifier = Modifier .padding(16.dp) @@ -92,7 +96,9 @@ fun DialogExamples() { Text("Full screen dialog") } + // [END_EXCLUDE] when { + // [START_EXCLUDE] openMinimalDialog.value -> { MinimalDialog( onDismissRequest = { openMinimalDialog.value = false }, @@ -114,6 +120,7 @@ fun DialogExamples() { onDismissRequest = { openFullScreenDialog.value = false }, ) } + // [END_EXCLUDE] openAlertDialog.value -> { AlertDialogExample( onDismissRequest = { openAlertDialog.value = false }, @@ -129,6 +136,7 @@ fun DialogExamples() { } } } +// [END android_compose_components_dialogparent] // [START android_compose_components_minimaldialog] @Composable diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/ProgressIndicator.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/ProgressIndicator.kt index b2427b37f..4e2be678b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/ProgressIndicator.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/ProgressIndicator.kt @@ -19,7 +19,9 @@ package com.example.compose.snippets.components import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.LinearProgressIndicator @@ -70,6 +72,7 @@ fun LinearDeterminateIndicator() { Column( verticalArrangement = Arrangement.spacedBy(12.dp), horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier.fillMaxWidth() ) { Button(onClick = { loading = true @@ -84,6 +87,10 @@ fun LinearDeterminateIndicator() { } if (loading) { + LinearProgressIndicator( + modifier = Modifier.fillMaxWidth(), + progress = currentProgress + ) LinearProgressIndicator(progress = currentProgress) } } @@ -93,7 +100,7 @@ fun LinearDeterminateIndicator() { suspend fun loadProgress(updateProgress: (Float) -> Unit) { for (i in 1..100) { updateProgress(i.toFloat() / 100) - delay(500) + delay(100) } } // [END android_compose_components_determinateindicator] @@ -108,6 +115,7 @@ fun CircularDeterminateIndicator() { Column( verticalArrangement = Arrangement.spacedBy(12.dp), horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier.fillMaxWidth() ) { Button(onClick = { loading = true @@ -122,6 +130,10 @@ fun CircularDeterminateIndicator() { } if (loading) { + CircularProgressIndicator( + modifier = Modifier.width(64.dp), + progress = currentProgress + ) CircularProgressIndicator(progress = currentProgress) } } @@ -139,6 +151,7 @@ fun IndeterminateLinearIndicator() { if (!loading) return LinearProgressIndicator( + modifier = Modifier.fillMaxWidth(), color = MaterialTheme.colorScheme.surfaceVariant, trackColor = MaterialTheme.colorScheme.secondary, ) @@ -157,6 +170,7 @@ fun IndeterminateCircularIndicator() { if (!loading) return CircularProgressIndicator( + modifier = Modifier.width(64.dp), color = MaterialTheme.colorScheme.surfaceVariant, trackColor = MaterialTheme.colorScheme.secondary, ) From 255b2c574a551e24db25033a41481e19257d5b4c Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Tue, 29 Aug 2023 17:54:00 +0100 Subject: [PATCH 124/463] Fix indicators (#145) Fixing duplicate components. --- .../example/compose/snippets/components/ProgressIndicator.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/ProgressIndicator.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/ProgressIndicator.kt index 4e2be678b..9faec0d80 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/ProgressIndicator.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/ProgressIndicator.kt @@ -91,7 +91,6 @@ fun LinearDeterminateIndicator() { modifier = Modifier.fillMaxWidth(), progress = currentProgress ) - LinearProgressIndicator(progress = currentProgress) } } } @@ -134,7 +133,6 @@ fun CircularDeterminateIndicator() { modifier = Modifier.width(64.dp), progress = currentProgress ) - CircularProgressIndicator(progress = currentProgress) } } } From 8cda9e646ec187b5f5f7baceebced188bea754e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Mlynari=C4=8D?= Date: Wed, 30 Aug 2023 21:29:23 +0200 Subject: [PATCH 125/463] Add derivedStateOf snippets (#146) --- .../sideeffects/SideEffectsSnippets.kt | 59 +++++++++++++------ 1 file changed, 40 insertions(+), 19 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt index af2754bc0..4241e4af9 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt @@ -17,12 +17,12 @@ package com.example.compose.snippets.sideeffects import android.media.Image +import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material.Button import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost @@ -35,11 +35,12 @@ import androidx.compose.runtime.SideEffect import androidx.compose.runtime.State import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateListOf +import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.produceState import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalLifecycleOwner import androidx.lifecycle.Lifecycle @@ -47,6 +48,7 @@ import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.LifecycleOwner import com.example.compose.snippets.interop.FirebaseAnalytics import com.example.compose.snippets.interop.User +import com.example.compose.snippets.kotlin.Message import kotlinx.coroutines.delay import kotlinx.coroutines.launch @@ -236,28 +238,47 @@ sealed class Result { // [START android_compose_side_effects_derivedstateof] @Composable -fun TodoList(highPriorityKeywords: List = listOf("Review", "Unblock", "Compose")) { +// When the messages parameter changes, the MessageList +// composable recomposes. derivedStateOf does not +// affect this recomposition. +fun MessageList(messages: List) { + Box { + val listState = rememberLazyListState() - val todoTasks = remember { mutableStateListOf() } + LazyColumn(state = listState) { + // ... + } - // Calculate high priority tasks only when the todoTasks or highPriorityKeywords - // change, not on every recomposition - val highPriorityTasks by remember(highPriorityKeywords) { - derivedStateOf { - todoTasks.filter { task -> - highPriorityKeywords.any { keyword -> - task.contains(keyword) - } + // Show the button if the first visible item is past + // the first item. We use a remembered derived state to + // minimize unnecessary compositions + val showButton by remember { + derivedStateOf { + listState.firstVisibleItemIndex > 0 } } - } - Box(Modifier.fillMaxSize()) { - LazyColumn { - items(highPriorityTasks) { /* ... */ } - items(todoTasks) { /* ... */ } + AnimatedVisibility(visible = showButton) { + ScrollToTopButton() } - /* Rest of the UI where users can add elements to the list */ } } // [END android_compose_side_effects_derivedstateof] + +@Composable +fun ScrollToTopButton() { + // Button to scroll to the top of list. +} + +@Suppress("CanBeVal") +@Composable +fun DerivedStateOfWrongUsage() { + // [START android_compose_side_effects_derivedstateof_wrong] + // DO NOT USE. Incorrect usage of derivedStateOf. + var firstName by remember { mutableStateOf("") } + var lastName by remember { mutableStateOf("") } + + val fullNameBad by remember { derivedStateOf { "$firstName $lastName" } } // This is bad!!! + val fullNameCorrect = "$firstName $lastName" // This is correct + // [END android_compose_side_effects_derivedstateof_wrong] +} From 56de2a4893da28c4c312783d893be8ef0eed6a81 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Thu, 31 Aug 2023 17:55:07 +0200 Subject: [PATCH 126/463] Update write bitmap snippet. (#144) * Clean up snippet for bitmap --- .../compose/snippets/SnippetsActivity.kt | 2 +- .../graphics/AdvancedGraphicsSnippets.kt | 24 ++++++++++++------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 6f4f76542..d2e129ca2 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -90,7 +90,7 @@ class SnippetsActivity : ComponentActivity() { TopComponentsDestination.ButtonExamples -> ButtonExamples() TopComponentsDestination.ProgressIndicatorExamples -> ProgressIndicatorExamples() TopComponentsDestination.ScaffoldExample -> ScaffoldExample() - TopComponentsDestination.AppBarExamples -> AppBarExamples() + TopComponentsDestination.AppBarExamples -> AppBarExamples() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt index e1b63a9eb..63d3300ba 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt @@ -21,6 +21,7 @@ import android.content.Context import android.content.Intent import android.content.Intent.createChooser import android.graphics.Bitmap +import android.graphics.Canvas import android.graphics.Picture import android.media.MediaScannerConnection import android.net.Uri @@ -165,6 +166,7 @@ fun BitmapFromComposableSnippet() { drawIntoCanvas { canvas -> canvas.nativeCanvas.drawPicture(picture) } } } + ) { ScreenContentToCapture() } @@ -205,15 +207,19 @@ private fun ScreenContentToCapture() { private fun createBitmapFromPicture(picture: Picture): Bitmap { // [START android_compose_draw_into_bitmap_convert_picture] - val bitmap = Bitmap.createBitmap( - picture.width, - picture.height, - Bitmap.Config.ARGB_8888 - ) - - val canvas = android.graphics.Canvas(bitmap) - canvas.drawColor(android.graphics.Color.WHITE) - canvas.drawPicture(picture) + val bitmap = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + Bitmap.createBitmap(picture) + } else { + val bitmap = Bitmap.createBitmap( + picture.width, + picture.height, + Bitmap.Config.ARGB_8888 + ) + val canvas = android.graphics.Canvas(bitmap) + canvas.drawColor(android.graphics.Color.WHITE) + canvas.drawPicture(picture) + bitmap + } // [END android_compose_draw_into_bitmap_convert_picture] return bitmap } From c7b62c1381058ffab1f72c3ebf35a0344bfbe7de Mon Sep 17 00:00:00 2001 From: Hoyt Summers Pittman Date: Thu, 7 Sep 2023 08:02:47 -0400 Subject: [PATCH 127/463] updating glance and agp versions (#148) --- gradle/libs.versions.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f69da380d..222917da7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ ##### [versions] accompanist = "0.30.1" -androidGradlePlugin = "8.1.0" +androidGradlePlugin = "8.1.1" androidx-activity-compose = "1.8.0-alpha06" androidx-appcompat = "1.6.1" androidx-benchmark = "1.1.1" @@ -17,7 +17,7 @@ androidx-coordinator-layout = "1.2.0" androidx-corektx = "1.9.0" androidx-emoji2-views = "1.4.0-beta05" androidx-fragment-ktx = "1.6.1" -androidx-glance-appwidget = "1.0.0-rc01" +androidx-glance-appwidget = "1.0.0" androidx-lifecycle-compose = "2.6.1" androidx-lifecycle-runtime-compose = "2.6.1" androidx-navigation = "2.7.0" From 5ae1f7852164d98d055b3cc6b463705989cff231 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Thu, 14 Sep 2023 08:39:32 -0400 Subject: [PATCH 128/463] Clean up dependency imports for Compose snippets (#151) * Removing dispatcher from Bitmap writing, to fix crash when picture is being written to at the same time as this. * Apply Spotless * Fix workflow to trigger on pushes of spotless changes too Need to add the PAT https://github.com/stefanzweifel/git-auto-commit-action#commits-made-by-this-action-do-not-trigger-new-workflow-runs --------- Co-authored-by: riggaroo --- .github/workflows/build.yml | 6 +- .github/workflows/update_deps.yml | 2 +- .../animations/AnimationQuickGuide.kt | 2 + .../graphics/AdvancedGraphicsSnippets.kt | 8 +- .../tooling/AndroidStudioComposeSnippets.kt | 10 +-- gradle/libs.versions.toml | 78 ++++--------------- 6 files changed, 25 insertions(+), 81 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bf0a6ff8b..7acbcb452 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -30,7 +30,8 @@ jobs: steps: - uses: actions/checkout@v3 - + with: + token: ${{ secrets.PAT}} - name: set up Java 17 uses: actions/setup-java@v2 with: @@ -47,6 +48,3 @@ jobs: run: ./gradlew :compose:recomposehighlighter:build - name: Build kotlin snippets run: ./gradlew :kotlin:build - # TODO fix bluetoothle snippets (lint is failing) - name: Build bluetoothle snippets - # run: ./gradlew :bluetoothle:build - diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml index b7602f303..9f92a69b2 100644 --- a/.github/workflows/update_deps.yml +++ b/.github/workflows/update_deps.yml @@ -29,5 +29,5 @@ jobs: branch: bot-update-deps delete-branch: true title: '🤖 Update Dependencies' - body: Updated depedencies + body: Updated dependencies reviewers: ${{ github.actor }} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt index 7c6493578..297f579a4 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt @@ -87,6 +87,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment +import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.drawBehind @@ -719,6 +720,7 @@ private fun LoadingScreen() { } } +@OptIn(ExperimentalComposeUiApi::class) @Preview @Composable fun AnimationLayout() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt index 63d3300ba..900f38da6 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt @@ -21,7 +21,6 @@ import android.content.Context import android.content.Intent import android.content.Intent.createChooser import android.graphics.Bitmap -import android.graphics.Canvas import android.graphics.Picture import android.media.MediaScannerConnection import android.net.Uri @@ -45,8 +44,10 @@ import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarResult import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawWithCache @@ -67,7 +68,6 @@ import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.permissions.rememberMultiplePermissionsState import java.io.File import kotlin.coroutines.resume -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.suspendCancellableCoroutine @@ -86,6 +86,7 @@ import kotlinx.coroutines.suspendCancellableCoroutine * See the License for the specific language governing permissions and * limitations under the License. */ + @OptIn(ExperimentalPermissionsApi::class) @Preview @Composable @@ -108,7 +109,7 @@ fun BitmapFromComposableSnippet() { // and shares it with the default share sheet. fun shareBitmapFromComposable() { if (writeStorageAccessState.allPermissionsGranted) { - coroutineScope.launch(Dispatchers.IO) { + coroutineScope.launch { val bitmap = createBitmapFromPicture(picture) val uri = bitmap.saveToDisk(context) shareBitmap(context, uri) @@ -158,6 +159,7 @@ fun BitmapFromComposableSnippet() { height ) ) + // requires at least 1.6.0-alpha01+ draw(this, this.layoutDirection, pictureCanvas, this.size) { this@onDrawWithContent.drawContent() } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/tooling/AndroidStudioComposeSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/tooling/AndroidStudioComposeSnippets.kt index eda389162..d1c23a52d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/tooling/AndroidStudioComposeSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/tooling/AndroidStudioComposeSnippets.kt @@ -16,8 +16,6 @@ package com.example.compose.snippets.tooling -import androidx.annotation.FloatRange -import androidx.annotation.IntRange import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.material3.MaterialTheme @@ -28,14 +26,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalInspectionMode import androidx.compose.ui.res.stringResource -import androidx.compose.ui.tooling.preview.Device -import androidx.compose.ui.tooling.preview.Devices import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameterProvider -import androidx.compose.ui.tooling.preview.UiMode -import androidx.compose.ui.tooling.preview.Wallpaper -import androidx.compose.ui.tooling.preview.Wallpapers import com.example.compose.snippets.R import com.example.compose.snippets.interop.User @@ -174,7 +167,7 @@ fun UserProfilePreview2( UserProfile(user) } // [END android_compose_tooling_preview_parameter_provider_composable2] - +/* private object PreviewAnnotationEx { // [START android_compose_tooling_preview_annotation] annotation class Preview( @@ -194,3 +187,4 @@ private object PreviewAnnotationEx { ) // [END android_compose_tooling_preview_annotation] } + */ diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 222917da7..12c713722 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,36 +1,23 @@ -##### -# This file is duplicated to individual samples from the global scripts/libs.versions.toml -# Do not add a dependency to an individual sample, edit the global version instead. -##### [versions] accompanist = "0.30.1" androidGradlePlugin = "8.1.1" -androidx-activity-compose = "1.8.0-alpha06" +androidx-activity-compose = "1.8.0-beta01" androidx-appcompat = "1.6.1" -androidx-benchmark = "1.1.1" -androidx-benchmark-junit4 = "1.1.0-beta04" -androidx-cardview = "1.0.0" -androidx-compose-bom = "2023.08.00" +androidx-compose-bom = "2023.09.00" androidx-constraintlayout = "2.1.4" -androidx-constraintlayout-compose = "1.1.0-alpha12" +androidx-constraintlayout-compose = "1.0.1" androidx-coordinator-layout = "1.2.0" -androidx-corektx = "1.9.0" -androidx-emoji2-views = "1.4.0-beta05" +androidx-corektx = "1.12.0" +androidx-emoji2-views = "1.4.0" androidx-fragment-ktx = "1.6.1" androidx-glance-appwidget = "1.0.0" -androidx-lifecycle-compose = "2.6.1" -androidx-lifecycle-runtime-compose = "2.6.1" -androidx-navigation = "2.7.0" -androidx-paging = "3.2.0-rc01" -androidx-paging-common = "3.1.1" -androidx-palette = "1.0.0" +androidx-lifecycle-compose = "2.6.2" +androidx-lifecycle-runtime-compose = "2.6.2" +androidx-navigation = "2.7.2" +androidx-paging = "3.2.1" androidx-test = "1.5.0" androidx-test-espresso = "3.5.1" -androidx-test-ext-junit = "1.1.5" -androidx-test-ext-truth = "1.5.0" -androidx-window = "1.2.0-alpha02" androidxHiltNavigationCompose = "1.0.0" -androix-test-uiautomator = "2.2.0" coil = "2.4.0" # @keep compileSdk = "34" @@ -39,23 +26,15 @@ coroutines = "1.7.3" google-maps = "18.1.0" gradle-versions = "0.47.0" hilt = "2.47" -hiltExt = "1.0.0" -# @pin When updating to AGP 7.4.0-alpha10 and up we can update this https://developer.android.com/studio/write/java8-support#library-desugaring-versions -jdkDesugar = "1.2.2" junit = "4.13.2" # @pin Update in conjuction with Compose Compiler kotlin = "1.8.21" ksp = "1.8.0-1.0.9" maps-compose = "2.13.0" -material = "1.11.0-alpha01" +material = "1.11.0-alpha02" # @keep minSdk = "21" -okhttp = "4.11.0" recyclerview = "1.3.1" -robolectric = "4.9.2" -rome = "1.18.0" -room = "2.5.1" -secrets = "2.0.1" # @keep targetSdk = "34" version-catalog-update = "0.8.1" @@ -63,18 +42,12 @@ version-catalog-update = "0.8.1" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" } -accompanist-swiperefresh = { module = "com.google.accompanist:accompanist-swiperefresh", version.ref = "accompanist" } -accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanist" } accompanist-theme-adapter-appcompat = { module = "com.google.accompanist:accompanist-themeadapter-appcompat", version.ref = "accompanist" } accompanist-theme-adapter-material = { module = "com.google.accompanist:accompanist-themeadapter-material", version.ref = "accompanist" } accompanist-theme-adapter-material3 = { module = "com.google.accompanist:accompanist-themeadapter-material3", version.ref = "accompanist" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } -androidx-activity-ktx = "androidx.activity:activity-ktx:1.8.0-alpha05" + androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } -androidx-benchmark-macrobenchmark = { module = "androidx.benchmark:benchmark-macro", version.ref = "androidx-benchmark" } -androidx-benchmark-macrobenchmark-junit4 = { module = "androidx.benchmark:benchmark-macro-junit4", version.ref = "androidx-benchmark-junit4" } -androidx-cardview = { module = "androidx.cardview:cardview", version.ref = "androidx-cardview" } -androidx-compose-animation = { module = "androidx.compose.animation:animation" } androidx-compose-animation-graphics = { module = "androidx.compose.animation:animation-graphics" } androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "androidx-compose-bom" } androidx-compose-foundation = { module = "androidx.compose.foundation:foundation" } @@ -87,7 +60,8 @@ androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" } androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" } androidx-compose-ui = { module = "androidx.compose.ui:ui" } androidx-compose-ui-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" } -androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } +# TODO remove usage of this when `draw` method is in stable. +androidx-compose-ui-graphics = "androidx.compose.ui:ui-graphics:1.6.0-alpha05" androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } @@ -104,59 +78,33 @@ androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref androidx-glance-appwidget = { module = "androidx.glance:glance-appwidget", version.ref = "androidx-glance-appwidget" } androidx-glance-material3 = { module = "androidx.glance:glance-material3", version.ref = "androidx-glance-appwidget" } androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "androidxHiltNavigationCompose" } -androidx-lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle-compose" } androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidx-lifecycle-compose" } androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle-runtime-compose" } androidx-lifecycle-viewModelCompose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle-compose" } androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle-compose" } -androidx-lifecycle-viewmodel-savedstate = { module = "androidx.lifecycle:lifecycle-viewmodel-savedstate", version.ref = "androidx-lifecycle-compose" } androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "androidx-navigation" } -androidx-navigation-fragment = { module = "androidx.navigation:navigation-fragment-ktx", version.ref = "androidx-navigation" } -androidx-navigation-ui-ktx = { module = "androidx.navigation:navigation-ui-ktx", version.ref = "androidx-navigation" } -androidx-paging-common-ktx = { module = "androidx.paging:paging-common-ktx", version.ref = "androidx-paging-common" } androidx-paging-compose = { module = "androidx.paging:paging-compose", version.ref = "androidx-paging" } -androidx-palette = { module = "androidx.palette:palette", version.ref = "androidx-palette" } androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" } -androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } -androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" } -androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } androidx-test-core = { module = "androidx.test:core", version.ref = "androidx-test" } androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-test-espresso" } -androidx-test-ext-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-test-ext-junit" } -androidx-test-ext-truth = { module = "androidx.test.ext:truth", version.ref = "androidx-test-ext-truth" } -androidx-test-rules = { module = "androidx.test:rules", version.ref = "androidx-test" } androidx-test-runner = "androidx.test:runner:1.5.2" -androidx-test-uiautomator = { module = "androidx.test.uiautomator:uiautomator", version.ref = "androix-test-uiautomator" } -androidx-window = { module = "androidx.window:window", version.ref = "androidx-window" } androidx-work-runtime-ktx = "androidx.work:work-runtime-ktx:2.8.1" coil-kt-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } -core-jdk-desugaring = { module = "com.android.tools:desugar_jdk_libs", version.ref = "jdkDesugar" } google-android-material = { module = "com.google.android.material:material", version.ref = "material" } googlemaps-compose = { module = "com.google.maps.android:maps-compose", version.ref = "maps-compose" } googlemaps-maps = { module = "com.google.android.gms:play-services-maps", version.ref = "google-maps" } hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" } -hilt-android-testing = { module = "com.google.dagger:hilt-android-testing", version.ref = "hilt" } hilt-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hilt" } -hilt-ext-compiler = { module = "androidx.hilt:hilt-compiler", version.ref = "hiltExt" } junit = { module = "junit:junit", version.ref = "junit" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } -okhttp-logging = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "okhttp" } -okhttp3 = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } -robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" } -rometools-modules = { module = "com.rometools:rome-modules", version.ref = "rome" } -rometools-rome = { module = "com.rometools:rome", version.ref = "rome" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } -android-test = { id = "com.android.test", version.ref = "androidGradlePlugin" } gradle-versions = { id = "com.github.ben-manes.versions", version.ref = "gradle-versions" } hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } -kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } -ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } -secrets = { id = "com.google.android.libraries.mapsplatform.secrets-gradle-plugin", version.ref = "secrets" } version-catalog-update = { id = "nl.littlerobots.version-catalog-update", version.ref = "version-catalog-update" } From 3f009192432af7d8d045aa1e2c79ff5dc14f47b5 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Thu, 21 Sep 2023 13:37:06 +0100 Subject: [PATCH 129/463] Create blunderbuss.yml to auto assign issues (#152) --- .github/blunderbuss.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .github/blunderbuss.yml diff --git a/.github/blunderbuss.yml b/.github/blunderbuss.yml new file mode 100644 index 000000000..0171c48bb --- /dev/null +++ b/.github/blunderbuss.yml @@ -0,0 +1,3 @@ +assign_issues: + - android/compose-devrel + From edc51360798b8bb9eb540fc74a45a79710f307fa Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Mon, 2 Oct 2023 17:32:50 +0100 Subject: [PATCH 130/463] =?UTF-8?q?=F0=9F=A4=96=20Update=20Dependencies=20?= =?UTF-8?q?(#154)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 12c713722..9cde771fa 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,19 +1,19 @@ [versions] -accompanist = "0.30.1" -androidGradlePlugin = "8.1.1" -androidx-activity-compose = "1.8.0-beta01" +accompanist = "0.32.0" +androidGradlePlugin = "8.1.2" +androidx-activity-compose = "1.8.0-rc01" androidx-appcompat = "1.6.1" -androidx-compose-bom = "2023.09.00" +androidx-compose-bom = "2023.09.02" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" androidx-coordinator-layout = "1.2.0" -androidx-corektx = "1.12.0" +androidx-corektx = "1.9.0" androidx-emoji2-views = "1.4.0" androidx-fragment-ktx = "1.6.1" androidx-glance-appwidget = "1.0.0" androidx-lifecycle-compose = "2.6.2" androidx-lifecycle-runtime-compose = "2.6.2" -androidx-navigation = "2.7.2" +androidx-navigation = "2.7.3" androidx-paging = "3.2.1" androidx-test = "1.5.0" androidx-test-espresso = "3.5.1" @@ -24,14 +24,14 @@ compileSdk = "34" compose-compiler = "1.4.7" coroutines = "1.7.3" google-maps = "18.1.0" -gradle-versions = "0.47.0" -hilt = "2.47" +gradle-versions = "0.48.0" +hilt = "2.48" junit = "4.13.2" # @pin Update in conjuction with Compose Compiler kotlin = "1.8.21" ksp = "1.8.0-1.0.9" -maps-compose = "2.13.0" -material = "1.11.0-alpha02" +maps-compose = "2.15.0" +material = "1.11.0-alpha03" # @keep minSdk = "21" recyclerview = "1.3.1" @@ -46,7 +46,6 @@ accompanist-theme-adapter-appcompat = { module = "com.google.accompanist:accompa accompanist-theme-adapter-material = { module = "com.google.accompanist:accompanist-themeadapter-material", version.ref = "accompanist" } accompanist-theme-adapter-material3 = { module = "com.google.accompanist:accompanist-themeadapter-material3", version.ref = "accompanist" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } - androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } androidx-compose-animation-graphics = { module = "androidx.compose.animation:animation-graphics" } androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "androidx-compose-bom" } @@ -61,7 +60,7 @@ androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime androidx-compose-ui = { module = "androidx.compose.ui:ui" } androidx-compose-ui-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" } # TODO remove usage of this when `draw` method is in stable. -androidx-compose-ui-graphics = "androidx.compose.ui:ui-graphics:1.6.0-alpha05" +androidx-compose-ui-graphics = "androidx.compose.ui:ui-graphics:1.6.0-alpha06" androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } From 4685568346a1f2e05f8e24e7d157520c46a075e8 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Thu, 12 Oct 2023 10:26:31 +0100 Subject: [PATCH 131/463] =?UTF-8?q?=F0=9F=A4=96=20Update=20Dependencies=20?= =?UTF-8?q?(#155)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9cde771fa..14713d1f9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ accompanist = "0.32.0" androidGradlePlugin = "8.1.2" androidx-activity-compose = "1.8.0-rc01" androidx-appcompat = "1.6.1" -androidx-compose-bom = "2023.09.02" +androidx-compose-bom = "2023.10.00" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" androidx-coordinator-layout = "1.2.0" @@ -13,7 +13,7 @@ androidx-fragment-ktx = "1.6.1" androidx-glance-appwidget = "1.0.0" androidx-lifecycle-compose = "2.6.2" androidx-lifecycle-runtime-compose = "2.6.2" -androidx-navigation = "2.7.3" +androidx-navigation = "2.7.4" androidx-paging = "3.2.1" androidx-test = "1.5.0" androidx-test-espresso = "3.5.1" @@ -24,13 +24,13 @@ compileSdk = "34" compose-compiler = "1.4.7" coroutines = "1.7.3" google-maps = "18.1.0" -gradle-versions = "0.48.0" -hilt = "2.48" +gradle-versions = "0.49.0" +hilt = "2.48.1" junit = "4.13.2" # @pin Update in conjuction with Compose Compiler kotlin = "1.8.21" ksp = "1.8.0-1.0.9" -maps-compose = "2.15.0" +maps-compose = "3.1.0" material = "1.11.0-alpha03" # @keep minSdk = "21" @@ -60,7 +60,7 @@ androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime androidx-compose-ui = { module = "androidx.compose.ui:ui" } androidx-compose-ui-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" } # TODO remove usage of this when `draw` method is in stable. -androidx-compose-ui-graphics = "androidx.compose.ui:ui-graphics:1.6.0-alpha06" +androidx-compose-ui-graphics = "androidx.compose.ui:ui-graphics:1.6.0-alpha07" androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } From 0c7be2bf008b0f7548fe8f4fa52125c24a6fa24c Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Thu, 19 Oct 2023 17:23:47 +0200 Subject: [PATCH 132/463] Add constraints and modifier order snippets (#156) * Add constraints and modifier order snippets * Rename frag to hero * Remove preview parameters --- .../layouts/ConstraintsModifiersSnippets.kt | 88 ++++++++++++++++++ .../snippets/src/main/res/drawable/hero.png | Bin 0 -> 79432 bytes 2 files changed, 88 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/layouts/ConstraintsModifiersSnippets.kt create mode 100644 compose/snippets/src/main/res/drawable/hero.png diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/ConstraintsModifiersSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/ConstraintsModifiersSnippets.kt new file mode 100644 index 000000000..ad7275c1d --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/ConstraintsModifiersSnippets.kt @@ -0,0 +1,88 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.layouts + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.requiredSize +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.wrapContentSize +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.example.compose.snippets.R + +val containerModifier = Modifier.requiredSize(300.dp, 200.dp).background(Color(0xFFD1F1FE)) + +@Preview +@Composable +private fun Demo1() { + Box(containerModifier, contentAlignment = Alignment.Center) { + // [START android_compose_layout_constraints_modifiers_1] + Image( + painterResource(R.drawable.hero), + contentDescription = null, + Modifier + .fillMaxSize() + .size(50.dp) + ) + // [END android_compose_layout_constraints_modifiers_1] + } +} + +@Preview +@Composable +private fun Demo2() { + Box(containerModifier, contentAlignment = Alignment.Center) { + // [START android_compose_layout_constraints_modifiers_2] + Image( + painterResource(R.drawable.hero), + contentDescription = null, + Modifier + .fillMaxSize() + .wrapContentSize() + .size(50.dp) + ) + // [END android_compose_layout_constraints_modifiers_2] + } +} + +@Preview +@Composable +private fun Demo3() { + Box(containerModifier, contentAlignment = Alignment.Center) { + // [START android_compose_layout_constraints_modifiers_3] + Image( + painterResource(R.drawable.hero), + contentDescription = null, + Modifier + .clip(CircleShape) + .padding(10.dp) + .size(100.dp) + ) + // [END android_compose_layout_constraints_modifiers_3] + } +} diff --git a/compose/snippets/src/main/res/drawable/hero.png b/compose/snippets/src/main/res/drawable/hero.png new file mode 100644 index 0000000000000000000000000000000000000000..be4f76e58ea59d5799fc9bcdb5cfc84b1d7ce18c GIT binary patch literal 79432 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℘JT(KdH!bfQ1P>_4y6idm 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 Date: Mon, 23 Oct 2023 14:41:36 +0100 Subject: [PATCH 133/463] =?UTF-8?q?=F0=9F=A4=96=20Update=20Dependencies=20?= =?UTF-8?q?(#161)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 14713d1f9..fe702b8ad 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ accompanist = "0.32.0" androidGradlePlugin = "8.1.2" androidx-activity-compose = "1.8.0-rc01" androidx-appcompat = "1.6.1" -androidx-compose-bom = "2023.10.00" +androidx-compose-bom = "2023.10.01" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" androidx-coordinator-layout = "1.2.0" @@ -23,18 +23,18 @@ coil = "2.4.0" compileSdk = "34" compose-compiler = "1.4.7" coroutines = "1.7.3" -google-maps = "18.1.0" +google-maps = "18.2.0" gradle-versions = "0.49.0" hilt = "2.48.1" junit = "4.13.2" # @pin Update in conjuction with Compose Compiler kotlin = "1.8.21" ksp = "1.8.0-1.0.9" -maps-compose = "3.1.0" -material = "1.11.0-alpha03" +maps-compose = "3.1.1" +material = "1.11.0-beta01" # @keep minSdk = "21" -recyclerview = "1.3.1" +recyclerview = "1.3.2" # @keep targetSdk = "34" version-catalog-update = "0.8.1" @@ -60,7 +60,7 @@ androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime androidx-compose-ui = { module = "androidx.compose.ui:ui" } androidx-compose-ui-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" } # TODO remove usage of this when `draw` method is in stable. -androidx-compose-ui-graphics = "androidx.compose.ui:ui-graphics:1.6.0-alpha07" +androidx-compose-ui-graphics = "androidx.compose.ui:ui-graphics:1.6.0-alpha08" androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } From af17252307f34b555be384b7711c553146472dd9 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Mon, 23 Oct 2023 15:07:56 +0100 Subject: [PATCH 134/463] Fix pager snippets (#160) * Update PagerSnippets.kt rectified error 1. Modifer.align(Alignment.BottomCenter) is replaced by verticalArrangement property which is no more working 2. wrong value 10 is replaced by 4 for pageCount 3. made text more visible by putting it inside a box * fix pager snippets --------- Co-authored-by: Karthi Keyan <84800257+KarthiDreamr@users.noreply.github.com> --- .../compose/snippets/layouts/PagerSnippets.kt | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt index 85e9a454d..f65c96e6d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt @@ -36,6 +36,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.sizeIn +import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.PageSize @@ -361,38 +362,36 @@ fun PagerWithTabs() { @Preview @Composable fun PagerIndicator() { - Box { + Box(modifier = Modifier.fillMaxSize()) { // [START android_compose_pager_indicator] - val pageCount = 10 val pagerState = rememberPagerState(pageCount = { 4 }) HorizontalPager( - state = pagerState + state = pagerState, + modifier = Modifier.fillMaxSize() ) { page -> // Our page content Text( text = "Page: $page", - modifier = Modifier - .fillMaxSize() ) } Row( Modifier - .height(50.dp) + .wrapContentHeight() .fillMaxWidth() - .align(Alignment.BottomCenter), + .align(Alignment.BottomCenter) + .padding(bottom = 8.dp), horizontalArrangement = Arrangement.Center ) { - repeat(pageCount) { iteration -> + repeat(pagerState.pageCount) { iteration -> val color = if (pagerState.currentPage == iteration) Color.DarkGray else Color.LightGray Box( modifier = Modifier .padding(2.dp) .clip(CircleShape) .background(color) - .size(20.dp) - + .size(16.dp) ) } } From 2a478c4ec0f21d5793042a2ab2966951c50e545c Mon Sep 17 00:00:00 2001 From: "Ian G. Clifton" <1033551+IanGClifton@users.noreply.github.com> Date: Wed, 15 Nov 2023 14:54:41 -0800 Subject: [PATCH 135/463] Added Compose adaptive layouts snippets (#165) * Added Compose adaptive layouts snippets * Apply Spotless * Fixed region tags --------- Co-authored-by: Ian G. Clifton --- compose/snippets/build.gradle.kts | 2 + .../SampleListDetailPaneScaffold.kt | 202 ++++++++++++++++++ gradle/libs.versions.toml | 3 + 3 files changed, 207 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index 4a65136d5..8c444ac14 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -91,6 +91,8 @@ dependencies { implementation(libs.androidx.compose.animation.graphics) implementation(libs.androidx.compose.material3) + implementation(libs.androidx.compose.material3.adaptive) + implementation(libs.androidx.compose.material3.adaptive.navigation.suite) implementation(libs.androidx.compose.material) implementation(libs.androidx.compose.runtime) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt new file mode 100644 index 000000000..82ebd757f --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt @@ -0,0 +1,202 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.adaptivelayouts + +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.material3.Card +import androidx.compose.material3.ListItem +import androidx.compose.material3.Text +import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi +import androidx.compose.material3.adaptive.ListDetailPaneScaffold +import androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole +import androidx.compose.material3.adaptive.rememberListDetailPaneScaffoldState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +@OptIn(ExperimentalMaterial3AdaptiveApi::class) +@Composable +fun SampleListDetailPaneScaffoldParts() { + // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part02] + val state = rememberListDetailPaneScaffoldState() + // [END android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part02] + + // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part01] + var selectedItem: MyItem? by rememberSaveable { mutableStateOf(null) } + // [END android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part01] + + // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part03] + ListDetailPaneScaffold( + scaffoldState = state, + /* ... */ + // [START_EXCLUDE] + listPane = {}, + detailPane = {}, + // [END_EXCLUDE] + ) + // [END android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part03] + + // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part04] + ListDetailPaneScaffold( + scaffoldState = state, + listPane = { + MyList( + onItemClick = { id -> + // Set current item + selectedItem = id + // Switch focus to details pane + state.navigateTo(ListDetailPaneScaffoldRole.Detail) + } + ) + }, + /* ... */ + // [START_EXCLUDE] + detailPane = {}, + // [END_EXCLUDE] + ) + // [END android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part04] + + // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part05] + ListDetailPaneScaffold( + scaffoldState = state, + listPane = /* ... */ + // [START_EXCLUDE] + {}, + // [END_EXCLUDE] + detailPane = { + selectedItem?.let { item -> + MyDetails(item) + } + }, + ) + // [END android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part05] +} + +@OptIn(ExperimentalMaterial3AdaptiveApi::class) +@Preview +@Composable +fun SampleListDetailPaneScaffoldFull() { +// [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_full] + // Create the ListDetailPaneScaffoldState + val state = rememberListDetailPaneScaffoldState() + + // Currently selected item + var selectedItem: MyItem? by rememberSaveable { mutableStateOf(null) } + + ListDetailPaneScaffold( + scaffoldState = state, + listPane = { + MyList( + onItemClick = { id -> + // Set current item + selectedItem = id + // Display the details pane + state.navigateTo(ListDetailPaneScaffoldRole.Detail) + }, + ) + }, + detailPane = { + // Show the details pane content if selected item is available + selectedItem?.let { item -> + MyDetails(item) + } + }, + ) +// [END android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_full] +} + +@Composable +fun MyList( + onItemClick: (MyItem) -> Unit, +) { + Card { + LazyColumn { + shortStrings.forEachIndexed { id, string -> + item { + ListItem( + modifier = Modifier + .background(Color.Magenta) + .clickable { + onItemClick(MyItem(id)) + }, + headlineContent = { + Text( + text = string, + ) + }, + ) + } + } + } + } +} + +@Composable +fun MyDetails(item: MyItem) { + val text = shortStrings[item.id] + Card { + Column( + Modifier + .fillMaxSize() + .padding(16.dp) + ) { + Text( + text = "Details page for $text", + fontSize = 24.sp, + ) + Spacer(Modifier.size(16.dp)) + Text( + text = "TODO: Add great details here" + ) + } + } +} + +class MyItem(val id: Int) + +val shortStrings = listOf( + "Android", + "Petit four", + "Cupcake", + "Donut", + "Eclair", + "Froyo", + "Gingerbread", + "Honeycomb", + "Ice cream sandwich", + "Jelly bean", + "Kitkat", + "Lollipop", + "Marshmallow", + "Nougat", + "Oreo", + "Pie", +) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fe702b8ad..117f2dcbe 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -32,6 +32,7 @@ kotlin = "1.8.21" ksp = "1.8.0-1.0.9" maps-compose = "3.1.1" material = "1.11.0-beta01" +material3-adaptive = "1.0.0-alpha01" # @keep minSdk = "21" recyclerview = "1.3.2" @@ -54,6 +55,8 @@ androidx-compose-foundation-layout = { module = "androidx.compose.foundation:fou androidx-compose-material = { module = "androidx.compose.material:material" } androidx-compose-material-iconsExtended = { module = "androidx.compose.material:material-icons-extended" } androidx-compose-material3 = { module = "androidx.compose.material3:material3" } +androidx-compose-material3-adaptive = { module = "androidx.compose.material3:material3-adaptive", version.ref = "material3-adaptive" } +androidx-compose-material3-adaptive-navigation-suite = { module = "androidx.compose.material3:material3-adaptive-navigation-suite", version.ref = "material3-adaptive" } androidx-compose-materialWindow = { module = "androidx.compose.material3:material3-window-size-class" } androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" } androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" } From 119247be9048387076f9ed9056d7b813d94d3a08 Mon Sep 17 00:00:00 2001 From: "Ian G. Clifton" <1033551+IanGClifton@users.noreply.github.com> Date: Wed, 15 Nov 2023 15:44:07 -0800 Subject: [PATCH 136/463] Removed ellipses in comments (#166) Apparently the tooling automatically adds these when using exclude code --- .../snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt index 82ebd757f..8f43c0868 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt @@ -56,7 +56,6 @@ fun SampleListDetailPaneScaffoldParts() { // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part03] ListDetailPaneScaffold( scaffoldState = state, - /* ... */ // [START_EXCLUDE] listPane = {}, detailPane = {}, @@ -77,7 +76,6 @@ fun SampleListDetailPaneScaffoldParts() { } ) }, - /* ... */ // [START_EXCLUDE] detailPane = {}, // [END_EXCLUDE] @@ -87,7 +85,7 @@ fun SampleListDetailPaneScaffoldParts() { // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part05] ListDetailPaneScaffold( scaffoldState = state, - listPane = /* ... */ + listPane = // [START_EXCLUDE] {}, // [END_EXCLUDE] From 142fdf21ad8fe119346c0f6c7acb690969b7d963 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Thu, 16 Nov 2023 11:52:22 +0200 Subject: [PATCH 137/463] Change to enableEdgeToEdge. (#164) --- compose/snippets/src/main/AndroidManifest.xml | 4 +++- .../com/example/compose/snippets/layouts/InsetsSnippets.kt | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/compose/snippets/src/main/AndroidManifest.xml b/compose/snippets/src/main/AndroidManifest.xml index d8b063164..7d1e0ebfb 100644 --- a/compose/snippets/src/main/AndroidManifest.xml +++ b/compose/snippets/src/main/AndroidManifest.xml @@ -31,7 +31,6 @@ @@ -44,6 +43,9 @@ android:value="" /> + + diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/InsetsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/InsetsSnippets.kt index d347a0a31..2bbf276b8 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/InsetsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/InsetsSnippets.kt @@ -21,6 +21,7 @@ package com.example.compose.snippets.layouts import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -52,7 +53,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.core.view.WindowCompat class InsetSnippetActivity : ComponentActivity() { @@ -60,7 +60,7 @@ class InsetSnippetActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - WindowCompat.setDecorFitsSystemWindows(window, false) + enableEdgeToEdge() setContent { Box(Modifier.safeDrawingPadding()) { From e4c5f27c7728d38e9c23cd055cd39201a947ecbb Mon Sep 17 00:00:00 2001 From: Ben Trengrove Date: Mon, 20 Nov 2023 19:51:54 +1100 Subject: [PATCH 138/463] Various small snippet fixes (#168) * Fix unused import in recompose highlighter Fixes #5 * Fix deprecations in progress indicators Also fix backwards colors Fixes #157 * Fix text color and unused apis Fixes #150 --- .../recomposehighlighter/RecomposeHighlighter.kt | 1 - .../compose/snippets/components/ProgressIndicator.kt | 12 ++++++------ .../example/compose/snippets/text/TextSnippets.kt | 7 +------ 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt b/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt index 06982367d..fd44e823c 100644 --- a/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt +++ b/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt @@ -32,7 +32,6 @@ import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.graphics.lerp import androidx.compose.ui.platform.debugInspectorInfo import androidx.compose.ui.unit.dp -import androidx.compose.ui.util.lerp import kotlin.math.min import kotlinx.coroutines.delay diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/ProgressIndicator.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/ProgressIndicator.kt index 9faec0d80..4d5055457 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/ProgressIndicator.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/ProgressIndicator.kt @@ -88,8 +88,8 @@ fun LinearDeterminateIndicator() { if (loading) { LinearProgressIndicator( + progress = { currentProgress }, modifier = Modifier.fillMaxWidth(), - progress = currentProgress ) } } @@ -130,8 +130,8 @@ fun CircularDeterminateIndicator() { if (loading) { CircularProgressIndicator( + progress = { currentProgress }, modifier = Modifier.width(64.dp), - progress = currentProgress ) } } @@ -150,8 +150,8 @@ fun IndeterminateLinearIndicator() { LinearProgressIndicator( modifier = Modifier.fillMaxWidth(), - color = MaterialTheme.colorScheme.surfaceVariant, - trackColor = MaterialTheme.colorScheme.secondary, + color = MaterialTheme.colorScheme.secondary, + trackColor = MaterialTheme.colorScheme.surfaceVariant, ) } @@ -169,8 +169,8 @@ fun IndeterminateCircularIndicator() { CircularProgressIndicator( modifier = Modifier.width(64.dp), - color = MaterialTheme.colorScheme.surfaceVariant, - trackColor = MaterialTheme.colorScheme.secondary, + color = MaterialTheme.colorScheme.secondary, + trackColor = MaterialTheme.colorScheme.surfaceVariant, ) } // [END android_compose_components_indeterminateindicator] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index 2b48a91f8..bfb8b837e 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -44,7 +44,6 @@ import androidx.compose.ui.graphics.Color.Companion.Cyan import androidx.compose.ui.graphics.Shadow import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString -import androidx.compose.ui.text.ExperimentalTextApi import androidx.compose.ui.text.ParagraphStyle import androidx.compose.ui.text.PlatformTextStyle import androidx.compose.ui.text.SpanStyle @@ -263,7 +262,6 @@ private object TextOverflowSnippet { } private object TextBrushSnippet1 { - @OptIn(ExperimentalTextApi::class) @Composable fun TextStyledBrushSnippet(text: String) { // [START android_compose_text_brush] @@ -282,7 +280,6 @@ private object TextBrushSnippet1 { } private object TextBrushSnippet2 { - @OptIn(ExperimentalTextApi::class) @Composable fun TextStyledBrushSnippet() { val rainbowColors: List = listOf() @@ -301,7 +298,6 @@ private object TextBrushSnippet2 { } private object TextBrushSnippet3 { - @OptIn(ExperimentalTextApi::class) @Composable fun TextStyledBrushSnippet() { val rainbowColors: List = listOf() @@ -326,7 +322,6 @@ private object TextBrushSnippet3 { } private object TextBrushSnippet4 { - @OptIn(ExperimentalTextApi::class) @Composable fun TextStyledBrushSnippet() { val rainbowColors: List = listOf() @@ -585,4 +580,4 @@ private object TextEffectiveStateManagement2 { private val firaSansFamily = FontFamily() val LightBlue = Color(0xFF0066FF) -val Purple = Color(0xFF0066FF) +val Purple = Color(0xFF800080) From 6bd878194c86eeebcc6bed5a2f99367813876c96 Mon Sep 17 00:00:00 2001 From: "Ian G. Clifton" <1033551+IanGClifton@users.noreply.github.com> Date: Mon, 20 Nov 2023 01:14:30 -0800 Subject: [PATCH 139/463] Changed details to detail for consistency (#167) Co-authored-by: Ian G. Clifton --- .../adaptivelayouts/SampleListDetailPaneScaffold.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt index 8f43c0868..c41483526 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt @@ -71,7 +71,7 @@ fun SampleListDetailPaneScaffoldParts() { onItemClick = { id -> // Set current item selectedItem = id - // Switch focus to details pane + // Switch focus to detail pane state.navigateTo(ListDetailPaneScaffoldRole.Detail) } ) @@ -116,13 +116,13 @@ fun SampleListDetailPaneScaffoldFull() { onItemClick = { id -> // Set current item selectedItem = id - // Display the details pane + // Display the detail pane state.navigateTo(ListDetailPaneScaffoldRole.Detail) }, ) }, detailPane = { - // Show the details pane content if selected item is available + // Show the detail pane content if selected item is available selectedItem?.let { item -> MyDetails(item) } From bd1718771a9625087c64e29e7f089ca049224e0b Mon Sep 17 00:00:00 2001 From: Ben Trengrove Date: Tue, 21 Nov 2023 09:31:28 +1100 Subject: [PATCH 140/463] Add custom modifier snippets (#169) * Add custom modifier snippets * Apply Spotless --- .../modifiers/CustomModifierSnippets.kt | 351 ++++++++++++++++++ gradle/libs.versions.toml | 4 +- 2 files changed, 353 insertions(+), 2 deletions(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/modifiers/CustomModifierSnippets.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/modifiers/CustomModifierSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/modifiers/CustomModifierSnippets.kt new file mode 100644 index 000000000..30b1b76ab --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/modifiers/CustomModifierSnippets.kt @@ -0,0 +1,351 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.modifiers + +import android.annotation.SuppressLint +import androidx.compose.animation.core.Animatable +import androidx.compose.animation.core.DecayAnimationSpec +import androidx.compose.animation.core.RepeatMode +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.infiniteRepeatable +import androidx.compose.animation.core.tween +import androidx.compose.animation.splineBasedDecay +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.LocalContentColor +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.getValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.graphics.drawscope.ContentDrawScope +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.layout.Measurable +import androidx.compose.ui.layout.MeasureResult +import androidx.compose.ui.layout.MeasureScope +import androidx.compose.ui.node.CompositionLocalConsumerModifierNode +import androidx.compose.ui.node.DelegatableNode +import androidx.compose.ui.node.DelegatingNode +import androidx.compose.ui.node.DrawModifierNode +import androidx.compose.ui.node.LayoutModifierNode +import androidx.compose.ui.node.ModifierNodeElement +import androidx.compose.ui.node.ObserverModifierNode +import androidx.compose.ui.node.currentValueOf +import androidx.compose.ui.node.invalidateDraw +import androidx.compose.ui.node.invalidateMeasurement +import androidx.compose.ui.node.observeReads +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.unit.Constraints +import androidx.compose.ui.unit.Density +import androidx.compose.ui.unit.IntSize +import androidx.compose.ui.unit.constrain +import androidx.compose.ui.unit.constrainHeight +import androidx.compose.ui.unit.constrainWidth +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.offset +import kotlinx.coroutines.launch + +@SuppressLint("ModifierFactoryUnreferencedReceiver") // graphics layer does the reference +// [START android_compose_custom_modifiers_1] +fun Modifier.clip(shape: Shape) = graphicsLayer(shape = shape, clip = true) +// [END android_compose_custom_modifiers_1] + +// [START android_compose_custom_modifiers_2] +fun Modifier.myBackground(color: Color) = this then Modifier + .padding(16.dp) + .clip(RoundedCornerShape(8.dp)) + .background(color) +// [END android_compose_custom_modifiers_2] + +// [START android_compose_custom_modifiers_3] +@Composable +fun Modifier.fade(enable: Boolean): Modifier { + val alpha by animateFloatAsState(if (enable) 0.5f else 1.0f) + return this then Modifier.graphicsLayer { this.alpha = alpha } +} +// [END android_compose_custom_modifiers_3] + +// [START android_compose_custom_modifiers_4] +@Composable +fun Modifier.fadedBackground(): Modifier { + val color = LocalContentColor.current + return this then Modifier.background(color.copy(alpha = 0.5f)) +} +// [END android_compose_custom_modifiers_4] + +private object CustomModifierSnippets5 { + // [START android_compose_custom_modifiers_5] + @Composable + fun Modifier.myBackground(): Modifier { + val color = LocalContentColor.current + return this then Modifier.background(color.copy(alpha = 0.5f)) + } + + @Composable + fun MyScreen() { + CompositionLocalProvider(LocalContentColor provides Color.Green) { + // Background modifier created with green background + val backgroundModifier = Modifier.myBackground() + + // LocalContentColor updated to red + CompositionLocalProvider(LocalContentColor provides Color.Red) { + + // Box will have green background, not red as expected. + Box(modifier = backgroundModifier) + } + } + } + // [END android_compose_custom_modifiers_5] +} + +// [START android_compose_custom_modifiers_6] +val extractedModifier = Modifier.background(Color.Red) // Hoisted to save allocations + +@Composable +fun Modifier.composableModifier(): Modifier { + val color = LocalContentColor.current.copy(alpha = 0.5f) + return this then Modifier.background(color) +} + +@Composable +fun MyComposable() { + val composedModifier = Modifier.composableModifier() // Cannot be extracted any higher +} +// [END android_compose_custom_modifiers_6] + +// [START android_compose_custom_modifiers_7] +// Modifier.Node +private class CircleNode(var color: Color) : DrawModifierNode, Modifier.Node() { + override fun ContentDrawScope.draw() { + drawCircle(color) + } +} +// [END android_compose_custom_modifiers_7] + +// [START android_compose_custom_modifiers_8] +// ModifierNodeElement +private data class CircleElement(val color: Color) : ModifierNodeElement() { + override fun create() = CircleNode(color) + + override fun update(node: CircleNode) { + node.color = color + } +} +// [END android_compose_custom_modifiers_8] + +// [START android_compose_custom_modifiers_9] +// Modifier factory +fun Modifier.circle(color: Color) = this then CircleElement(color) +// [END android_compose_custom_modifiers_9] + +private object CustomModifierSnippets10 { + // [START android_compose_custom_modifiers_10] + // Modifier factory + fun Modifier.circle(color: Color) = this then CircleElement(color) + + // ModifierNodeElement + private data class CircleElement(val color: Color) : ModifierNodeElement() { + override fun create() = CircleNode(color) + + override fun update(node: CircleNode) { + node.color = color + } + } + + // Modifier.Node + private class CircleNode(var color: Color) : DrawModifierNode, Modifier.Node() { + override fun ContentDrawScope.draw() { + drawCircle(color) + } + } + // [END android_compose_custom_modifiers_10] +} + +// [START android_compose_custom_modifiers_11] +fun Modifier.fixedPadding() = this then FixedPaddingElement + +data object FixedPaddingElement : ModifierNodeElement() { + override fun create() = FixedPaddingNode() + override fun update(node: FixedPaddingNode) {} +} + +class FixedPaddingNode : LayoutModifierNode, Modifier.Node() { + private val PADDING = 16.dp + + override fun MeasureScope.measure( + measurable: Measurable, + constraints: Constraints + ): MeasureResult { + val paddingPx = PADDING.roundToPx() + val horizontal = paddingPx * 2 + val vertical = paddingPx * 2 + + val placeable = measurable.measure(constraints.offset(-horizontal, -vertical)) + + val width = constraints.constrainWidth(placeable.width + horizontal) + val height = constraints.constrainHeight(placeable.height + vertical) + return layout(width, height) { + placeable.place(paddingPx, paddingPx) + } + } +} +// [END android_compose_custom_modifiers_11] + +// [START android_compose_custom_modifiers_12] +class BackgroundColorConsumerNode : + Modifier.Node(), + DrawModifierNode, + CompositionLocalConsumerModifierNode { + override fun ContentDrawScope.draw() { + val currentColor = currentValueOf(LocalContentColor) + drawRect(color = currentColor) + drawContent() + } +} +// [END android_compose_custom_modifiers_12] + +private object UnityDensity : Density { + override val density: Float + get() = 1f + override val fontScale: Float + get() = 1f +} +data class DefaultFlingBehavior(var flingDecay: DecayAnimationSpec) +// [START android_compose_custom_modifiers_13] +class ScrollableNode : + Modifier.Node(), + ObserverModifierNode, + CompositionLocalConsumerModifierNode { + + // Place holder fling behavior, we'll initialize it when the density is available. + val defaultFlingBehavior = DefaultFlingBehavior(splineBasedDecay(UnityDensity)) + + override fun onAttach() { + updateDefaultFlingBehavior() + observeReads { currentValueOf(LocalDensity) } // monitor change in Density + } + + override fun onObservedReadsChanged() { + // if density changes, update the default fling behavior. + updateDefaultFlingBehavior() + } + + private fun updateDefaultFlingBehavior() { + val density = currentValueOf(LocalDensity) + defaultFlingBehavior.flingDecay = splineBasedDecay(density) + } +} +// [END android_compose_custom_modifiers_13] + +object CustomModifierSnippets14 { + // [START android_compose_custom_modifiers_14] + class CircleNode(var color: Color) : Modifier.Node(), DrawModifierNode { + private val alpha = Animatable(1f) + + override fun ContentDrawScope.draw() { + drawCircle(color = color, alpha = alpha.value) + drawContent() + } + + override fun onAttach() { + coroutineScope.launch { + alpha.animateTo( + 0f, + infiniteRepeatable(tween(1000), RepeatMode.Reverse) + ) { + } + } + } + } + // [END android_compose_custom_modifiers_14] +} + +class InteractionData +class FocusableNode(val interactionData: InteractionData) : DelegatableNode { + override val node: Modifier.Node + get() = TODO("Not yet implemented") +} +class IndicationNode(val interactionData: InteractionData) : DelegatableNode { + override val node: Modifier.Node + get() = TODO("Not yet implemented") +} +// [START android_compose_custom_modifiers_15] +class ClickableNode : DelegatingNode() { + val interactionData = InteractionData() + val focusableNode = delegate( + FocusableNode(interactionData) + ) + val indicationNode = delegate( + IndicationNode(interactionData) + ) +} +// [END android_compose_custom_modifiers_15] + +class ClickablePointerInputNode(var onClick: () -> Unit) : Modifier.Node(), DelegatableNode { + fun update(onClick: () -> Unit) { + this.onClick = onClick + } +} +// [START android_compose_custom_modifiers_16] +class SampleInvalidatingNode( + var color: Color, + var size: IntSize, + var onClick: () -> Unit +) : DelegatingNode(), LayoutModifierNode, DrawModifierNode { + override val shouldAutoInvalidate: Boolean + get() = false + + private val clickableNode = delegate( + ClickablePointerInputNode(onClick) + ) + + fun update(color: Color, size: IntSize, onClick: () -> Unit) { + if (this.color != color) { + this.color = color + // Only invalidate draw when color changes + invalidateDraw() + } + + if (this.size != size) { + this.size = size + // Only invalidate layout when size changes + invalidateMeasurement() + } + + // If only onClick changes, we don't need to invalidate anything + clickableNode.update(onClick) + } + + override fun ContentDrawScope.draw() { + drawRect(color) + } + + override fun MeasureScope.measure( + measurable: Measurable, + constraints: Constraints + ): MeasureResult { + val size = constraints.constrain(size) + val placeable = measurable.measure(constraints) + return layout(size.width, size.height) { + placeable.place(0, 0) + } + } +} +// [END android_compose_custom_modifiers_16] diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 117f2dcbe..69d192aba 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -21,14 +21,14 @@ androidxHiltNavigationCompose = "1.0.0" coil = "2.4.0" # @keep compileSdk = "34" -compose-compiler = "1.4.7" +compose-compiler = "1.5.4" coroutines = "1.7.3" google-maps = "18.2.0" gradle-versions = "0.49.0" hilt = "2.48.1" junit = "4.13.2" # @pin Update in conjuction with Compose Compiler -kotlin = "1.8.21" +kotlin = "1.9.20" ksp = "1.8.0-1.0.9" maps-compose = "3.1.1" material = "1.11.0-beta01" From c2593d5d58078c976f36067d16b83dcd951f7094 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 21 Nov 2023 20:46:13 +0200 Subject: [PATCH 141/463] Migrate snippets from Material 3 (#171) * Added Material 3 snippets * Added Material 3 snippets * Apply Spotless --------- Co-authored-by: riggaroo --- .../designsystems/Material3Snipppets.kt | 478 ++++++++++++++++++ .../src/main/res/values-es/strings.xml | 4 + .../snippets/src/main/res/values/strings.xml | 4 + 3 files changed, 486 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snipppets.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snipppets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snipppets.kt new file mode 100644 index 000000000..18f1ceb94 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snipppets.kt @@ -0,0 +1,478 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.designsystems + +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Edit +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ExtendedFloatingActionButton +import androidx.compose.material3.FloatingActionButton +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.NavigationBar +import androidx.compose.material3.NavigationBarItem +import androidx.compose.material3.NavigationRail +import androidx.compose.material3.NavigationRailItem +import androidx.compose.material3.PermanentNavigationDrawer +import androidx.compose.material3.Shapes +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.Typography +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.RectangleShape +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.BaselineShift +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.compose.snippets.R +import com.example.compose.snippets.ui.theme.Typography + +private object Material3Snippets { + // [START android_compose_material3_experimental_annotation] + // import androidx.compose.material3.ExperimentalMaterial3Api + @OptIn(ExperimentalMaterial3Api::class) + @Composable + fun AppComposable() { + // M3 composables + } + + // [END android_compose_material3_experimental_annotation] +} + +@Composable +private fun Material3ThemeStart() { + // [START android_compose_material3_theme_definition] + MaterialTheme( + colorScheme = /* [START_EXCLUDE] */lightColorScheme()/* [END_EXCLUDE] */, + typography = /* [START_EXCLUDE] */Typography/* [END_EXCLUDE] */, + shapes = /* [START_EXCLUDE] */Shapes()/* [END_EXCLUDE] */ + ) { + // M3 app content + } + // [END android_compose_material3_theme_definition] +} + +private object ColorScheme { + // [START android_compose_material3_theme_colors] + val md_theme_light_primary = Color(0xFF476810) + val md_theme_light_onPrimary = Color(0xFFFFFFFF) + val md_theme_light_primaryContainer = Color(0xFFC7F089) + // .. + // .. + + val md_theme_dark_primary = Color(0xFFACD370) + val md_theme_dark_onPrimary = Color(0xFF213600) + val md_theme_dark_primaryContainer = Color(0xFF324F00) + // .. + // .. + // [END android_compose_material3_theme_colors] + + // [START android_compose_material3_theme_color_setup] + private val LightColorScheme = lightColorScheme( + primary = md_theme_light_primary, + onPrimary = md_theme_light_onPrimary, + primaryContainer = md_theme_light_primaryContainer, + // .. + ) + private val DarkColorScheme = darkColorScheme( + primary = md_theme_dark_primary, + onPrimary = md_theme_dark_onPrimary, + primaryContainer = md_theme_dark_primaryContainer, + // .. + ) + + @Composable + fun ReplyTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + content: @Composable () -> Unit + ) { + val colorScheme = + if (!darkTheme) { + LightColorScheme + } else { + DarkColorScheme + } + MaterialTheme( + colorScheme = colorScheme, + content = content + ) + } + // [END android_compose_material3_theme_color_setup] + + @Composable + private fun DynamicThemeSetup(darkTheme: Boolean = isSystemInDarkTheme()) { + // [START android_compose_material3_theme_dynamic_color] + // Dynamic color is available on Android 12+ + val dynamicColor = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S + val colors = when { + dynamicColor && darkTheme -> dynamicDarkColorScheme(LocalContext.current) + dynamicColor && !darkTheme -> dynamicLightColorScheme(LocalContext.current) + darkTheme -> DarkColorScheme + else -> LightColorScheme + } + // [END android_compose_material3_theme_dynamic_color] + } + + @Composable + private fun UsingColorTheme() { + // [START android_compose_material3_use_color_theme] + Text( + text = "Hello theming", + color = MaterialTheme.colorScheme.primary + ) + // [END android_compose_material3_use_color_theme] + } + + @Composable + private fun UseColorTheme2() { + val isSelected by remember { + mutableStateOf(false) + } + // [START android_compose_material3_use_color_theme_2] + Card( + colors = CardDefaults.cardColors( + containerColor = + if (isSelected) MaterialTheme.colorScheme.primaryContainer + else + MaterialTheme.colorScheme.surfaceVariant + ) + ) { + Text( + text = "Dinner club", + style = MaterialTheme.typography.bodyLarge, + color = + if (isSelected) MaterialTheme.colorScheme.onPrimaryContainer + else MaterialTheme.colorScheme.onSurface, + ) + } + + // [END android_compose_material3_use_color_theme_2] + } +} + +private object TypographySnippets { + // [START android_compose_material3_typography_definition] + val replyTypography = Typography( + titleLarge = TextStyle( + fontWeight = FontWeight.SemiBold, + fontSize = 22.sp, + lineHeight = 28.sp, + letterSpacing = 0.sp + ), + titleMedium = TextStyle( + fontWeight = FontWeight.SemiBold, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.15.sp + ), + // .. + ) + // .. + // [END android_compose_material3_typography_definition] + + val replyTypography2 = Typography( + // [START android_compose_material3_typography_body_large] + bodyLarge = TextStyle( + fontWeight = FontWeight.Normal, + fontFamily = FontFamily.SansSerif, + fontStyle = FontStyle.Italic, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.15.sp, + baselineShift = BaselineShift.Subscript + ), + // [END android_compose_material3_typography_body_large] + ) + + @Composable + private fun TypographyThemeSetup() { + // [START android_compose_material3_typography_theme_setup] + MaterialTheme( + typography = replyTypography, + ) { + // M3 app Content + } + // [END android_compose_material3_typography_theme_setup] + } + + @Composable + private fun TypographyUse() { + // [START android_compose_material3_typography_use] + Text( + text = "Hello M3 theming", + style = MaterialTheme.typography.titleLarge + ) + Text( + text = "you are learning typography", + style = MaterialTheme.typography.bodyMedium + ) + // [END android_compose_material3_typography_use] + } +} + +private object Material3ShapesSetup { + // [START android_compose_material3_shape_setup] + val replyShapes = Shapes( + extraSmall = RoundedCornerShape(4.dp), + small = RoundedCornerShape(8.dp), + medium = RoundedCornerShape(12.dp), + large = RoundedCornerShape(16.dp), + extraLarge = RoundedCornerShape(24.dp) + ) + // [END android_compose_material3_shape_setup] + + @Composable + private fun ShapeThemeSetup() { + // [START android_compose_material3_shape_theme] + MaterialTheme( + shapes = replyShapes, + ) { + // M3 app Content + } + // [END android_compose_material3_shape_theme] + } + + @Composable + private fun ShapeUsage() { + // [START android_compose_material3_shape_usage] + Card(shape = MaterialTheme.shapes.medium) { /* card content */ } + FloatingActionButton( + shape = MaterialTheme.shapes.large, + onClick = { + } + ) { + /* fab content */ + } + // [END android_compose_material3_shape_usage] + } + @Composable + private fun ShapeUsage2() { + // [START android_compose_material3_shape_usage_2] + Card(shape = RectangleShape) { /* card content */ } + Card(shape = CircleShape) { /* card content */ } + // [END android_compose_material3_shape_usage_2] + } +} + +private object EmphasisSnippets { + val replyTypography = Typography( + // [START android_compose_material3_emphasis] + bodyLarge = TextStyle( + fontWeight = FontWeight.Bold + ), + bodyMedium = TextStyle( + fontWeight = FontWeight.Normal + ) + // [END android_compose_material3_emphasis] + ) +} +@Composable +private fun ElevationSnippets(content: @Composable ColumnScope.() -> Unit) { + // [START android_compose_material3_elevation] + Surface( + modifier = Modifier, + tonalElevation = /*[START_EXCLUDE] */ 2.dp/*[END_EXCLUDE]*/, + shadowElevation = /*[START_EXCLUDE] */ 2.dp/*[END_EXCLUDE]*/ + ) { + Column(content = content) + } + // [END android_compose_material3_elevation] +} + +private object MaterialComponentsExamples { + @Composable + fun ButtonUsage() { + // [START android_compose_material3_button_usage] + Button(onClick = { /*..*/ }) { + Text(text = "My Button") + } + // [END android_compose_material3_button_usage] + } + + @Composable + fun ExtendedFloatingActionButtonUsage() { + // [START android_compose_material3_extended_button_usage] + ExtendedFloatingActionButton( + onClick = { /*..*/ }, + modifier = Modifier + ) { + Icon( + imageVector = Icons.Default.Edit, + contentDescription = stringResource(id = R.string.edit), + ) + Text( + text = stringResource(id = R.string.add_entry), + ) + } + // [END android_compose_material3_extended_button_usage] + } + @Composable + fun FilledButtonUsageHighEmphasis() { + // [START android_compose_material3_filled_button_high_emphasis] + Button(onClick = { /*..*/ }) { + Text(text = stringResource(id = R.string.view_entry)) + } + // [END android_compose_material3_filled_button_high_emphasis] + } + @Composable + fun TextButtonUsageLowEmphasis() { + // [START android_compose_material3_text_button_low_emphasis] + TextButton(onClick = { /*..*/ }) { + Text(text = stringResource(id = R.string.replated_articles)) + } + // [END android_compose_material3_text_button_low_emphasis] + } + enum class Destinations { + Home, + Emails, + Sent, + Drafts + } + @Composable + fun NavBarUsage() { + val selectedDestination by remember { + mutableStateOf(Destinations.Home) + } + // [START android_compose_material3_nav_bar_usage] + NavigationBar(modifier = Modifier.fillMaxWidth()) { + Destinations.entries.forEach { replyDestination -> + NavigationBarItem( + selected = selectedDestination == replyDestination, + onClick = { }, + icon = { } + ) + } + } + // [END android_compose_material3_nav_bar_usage] + } + @Composable + fun NavRailUsage() { + val selectedDestination by remember { + mutableStateOf(Destinations.Home) + } + // [START android_compose_material3_nav_rail_usage] + NavigationRail( + modifier = Modifier.fillMaxHeight(), + ) { + Destinations.entries.forEach { replyDestination -> + NavigationRailItem( + selected = selectedDestination == replyDestination, + onClick = { }, + icon = { } + ) + } + } + // [END android_compose_material3_nav_rail_usage] + } + @Composable + fun PermanentNavDrawerUsage() { + val selectedDestination by remember { + mutableStateOf(Destinations.Home) + } + // [START android_compose_material3_permanent_nav_drawer] + PermanentNavigationDrawer(modifier = Modifier.fillMaxHeight(), drawerContent = { + Destinations.entries.forEach { replyDestination -> + NavigationRailItem( + selected = selectedDestination == replyDestination, + onClick = { }, + icon = { }, + label = { } + ) + } + }) { + } + // [END android_compose_material3_permanent_nav_drawer] + } + + @Composable + fun CardThemingExample() { + // [START android_compose_material3_card_theming] + val customCardColors = CardDefaults.cardColors( + contentColor = MaterialTheme.colorScheme.primary, + containerColor = MaterialTheme.colorScheme.primaryContainer, + disabledContentColor = MaterialTheme.colorScheme.surface, + disabledContainerColor = MaterialTheme.colorScheme.onSurface, + ) + val customCardElevation = CardDefaults.cardElevation( + defaultElevation = 8.dp, + pressedElevation = 2.dp, + focusedElevation = 4.dp + ) + Card( + colors = customCardColors, + elevation = customCardElevation + ) { + // m3 card content + } + // [END android_compose_material3_card_theming] + } +} + +private object MaterialAccessibilityExamples { + @Composable + fun ButtonContrastExample() { + // [START android_compose_material3_button_contrast_example] + // ✅ Button with sufficient contrast ratio + Button( + onClick = { }, + colors = ButtonDefaults.buttonColors( + containerColor = MaterialTheme.colorScheme.primary, + contentColor = MaterialTheme.colorScheme.onPrimary + ) + ) { + } + + // ❌ Button with poor contrast ratio + Button( + onClick = { }, + colors = ButtonDefaults.buttonColors( + containerColor = MaterialTheme.colorScheme.tertiaryContainer, + contentColor = MaterialTheme.colorScheme.primaryContainer + ) + ) { + } + // [END android_compose_material3_button_contrast_example] + } +} diff --git a/compose/snippets/src/main/res/values-es/strings.xml b/compose/snippets/src/main/res/values-es/strings.xml index 759a412f4..7507771af 100644 --- a/compose/snippets/src/main/res/values-es/strings.xml +++ b/compose/snippets/src/main/res/values-es/strings.xml @@ -44,4 +44,8 @@ Hola mundo Una vista del amanecer desde Mount Feathertop, Victoria. Example String for Glance + Edit + Add + View entry + Related Articles \ No newline at end of file diff --git a/compose/snippets/src/main/res/values/strings.xml b/compose/snippets/src/main/res/values/strings.xml index bc99dbc82..1baab18fc 100644 --- a/compose/snippets/src/main/res/values/strings.xml +++ b/compose/snippets/src/main/res/values/strings.xml @@ -44,4 +44,8 @@ Hello world A view of sunrise from Mount Feathertop, Victoria. Example String for Glance + Edit + Add + View entry + Related Articles \ No newline at end of file From c47a8dae6967a72055a6e9fb2e7183fec4b1b225 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Wed, 22 Nov 2023 11:54:16 +0200 Subject: [PATCH 142/463] fix m3 name (#173) --- .../designsystems/{Material3Snipppets.kt => Material3Snippets.kt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename compose/snippets/src/main/java/com/example/compose/snippets/designsystems/{Material3Snipppets.kt => Material3Snippets.kt} (100%) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snipppets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt similarity index 100% rename from compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snipppets.kt rename to compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt From 87948ac8ef0173a1562ed43d58801d76e8387f99 Mon Sep 17 00:00:00 2001 From: Ben Trengrove Date: Thu, 23 Nov 2023 14:09:32 +1100 Subject: [PATCH 143/463] Update CustomModifierSnippets.kt (#174) --- .../compose/snippets/modifiers/CustomModifierSnippets.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/modifiers/CustomModifierSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/modifiers/CustomModifierSnippets.kt index 30b1b76ab..c07abf1d5 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/modifiers/CustomModifierSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/modifiers/CustomModifierSnippets.kt @@ -68,8 +68,7 @@ fun Modifier.clip(shape: Shape) = graphicsLayer(shape = shape, clip = true) // [END android_compose_custom_modifiers_1] // [START android_compose_custom_modifiers_2] -fun Modifier.myBackground(color: Color) = this then Modifier - .padding(16.dp) +fun Modifier.myBackground(color: Color) = padding(16.dp) .clip(RoundedCornerShape(8.dp)) .background(color) // [END android_compose_custom_modifiers_2] From 43297cd4e66e26f76f2cb4ee7a76e302554f9fe0 Mon Sep 17 00:00:00 2001 From: Alex Vanyo Date: Mon, 8 Jan 2024 16:13:10 -0800 Subject: [PATCH 144/463] Update material3-adaptive to 1.0.0-alpha03 (#180) * Update material3-adaptive to 1.0.0-alpha03 * Add snippet part for MyItem * Reorder final snippet to match in-between steps --- .../SampleListDetailPaneScaffold.kt | 89 ++++++++++++------- gradle/libs.versions.toml | 5 +- 2 files changed, 59 insertions(+), 35 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt index c41483526..850f53819 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt @@ -27,13 +27,15 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material3.Card import androidx.compose.material3.ListItem import androidx.compose.material3.Text +import androidx.compose.material3.adaptive.AnimatedPane import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi import androidx.compose.material3.adaptive.ListDetailPaneScaffold import androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole -import androidx.compose.material3.adaptive.rememberListDetailPaneScaffoldState +import androidx.compose.material3.adaptive.rememberListDetailPaneScaffoldNavigator import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.saveable.Saver import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier @@ -46,16 +48,18 @@ import androidx.compose.ui.unit.sp @Composable fun SampleListDetailPaneScaffoldParts() { // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part02] - val state = rememberListDetailPaneScaffoldState() + val navigator = rememberListDetailPaneScaffoldNavigator() // [END android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part02] // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part01] - var selectedItem: MyItem? by rememberSaveable { mutableStateOf(null) } + var selectedItem: MyItem? by rememberSaveable(stateSaver = MyItem.Saver) { + mutableStateOf(null) + } // [END android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part01] // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part03] ListDetailPaneScaffold( - scaffoldState = state, + scaffoldState = navigator.scaffoldState, // [START_EXCLUDE] listPane = {}, detailPane = {}, @@ -65,16 +69,18 @@ fun SampleListDetailPaneScaffoldParts() { // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part04] ListDetailPaneScaffold( - scaffoldState = state, + scaffoldState = navigator.scaffoldState, listPane = { - MyList( - onItemClick = { id -> - // Set current item - selectedItem = id - // Switch focus to detail pane - state.navigateTo(ListDetailPaneScaffoldRole.Detail) - } - ) + AnimatedPane(Modifier) { + MyList( + onItemClick = { id -> + // Set current item + selectedItem = id + // Switch focus to detail pane + navigator.navigateTo(ListDetailPaneScaffoldRole.Detail) + } + ) + } }, // [START_EXCLUDE] detailPane = {}, @@ -84,14 +90,16 @@ fun SampleListDetailPaneScaffoldParts() { // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part05] ListDetailPaneScaffold( - scaffoldState = state, + scaffoldState = navigator.scaffoldState, listPane = // [START_EXCLUDE] {}, // [END_EXCLUDE] detailPane = { - selectedItem?.let { item -> - MyDetails(item) + AnimatedPane(Modifier) { + selectedItem?.let { item -> + MyDetails(item) + } } }, ) @@ -103,28 +111,34 @@ fun SampleListDetailPaneScaffoldParts() { @Composable fun SampleListDetailPaneScaffoldFull() { // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_full] - // Create the ListDetailPaneScaffoldState - val state = rememberListDetailPaneScaffoldState() - // Currently selected item - var selectedItem: MyItem? by rememberSaveable { mutableStateOf(null) } + var selectedItem: MyItem? by rememberSaveable(stateSaver = MyItem.Saver) { + mutableStateOf(null) + } + + // Create the ListDetailPaneScaffoldState + val navigator = rememberListDetailPaneScaffoldNavigator() ListDetailPaneScaffold( - scaffoldState = state, + scaffoldState = navigator.scaffoldState, listPane = { - MyList( - onItemClick = { id -> - // Set current item - selectedItem = id - // Display the detail pane - state.navigateTo(ListDetailPaneScaffoldRole.Detail) - }, - ) + AnimatedPane(Modifier) { + MyList( + onItemClick = { id -> + // Set current item + selectedItem = id + // Display the detail pane + navigator.navigateTo(ListDetailPaneScaffoldRole.Detail) + }, + ) + } }, detailPane = { - // Show the detail pane content if selected item is available - selectedItem?.let { item -> - MyDetails(item) + AnimatedPane(Modifier) { + // Show the detail pane content if selected item is available + selectedItem?.let { item -> + MyDetails(item) + } } }, ) @@ -178,7 +192,16 @@ fun MyDetails(item: MyItem) { } } -class MyItem(val id: Int) +// [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_myitem] +class MyItem(val id: Int) { + companion object { + val Saver: Saver = Saver( + { it?.id }, + ::MyItem, + ) + } +} +// [END android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_myitem] val shortStrings = listOf( "Android", diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 69d192aba..eaac44330 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -32,7 +32,8 @@ kotlin = "1.9.20" ksp = "1.8.0-1.0.9" maps-compose = "3.1.1" material = "1.11.0-beta01" -material3-adaptive = "1.0.0-alpha01" +material3-adaptive = "1.0.0-alpha03" +material3-adaptive-navigation-suite = "1.0.0-alpha02" # @keep minSdk = "21" recyclerview = "1.3.2" @@ -56,7 +57,7 @@ androidx-compose-material = { module = "androidx.compose.material:material" } androidx-compose-material-iconsExtended = { module = "androidx.compose.material:material-icons-extended" } androidx-compose-material3 = { module = "androidx.compose.material3:material3" } androidx-compose-material3-adaptive = { module = "androidx.compose.material3:material3-adaptive", version.ref = "material3-adaptive" } -androidx-compose-material3-adaptive-navigation-suite = { module = "androidx.compose.material3:material3-adaptive-navigation-suite", version.ref = "material3-adaptive" } +androidx-compose-material3-adaptive-navigation-suite = { module = "androidx.compose.material3:material3-adaptive-navigation-suite", version.ref = "material3-adaptive-navigation-suite" } androidx-compose-materialWindow = { module = "androidx.compose.material3:material3-window-size-class" } androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" } androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" } From 3286d1a48e91cb02347cd132a17ed89d0e6b6204 Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Tue, 9 Jan 2024 13:38:07 -0800 Subject: [PATCH 145/463] Add an example of using ComposeView in an existing View hierarchy not using view binding. (#181) --- .../interop/InteroperabilityAPIsSnippets.kt | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/interop/InteroperabilityAPIsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/interop/InteroperabilityAPIsSnippets.kt index daf6aaf9a..bfafc95df 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/interop/InteroperabilityAPIsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/interop/InteroperabilityAPIsSnippets.kt @@ -75,6 +75,32 @@ fun Greeting(name: String) { } // [END android_compose_interop_apis_compose_in_views] +// [START android_compose_interop_apis_compose_in_fragment_xml] +class ExampleFragmentXml : Fragment() { + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + val view = inflater.inflate(R.layout.fragment_example, container, false) + val composeView = view.findViewById(R.id.compose_view) + composeView.apply { + // Dispose of the Composition when the view's LifecycleOwner + // is destroyed + setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) + setContent { + // In Compose world + MaterialTheme { + Text("Hello Compose!") + } + } + } + return view + } +} +// [END android_compose_interop_apis_compose_in_fragment_xml] + // [START android_compose_interop_apis_compose_in_fragment_view_binding] class ExampleFragment : Fragment() { From b271247e0f6f3c095e441022b3008ad460676109 Mon Sep 17 00:00:00 2001 From: Alex Vanyo Date: Wed, 10 Jan 2024 16:53:09 -0800 Subject: [PATCH 146/463] Update material3-adaptive to 1.0.0-alpha04 (#184) --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index eaac44330..2c3788cf1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -32,7 +32,7 @@ kotlin = "1.9.20" ksp = "1.8.0-1.0.9" maps-compose = "3.1.1" material = "1.11.0-beta01" -material3-adaptive = "1.0.0-alpha03" +material3-adaptive = "1.0.0-alpha04" material3-adaptive-navigation-suite = "1.0.0-alpha02" # @keep minSdk = "21" From 3451c763a407f957f4c353f9945e534445040a79 Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Tue, 23 Jan 2024 14:20:31 -0800 Subject: [PATCH 147/463] Add ripple snippets. (#190) * Add ripple snippets. * Apply Spotless --------- Co-authored-by: arriolac --- compose/snippets/build.gradle.kts | 1 + .../userinteractions/UserInteractions.kt | 156 ++++++++++++++++++ gradle/libs.versions.toml | 3 +- 3 files changed, 159 insertions(+), 1 deletion(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/touchinput/userinteractions/UserInteractions.kt diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index 8c444ac14..bb729778f 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -99,6 +99,7 @@ dependencies { implementation(libs.androidx.compose.runtime.livedata) implementation(libs.androidx.compose.materialWindow) implementation(libs.androidx.compose.material.iconsExtended) + implementation(libs.androidx.compose.material.ripple) implementation(libs.androidx.constraintlayout.compose) implementation(libs.androidx.compose.ui.googlefonts) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/userinteractions/UserInteractions.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/userinteractions/UserInteractions.kt new file mode 100644 index 000000000..285dfef69 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/userinteractions/UserInteractions.kt @@ -0,0 +1,156 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.touchinput.userinteractions + +import androidx.compose.animation.core.Animatable +import androidx.compose.animation.core.spring +import androidx.compose.foundation.Indication +import androidx.compose.foundation.IndicationInstance +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.InteractionSource +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.interaction.PressInteraction +import androidx.compose.foundation.layout.Box +import androidx.compose.material.ripple.LocalRippleTheme +import androidx.compose.material.ripple.RippleAlpha +import androidx.compose.material.ripple.RippleTheme +import androidx.compose.material.ripple.rememberRipple +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.drawscope.ContentDrawScope +import androidx.compose.ui.graphics.drawscope.scale +import com.example.compose.snippets.architecture.Button +import kotlinx.coroutines.flow.collectLatest + +// [START android_compose_userinteractions_scale_indication] +// [START android_compose_userinteractions_scale_indication_object] +object ScaleIndication : Indication { + @Composable + override fun rememberUpdatedInstance(interactionSource: InteractionSource): IndicationInstance { + // key the remember against interactionSource, so if it changes we create a new instance + val instance = remember(interactionSource) { ScaleIndicationInstance() } + + LaunchedEffect(interactionSource) { + interactionSource.interactions.collectLatest { interaction -> + when (interaction) { + is PressInteraction.Press -> instance.animateToPressed(interaction.pressPosition) + is PressInteraction.Release -> instance.animateToResting() + is PressInteraction.Cancel -> instance.animateToResting() + } + } + } + + return instance + } +} +// [END android_compose_userinteractions_scale_indication_object] + +// [START android_compose_userinteractions_scale_indication_instance] +private class ScaleIndicationInstance : IndicationInstance { + var currentPressPosition: Offset = Offset.Zero + val animatedScalePercent = Animatable(1f) + + suspend fun animateToPressed(pressPosition: Offset) { + currentPressPosition = pressPosition + animatedScalePercent.animateTo(0.9f, spring()) + } + + suspend fun animateToResting() { + animatedScalePercent.animateTo(1f, spring()) + } + + override fun ContentDrawScope.drawIndication() { + scale( + scale = animatedScalePercent.value, + pivot = currentPressPosition + ) { + this@drawIndication.drawContent() + } + } +} +// [END android_compose_userinteractions_scale_indication_instance] +// [END android_compose_userinteractions_scale_indication] + +@Composable +private fun RememberRippleExample() { + // [START android_compose_userinteractions_material_remember_ripple] + Box( + Modifier.clickable( + onClick = {}, + interactionSource = remember { MutableInteractionSource() }, + indication = rememberRipple() + ) + ) { + // ... + } + // [END android_compose_userinteractions_material_remember_ripple] +} + +// [START android_compose_userinteractions_disabled_ripple_theme] +private object DisabledRippleTheme : RippleTheme { + + @Composable + override fun defaultColor(): Color = Color.Transparent + + @Composable + override fun rippleAlpha(): RippleAlpha = RippleAlpha(0f, 0f, 0f, 0f) +} + +// [START_EXCLUDE] +@Composable +private fun MyComposable() { +// [END_EXCLUDE] + CompositionLocalProvider(LocalRippleTheme provides DisabledRippleTheme) { + Button { + // ... + } + } +// [START_EXCLUDE silent] +} +// [END_EXCLUDE] +// [END android_compose_userinteractions_disabled_ripple_theme] + +private val MyRippleAlpha = RippleAlpha(0.5f, 0.5f, 0.5f, 0.5f) + +// [START android_compose_userinteractions_disabled_ripple_theme_color_alpha] +private object DisabledRippleThemeColorAndAlpha : RippleTheme { + + @Composable + override fun defaultColor(): Color = Color.Red + + @Composable + override fun rippleAlpha(): RippleAlpha = MyRippleAlpha +} + +// [START_EXCLUDE] +@Composable +private fun MyComposable2() { +// [END_EXCLUDE] + CompositionLocalProvider(LocalRippleTheme provides DisabledRippleThemeColorAndAlpha) { + Button { + // ... + } + } +// [START_EXCLUDE silent] +} +// [END_EXCLUDE] +// [END android_compose_userinteractions_disabled_ripple_theme_color_alpha] diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2c3788cf1..f79bca6b6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -31,7 +31,7 @@ junit = "4.13.2" kotlin = "1.9.20" ksp = "1.8.0-1.0.9" maps-compose = "3.1.1" -material = "1.11.0-beta01" +material = "1.11.0" material3-adaptive = "1.0.0-alpha04" material3-adaptive-navigation-suite = "1.0.0-alpha02" # @keep @@ -55,6 +55,7 @@ androidx-compose-foundation = { module = "androidx.compose.foundation:foundation androidx-compose-foundation-layout = { module = "androidx.compose.foundation:foundation-layout" } androidx-compose-material = { module = "androidx.compose.material:material" } androidx-compose-material-iconsExtended = { module = "androidx.compose.material:material-icons-extended" } +androidx-compose-material-ripple = { module = "androidx.compose.material:material-ripple" } androidx-compose-material3 = { module = "androidx.compose.material3:material3" } androidx-compose-material3-adaptive = { module = "androidx.compose.material3:material3-adaptive", version.ref = "material3-adaptive" } androidx-compose-material3-adaptive-navigation-suite = { module = "androidx.compose.material3:material3-adaptive-navigation-suite", version.ref = "material3-adaptive-navigation-suite" } From 2b64557f116a4b6df83d73bb9e20d0c72be31305 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Wed, 24 Jan 2024 22:36:18 +0000 Subject: [PATCH 148/463] =?UTF-8?q?=F0=9F=A4=96=20Update=20Dependencies=20?= =?UTF-8?q?(#194)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🤖 Update Dependencies * Update gradle wrapper * Remove manual graphics dependency --------- Co-authored-by: Ben Trengrove --- gradle/libs.versions.toml | 33 ++- gradle/wrapper/gradle-wrapper.jar | Bin 54329 -> 63375 bytes gradle/wrapper/gradle-wrapper.properties | 7 +- gradlew | 300 ++++++++++++++--------- gradlew.bat | 56 +++-- 5 files changed, 240 insertions(+), 156 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f79bca6b6..43fe88078 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,45 +1,45 @@ [versions] accompanist = "0.32.0" -androidGradlePlugin = "8.1.2" -androidx-activity-compose = "1.8.0-rc01" +androidGradlePlugin = "8.2.2" +androidx-activity-compose = "1.9.0-alpha02" androidx-appcompat = "1.6.1" -androidx-compose-bom = "2023.10.01" +androidx-compose-bom = "2024.01.00" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" androidx-coordinator-layout = "1.2.0" androidx-corektx = "1.9.0" androidx-emoji2-views = "1.4.0" -androidx-fragment-ktx = "1.6.1" +androidx-fragment-ktx = "1.6.2" androidx-glance-appwidget = "1.0.0" -androidx-lifecycle-compose = "2.6.2" -androidx-lifecycle-runtime-compose = "2.6.2" -androidx-navigation = "2.7.4" +androidx-lifecycle-compose = "2.7.0" +androidx-lifecycle-runtime-compose = "2.7.0" +androidx-navigation = "2.7.6" androidx-paging = "3.2.1" androidx-test = "1.5.0" androidx-test-espresso = "3.5.1" -androidxHiltNavigationCompose = "1.0.0" -coil = "2.4.0" +androidxHiltNavigationCompose = "1.1.0" +coil = "2.5.0" # @keep compileSdk = "34" compose-compiler = "1.5.4" coroutines = "1.7.3" google-maps = "18.2.0" -gradle-versions = "0.49.0" -hilt = "2.48.1" +gradle-versions = "0.51.0" +hilt = "2.50" junit = "4.13.2" # @pin Update in conjuction with Compose Compiler kotlin = "1.9.20" ksp = "1.8.0-1.0.9" -maps-compose = "3.1.1" +maps-compose = "4.3.2" material = "1.11.0" -material3-adaptive = "1.0.0-alpha04" +material3-adaptive = "1.0.0-alpha05" material3-adaptive-navigation-suite = "1.0.0-alpha02" # @keep minSdk = "21" recyclerview = "1.3.2" # @keep targetSdk = "34" -version-catalog-update = "0.8.1" +version-catalog-update = "0.8.3" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } @@ -64,8 +64,7 @@ androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" } androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" } androidx-compose-ui = { module = "androidx.compose.ui:ui" } androidx-compose-ui-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" } -# TODO remove usage of this when `draw` method is in stable. -androidx-compose-ui-graphics = "androidx.compose.ui:ui-graphics:1.6.0-alpha08" +androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } @@ -92,7 +91,7 @@ androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version androidx-test-core = { module = "androidx.test:core", version.ref = "androidx-test" } androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-test-espresso" } androidx-test-runner = "androidx.test:runner:1.5.2" -androidx-work-runtime-ktx = "androidx.work:work-runtime-ktx:2.8.1" +androidx-work-runtime-ktx = "androidx.work:work-runtime-ktx:2.9.0" coil-kt-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } google-android-material = { module = "com.google.android.material:material", version.ref = "material" } googlemaps-compose = { module = "com.google.maps.android:maps-compose", version.ref = "maps-compose" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f6b961fd5a86aa5fbfe90f707c3138408be7c718..033e24c4cdf41af1ab109bc7f253b2b887023340 100644 GIT binary patch literal 63375 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≫L+crb^Bz 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

<5G2M1WZP5 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 F{|7XC?P&l2 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8cb5461a8..1af9e0930 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ -#Wed Nov 30 15:03:58 PST 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-bin.zip distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index cccdd3d51..fcb6fca14 100755 --- a/gradlew +++ b/gradlew @@ -1,78 +1,126 @@ -#!/usr/bin/env sh +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -81,92 +129,120 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" fi +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index e95643d6a..6689b85be 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,4 +1,20 @@ -@if "%DEBUG%" == "" @echo off +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -9,19 +25,23 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +55,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,38 +65,26 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal From 1d934b88d3e2932c9aadbc69650082fbe694abe3 Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Thu, 25 Jan 2024 08:17:53 -0800 Subject: [PATCH 149/463] Create a new workflow to keep main and latest in sync. (#192) --- .github/workflows/sync_main_latest.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/workflows/sync_main_latest.yml diff --git a/.github/workflows/sync_main_latest.yml b/.github/workflows/sync_main_latest.yml new file mode 100644 index 000000000..4573b3d63 --- /dev/null +++ b/.github/workflows/sync_main_latest.yml @@ -0,0 +1,20 @@ +name: Sync main and latest +on: + push: + branches: + - main + +jobs: + sync-branches: + runs-on: ubuntu-latest + name: Syncing branches + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Opening pull request + id: pull + uses: tretuna/sync-branches@1.4.0 + with: + GITHUB_TOKEN: ${{secrets.PAT}} + FROM_BRANCH: "main" + TO_BRANCH: "latest" From 70681f5e7014afb172d7e129a3d175ba6a34f3a7 Mon Sep 17 00:00:00 2001 From: MagicalMeghan <46006059+MagicalMeghan@users.noreply.github.com> Date: Tue, 30 Jan 2024 23:05:46 -0500 Subject: [PATCH 150/463] Add pip code to snippets (#189) * Adding pip code to snippets * Apply Spotless * Adding pip code to snippets * Apply Spotless * Adding pip code to snippets * Apply Spotless * Adding pip to snippets * Apply Spotless * Adding pip code to snippets * Apply Spotless * Adding pip snippets * Apply Spotless * Adding pip code to snippets * Apply Spotless * adding pip to snippets * adding pip to snippets * adding compose pip snippets * Apply Spotless --------- Co-authored-by: MagicalMeghan --- compose/snippets/build.gradle.kts | 3 + compose/snippets/src/main/AndroidManifest.xml | 5 + .../PictureInPictureSnippets.kt | 346 ++++++++++++++++++ gradle/libs.versions.toml | 3 + 4 files changed, 357 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/pictureInPicture/PictureInPictureSnippets.kt diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index bb729778f..75e1fd51d 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -127,6 +127,9 @@ dependencies { implementation(libs.androidx.lifecycle.runtime) implementation(libs.androidx.lifecycle.viewModelCompose) + implementation(libs.androidx.media3.common) + implementation(libs.androidx.media3.exoplayer) + implementation(libs.androidx.navigation.compose) implementation(libs.hilt.android) implementation(libs.androidx.hilt.navigation.compose) diff --git a/compose/snippets/src/main/AndroidManifest.xml b/compose/snippets/src/main/AndroidManifest.xml index 7d1e0ebfb..c9b15e6c5 100644 --- a/compose/snippets/src/main/AndroidManifest.xml +++ b/compose/snippets/src/main/AndroidManifest.xml @@ -28,10 +28,15 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Snippets"> + + + diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/pictureInPicture/PictureInPictureSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/pictureInPicture/PictureInPictureSnippets.kt new file mode 100644 index 000000000..8826f444c --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/pictureInPicture/PictureInPictureSnippets.kt @@ -0,0 +1,346 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.pictureInPicture + +import android.app.PictureInPictureParams +import android.app.RemoteAction +import android.content.BroadcastReceiver +import android.content.Context +import android.content.ContextWrapper +import android.content.Intent +import android.content.IntentFilter +import android.os.Build +import android.util.Log +import android.util.Rational +import androidx.activity.ComponentActivity +import androidx.annotation.RequiresApi +import androidx.compose.foundation.layout.Column +import androidx.compose.material3.Button +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.toAndroidRectF +import androidx.compose.ui.layout.boundsInWindow +import androidx.compose.ui.layout.onGloballyPositioned +import androidx.compose.ui.platform.LocalContext +import androidx.core.app.PictureInPictureModeChangedInfo +import androidx.core.content.ContextCompat +import androidx.core.graphics.toRect +import androidx.core.util.Consumer +import androidx.media3.common.Player +import androidx.media3.exoplayer.ExoPlayer + +var shouldEnterPipMode by mutableStateOf(false) +private const val PIP_TAG = "PiP info" + +// [START android_compose_pip_broadcast_receiver_constants] +// Constant for broadcast receiver +const val ACTION_BROADCAST_CONTROL = "broadcast_control" + +// Intent extras for broadcast controls from Picture-in-Picture mode. +const val EXTRA_CONTROL_TYPE = "control_type" +const val EXTRA_CONTROL_PLAY = 1 +const val EXTRA_CONTROL_PAUSE = 2 +// [END android_compose_pip_broadcast_receiver_constants] + +@Composable +fun PiPBuilderSetAutoEnterEnabled( + modifier: Modifier = Modifier +) { + val context = LocalContext.current + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + // [START android_compose_pip_builder_auto_enter] + val pipModifier = modifier.onGloballyPositioned { layoutCoordinates -> + val builder = PictureInPictureParams.Builder() + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + builder.setAutoEnterEnabled(true) + } + context.findActivity().setPictureInPictureParams(builder.build()) + } + // [END android_compose_pip_builder_auto_enter] + VideoPlayer(pipModifier) + } else { + Log.i(PIP_TAG, "API does not support PiP") + } +} + +// [START android_compose_pip_find_activity] +internal fun Context.findActivity(): ComponentActivity { + var context = this + while (context is ContextWrapper) { + if (context is ComponentActivity) return context + context = context.baseContext + } + throw IllegalStateException("Picture in picture should be called in the context of an Activity") +} +// [END android_compose_pip_find_activity] + +@Composable +fun EnterPiPThroughButton() { + // [START android_compose_pip_button_click] + val context = LocalContext.current + Button(onClick = { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + context.findActivity().enterPictureInPictureMode( + // the parameters have been set by previous calls + PictureInPictureParams.Builder().build() + ) + } else { + Log.i(PIP_TAG, "API does not support PiP") + } + }) { + Text(text = "Enter PiP mode!") + } + // [END android_compose_pip_button_click] +} + +// [START android_compose_pip_is_in_pip_mode] +@Composable +fun rememberIsInPipMode(): Boolean { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + val activity = LocalContext.current.findActivity() + var pipMode by remember { mutableStateOf(activity.isInPictureInPictureMode) } + DisposableEffect(activity) { + val observer = Consumer { info -> + pipMode = info.isInPictureInPictureMode + } + activity.addOnPictureInPictureModeChangedListener( + observer + ) + onDispose { activity.removeOnPictureInPictureModeChangedListener(observer) } + } + return pipMode + } else { + return false + } +} +// [END android_compose_pip_is_in_pip_mode] + +@Composable +fun VideoPlayer() { +} +@Composable +fun VideoPlayer(modifier: Modifier) { +} + +@Composable +fun ToggleUIBasedOnPiP( + modifier: Modifier = Modifier, +) { + // [START android_compose_pip_ui_toggle] + val inPipMode = rememberIsInPipMode() + + Column(modifier = modifier) { + // This text will only show up when the app is in PiP mode + if (!inPipMode) { + Text( + text = "Picture in Picture", + ) + } + VideoPlayer() + } + // [END android_compose_pip_ui_toggle] +} + +fun initializePlayer(context: Context) { + val player = ExoPlayer.Builder(context.applicationContext) + .build().apply {} + + // [START android_compose_pip_toggle_pip_on_if_video_is_playing] + player.addListener(object : Player.Listener { + override fun onIsPlayingChanged(isPlaying: Boolean) { + shouldEnterPipMode = isPlaying + } + }) + // [END android_compose_pip_toggle_pip_on_if_video_is_playing] +} + +// [START android_compose_pip_release_player] +fun releasePlayer() { + shouldEnterPipMode = false +} +// [END android_compose_pip_release_player] + +@Composable +fun PiPBuilderSetAutoEnterEnabledUsingState( + shouldEnterPipMode: Boolean, + modifier: Modifier = Modifier, +) { + val context = LocalContext.current + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + // [START android_compose_pip_post_12_should_enter_pip] + val pipModifier = modifier.onGloballyPositioned { layoutCoordinates -> + val builder = PictureInPictureParams.Builder() + + // Add autoEnterEnabled for versions S and up + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + builder.setAutoEnterEnabled(shouldEnterPipMode) + } + context.findActivity().setPictureInPictureParams(builder.build()) + } + + VideoPlayer(pipModifier) + // [END android_compose_pip_post_12_should_enter_pip] + } else { + Log.i(PIP_TAG, "API does not support PiP") + } +} + +@Composable +fun PiPBuilderSetSourceRect( + shouldEnterPipMode: Boolean, + modifier: Modifier = Modifier, +) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + // [START android_compose_pip_set_source_rect] + val context = LocalContext.current + + val pipModifier = modifier.onGloballyPositioned { layoutCoordinates -> + val builder = PictureInPictureParams.Builder() + if (shouldEnterPipMode) { + val sourceRect = layoutCoordinates.boundsInWindow().toAndroidRectF().toRect() + builder.setSourceRectHint(sourceRect) + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + builder.setAutoEnterEnabled(shouldEnterPipMode) + } + context.findActivity().setPictureInPictureParams(builder.build()) + } + + VideoPlayer(pipModifier) + // [END android_compose_pip_set_source_rect] + } else { + Log.i(PIP_TAG, "API does not support PiP") + } +} + +@Composable +fun PiPBuilderSetAspectRatio( + shouldEnterPipMode: Boolean, + modifier: Modifier = Modifier, +) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + // [START android_compose_pip_set_aspect_ratio] + val context = LocalContext.current + + val pipModifier = modifier.onGloballyPositioned { layoutCoordinates -> + val builder = PictureInPictureParams.Builder() + + if (shouldEnterPipMode) { + val sourceRect = layoutCoordinates.boundsInWindow().toAndroidRectF().toRect() + builder.setSourceRectHint(sourceRect) + builder.setAspectRatio( + Rational(sourceRect.width(), sourceRect.height()) + ) + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + builder.setAutoEnterEnabled(shouldEnterPipMode) + } + context.findActivity().setPictureInPictureParams(builder.build()) + } + + VideoPlayer(pipModifier) + // [END android_compose_pip_set_aspect_ratio] + } else { + Log.i(PIP_TAG, "API does not support PiP") + } +} + +// [START android_compose_pip_broadcast_receiver] +@RequiresApi(Build.VERSION_CODES.O) +@Composable +fun PlayerBroadcastReceiver(player: Player?) { + val isInPipMode = rememberIsInPipMode() + if (!isInPipMode || player == null) { + // Broadcast receiver is only used if app is in PiP mode and player is non null + return + } + val context = LocalContext.current + + DisposableEffect(player) { + val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if ((intent == null) || (intent.action != ACTION_BROADCAST_CONTROL)) { + return + } + + when (intent.getIntExtra(EXTRA_CONTROL_TYPE, 0)) { + EXTRA_CONTROL_PAUSE -> player.pause() + EXTRA_CONTROL_PLAY -> player.play() + } + } + } + ContextCompat.registerReceiver( + context, + broadcastReceiver, + IntentFilter(ACTION_BROADCAST_CONTROL), + ContextCompat.RECEIVER_NOT_EXPORTED + ) + onDispose { + context.unregisterReceiver(broadcastReceiver) + } + } +} +// [END android_compose_pip_broadcast_receiver] + +@RequiresApi(Build.VERSION_CODES.O) +fun listOfRemoteActions(): List { + return listOf() +} + +@Composable +fun PiPBuilderAddRemoteActions( + shouldEnterPipMode: Boolean, + modifier: Modifier = Modifier, +) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + // [START android_compose_pip_add_remote_actions] + val context = LocalContext.current + + val pipModifier = modifier.onGloballyPositioned { layoutCoordinates -> + val builder = PictureInPictureParams.Builder() + builder.setActions( + listOfRemoteActions() + ) + + if (shouldEnterPipMode) { + val sourceRect = layoutCoordinates.boundsInWindow().toAndroidRectF().toRect() + builder.setSourceRectHint(sourceRect) + builder.setAspectRatio( + Rational(sourceRect.width(), sourceRect.height()) + ) + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + builder.setAutoEnterEnabled(shouldEnterPipMode) + } + context.findActivity().setPictureInPictureParams(builder.build()) + } + // [END android_compose_pip_add_remote_actions] + } else { + Log.i(PIP_TAG, "API does not support PiP") + } +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 43fe88078..b312d8525 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -34,6 +34,7 @@ maps-compose = "4.3.2" material = "1.11.0" material3-adaptive = "1.0.0-alpha05" material3-adaptive-navigation-suite = "1.0.0-alpha02" +media3 = "1.2.1" # @keep minSdk = "21" recyclerview = "1.3.2" @@ -102,6 +103,8 @@ junit = { module = "junit:junit", version.ref = "junit" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } +androidx-media3-common = { group = "androidx.media3", name = "media3-common", version.ref = "media3" } +androidx-media3-exoplayer = { group = "androidx.media3", name = "media3-exoplayer", version.ref = "media3" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } From fdc1b8e2911e0bf98181f5b40e7101aa34ad395b Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Wed, 31 Jan 2024 13:59:43 -0800 Subject: [PATCH 151/463] Use the default GH token for PRs from forks. (#201) --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7acbcb452..0e85a499b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,7 +31,7 @@ jobs: steps: - uses: actions/checkout@v3 with: - token: ${{ secrets.PAT}} + token: ${{ secrets.PAT || github.token }} - name: set up Java 17 uses: actions/setup-java@v2 with: From b48562b6cb6dc5e07f80559474a4a414d65a5583 Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Thu, 1 Feb 2024 15:04:26 -0800 Subject: [PATCH 152/463] Create new workflow to apply spotless. (#202) * Create new workflow to apply spotless. * License header. --- .github/workflows/apply_spotless.yml | 49 ++++++++++++++++++++++++++++ .github/workflows/build.yml | 5 --- 2 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/apply_spotless.yml diff --git a/.github/workflows/apply_spotless.yml b/.github/workflows/apply_spotless.yml new file mode 100644 index 000000000..c06624490 --- /dev/null +++ b/.github/workflows/apply_spotless.yml @@ -0,0 +1,49 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +name: Apply spotless + +on: + pull_request: + branches: [ '*' ] + workflow_dispatch: +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + apply-spotless: + runs-on: ubuntu-latest + timeout-minutes: 30 + if: github.repository == 'android/snippets' + + steps: + - name: Checkout Repository + uses: actions/checkout@v3 + with: + token: ${{ secrets.PAT || github.token }} + + - name: set up Java 17 + uses: actions/setup-java@v2 + with: + distribution: 'zulu' + java-version: '17' + + - name: Run spotlessApply + run: ./gradlew :compose:spotlessApply --init-script gradle/init.gradle.kts --no-configuration-cache --stacktrace + + - name: Auto-commit if spotlessApply has changes + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: Apply Spotless diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0e85a499b..c5b1819d9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -37,11 +37,6 @@ jobs: with: distribution: 'zulu' java-version: '17' - - name: Apply formatting if failed - run: ./gradlew :compose:spotlessApply --init-script gradle/init.gradle.kts --no-configuration-cache --stacktrace - - uses: stefanzweifel/git-auto-commit-action@v4 - with: - commit_message: Apply Spotless - name: Build Compose run: ./gradlew :compose:snippets:build - name: Build recompose snippets From d9895da082df67fe37f677f3b06d9eb1cda10204 Mon Sep 17 00:00:00 2001 From: MagicalMeghan <46006059+MagicalMeghan@users.noreply.github.com> Date: Mon, 5 Feb 2024 17:48:35 -0500 Subject: [PATCH 153/463] PiP snippet additions (#203) --- .../snippets/pictureInPicture/PictureInPictureSnippets.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/pictureInPicture/PictureInPictureSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/pictureInPicture/PictureInPictureSnippets.kt index 8826f444c..cfd0555f9 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/pictureInPicture/PictureInPictureSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/pictureInPicture/PictureInPictureSnippets.kt @@ -77,8 +77,8 @@ fun PiPBuilderSetAutoEnterEnabled( } context.findActivity().setPictureInPictureParams(builder.build()) } - // [END android_compose_pip_builder_auto_enter] VideoPlayer(pipModifier) + // [END android_compose_pip_builder_auto_enter] } else { Log.i(PIP_TAG, "API does not support PiP") } @@ -102,7 +102,6 @@ fun EnterPiPThroughButton() { Button(onClick = { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { context.findActivity().enterPictureInPictureMode( - // the parameters have been set by previous calls PictureInPictureParams.Builder().build() ) } else { @@ -339,6 +338,7 @@ fun PiPBuilderAddRemoteActions( } context.findActivity().setPictureInPictureParams(builder.build()) } + VideoPlayer(modifier = pipModifier) // [END android_compose_pip_add_remote_actions] } else { Log.i(PIP_TAG, "API does not support PiP") From 9835516d965c92dd3ddcc497f2c6ba8eb89cba36 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 6 Feb 2024 17:31:29 +0000 Subject: [PATCH 154/463] Add snippets for graphics-shape (#177) * Adding graphics-shape snippets [WIP] * Adding graphics-shape snippets [WIP] * Apply Spotless * Adding graphics-shape snippets * Apply Spotless * Added custom polygon * Apply Spotless * Adding graphics-shape snippets * Adding graphics-shape snippets * Apply Spotless * Adding graphics-shape snippets * Apply Spotless --------- Co-authored-by: riggaroo --- compose/snippets/build.gradle.kts | 1 + .../compose/snippets/SnippetsActivity.kt | 2 + .../snippets/graphics/ShapesSnippets.kt | 593 ++++++++++++++++++ .../modifiers/CustomModifierSnippets.kt | 11 +- .../snippets/navigation/Destination.kt | 1 + gradle/libs.versions.toml | 1 + 6 files changed, 605 insertions(+), 4 deletions(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index 75e1fd51d..37d55a7b4 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -85,6 +85,7 @@ dependencies { implementation(libs.androidx.compose.ui) implementation(libs.androidx.compose.ui.util) implementation(libs.androidx.compose.ui.graphics) + implementation(libs.androidx.graphics.shapes) implementation(libs.androidx.compose.ui.tooling.preview) implementation(libs.androidx.compose.ui.viewbinding) implementation(libs.androidx.paging.compose) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index d2e129ca2..31037647b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -38,6 +38,7 @@ import com.example.compose.snippets.components.ProgressIndicatorExamples import com.example.compose.snippets.components.ScaffoldExample import com.example.compose.snippets.components.SliderExamples import com.example.compose.snippets.components.SwitchExamples +import com.example.compose.snippets.graphics.ApplyPolygonAsClipImage import com.example.compose.snippets.graphics.BitmapFromComposableSnippet import com.example.compose.snippets.graphics.BrushExamplesScreen import com.example.compose.snippets.images.ImageExamplesScreen @@ -75,6 +76,7 @@ class SnippetsActivity : ComponentActivity() { it.route ) } + Destination.ShapesExamples -> ApplyPolygonAsClipImage() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt new file mode 100644 index 000000000..de0a5ee9b --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt @@ -0,0 +1,593 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.graphics + +import android.graphics.PointF +import androidx.compose.animation.core.LinearEasing +import androidx.compose.animation.core.RepeatMode +import androidx.compose.animation.core.Spring +import androidx.compose.animation.core.animateFloat +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.infiniteRepeatable +import androidx.compose.animation.core.rememberInfiniteTransition +import androidx.compose.animation.core.spring +import androidx.compose.animation.core.tween +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.interaction.collectIsPressedAsState +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawWithCache +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Matrix +import androidx.compose.ui.graphics.Outline +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.graphics.drawscope.scale +import androidx.compose.ui.graphics.drawscope.translate +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.Density +import androidx.compose.ui.unit.LayoutDirection +import androidx.compose.ui.unit.dp +import androidx.core.graphics.plus +import androidx.core.graphics.times +import androidx.graphics.shapes.CornerRounding +import androidx.graphics.shapes.Cubic +import androidx.graphics.shapes.Morph +import androidx.graphics.shapes.RoundedPolygon +import androidx.graphics.shapes.star +import com.example.compose.snippets.R +import kotlin.math.PI +import kotlin.math.cos +import kotlin.math.sin + +@Preview +@Composable +fun BasicShapeCanvas() { + // [START android_compose_graphics_basic_polygon] + Box( + modifier = Modifier + .drawWithCache { + val roundedPolygon = RoundedPolygon( + numVertices = 6, + radius = size.minDimension / 2, + centerX = size.width / 2, + centerY = size.height / 2 + ) + val roundedPolygonPath = roundedPolygon.cubics + .toPath() + onDrawBehind { + drawPath(roundedPolygonPath, color = Color.Blue) + } + } + .fillMaxSize() + ) + // [END android_compose_graphics_basic_polygon] +} + +@Preview +@Composable +private fun RoundedShapeExample() { + // [START android_compose_graphics_polygon_rounding] + Box( + modifier = Modifier + .drawWithCache { + val roundedPolygon = RoundedPolygon( + numVertices = 3, + radius = size.minDimension / 2, + centerX = size.width / 2, + centerY = size.height / 2, + rounding = CornerRounding( + size.minDimension / 10f, + smoothing = 1f + ) + ) + val roundedPolygonPath = roundedPolygon.cubics + .toPath() + onDrawBehind { + drawPath(roundedPolygonPath, color = Color.Black) + } + } + .fillMaxSize() + ) + // [END android_compose_graphics_polygon_rounding] +} + +@Preview +@Composable +private fun RoundedShapeSmoothnessExample() { + // [START android_compose_graphics_polygon_rounding_smooth] + Box( + modifier = Modifier + .drawWithCache { + val roundedPolygon = RoundedPolygon( + numVertices = 3, + radius = size.minDimension / 2, + centerX = size.width / 2, + centerY = size.height / 2, + rounding = CornerRounding( + size.minDimension / 10f, + smoothing = 0.1f + ) + ) + val roundedPolygonPath = roundedPolygon.cubics + .toPath() + onDrawBehind { + drawPath(roundedPolygonPath, color = Color.Black) + } + } + .size(100.dp) + ) + + // [END android_compose_graphics_polygon_rounding_smooth] +} + +@Preview +@Composable +private fun MorphExample() { + // [START android_compose_graphics_polygon_morph] + Box( + modifier = Modifier + .drawWithCache { + val triangle = RoundedPolygon( + numVertices = 3, + radius = size.minDimension / 2f, + centerX = size.width / 2f, + centerY = size.height / 2f, + rounding = CornerRounding( + size.minDimension / 10f, + smoothing = 0.1f + ) + ) + val square = RoundedPolygon( + numVertices = 4, + radius = size.minDimension / 2f, + centerX = size.width / 2f, + centerY = size.height / 2f + ) + + val morph = Morph(start = triangle, end = square) + val morphPath = morph + .toComposePath(progress = 0.5f) + + onDrawBehind { + drawPath(morphPath, color = Color.Black) + } + } + .fillMaxSize() + ) + // [END android_compose_graphics_polygon_morph] +} + +@Preview +@Composable +private fun MorphExampleAnimation() { + // [START android_compose_graphics_polygon_morph_animation] + val infiniteAnimation = rememberInfiniteTransition(label = "infinite animation") + val morphProgress = infiniteAnimation.animateFloat( + initialValue = 0f, + targetValue = 1f, + animationSpec = infiniteRepeatable( + tween(500), + repeatMode = RepeatMode.Reverse + ), + label = "morph" + ) + Box( + modifier = Modifier + .drawWithCache { + val triangle = RoundedPolygon( + numVertices = 3, + radius = size.minDimension / 2f, + centerX = size.width / 2f, + centerY = size.height / 2f, + rounding = CornerRounding( + size.minDimension / 10f, + smoothing = 0.1f + ) + ) + val square = RoundedPolygon( + numVertices = 4, + radius = size.minDimension / 2f, + centerX = size.width / 2f, + centerY = size.height / 2f + ) + + val morph = Morph(start = triangle, end = square) + val morphPath = morph + .toComposePath(progress = morphProgress.value) + + onDrawBehind { + drawPath(morphPath, color = Color.Black) + } + } + .fillMaxSize() + ) + // [END android_compose_graphics_polygon_morph_animation] +} + +/** + * Transforms the morph at a given progress into a [Path]. + * It can optionally be scaled, using the origin (0,0) as pivot point. + */ +fun Morph.toComposePath(progress: Float, scale: Float = 1f, path: Path = Path()): Path { + var first = true + path.rewind() + forEachCubic(progress) { bezier -> + if (first) { + path.moveTo(bezier.anchor0X * scale, bezier.anchor0Y * scale) + first = false + } + path.cubicTo( + bezier.control0X * scale, bezier.control0Y * scale, + bezier.control1X * scale, bezier.control1Y * scale, + bezier.anchor1X * scale, bezier.anchor1Y * scale + ) + } + path.close() + return path +} + +/** + * Function used to create a Path from a list of Cubics. + */ +fun List.toPath(path: Path = Path(), scale: Float = 1f): Path { + path.rewind() + firstOrNull()?.let { first -> + path.moveTo(first.anchor0X * scale, first.anchor0Y * scale) + } + for (bezier in this) { + path.cubicTo( + bezier.control0X * scale, bezier.control0Y * scale, + bezier.control1X * scale, bezier.control1Y * scale, + bezier.anchor1X * scale, bezier.anchor1Y * scale + ) + } + path.close() + return path +} + +// [START android_compose_morph_clip_shape] +class MorphPolygonShape( + private val morph: Morph, + private val percentage: Float +) : Shape { + + private val matrix = Matrix() + override fun createOutline( + size: Size, + layoutDirection: LayoutDirection, + density: Density + ): Outline { + // Below assumes that you haven't changed the default radius of 1f, nor the centerX and centerY of 0f + // By default this stretches the path to the size of the container, if you don't want stretching, use the same size.width for both x and y. + matrix.scale(size.width / 2f, size.height / 2f) + matrix.translate(1f, 1f) + + val path = morph.toComposePath(progress = percentage) + path.transform(matrix) + return Outline.Generic(path) + } +} + +// [END android_compose_morph_clip_shape] +@Preview +@Composable +private fun MorphOnClick() { + // [START android_compose_graphics_morph_on_click] + val shapeA = remember { + RoundedPolygon( + 6, + rounding = CornerRounding(0.2f) + ) + } + val shapeB = remember { + RoundedPolygon.star( + 6, + rounding = CornerRounding(0.1f) + ) + } + val morph = remember { + Morph(shapeA, shapeB) + } + val interactionSource = remember { + MutableInteractionSource() + } + val isPressed by interactionSource.collectIsPressedAsState() + val animatedProgress = animateFloatAsState( + targetValue = if (isPressed) 1f else 0f, + label = "progress", + animationSpec = spring(dampingRatio = 0.4f, stiffness = Spring.StiffnessMedium) + ) + Box( + modifier = Modifier + .size(200.dp) + .padding(8.dp) + .clip(MorphPolygonShape(morph, animatedProgress.value)) + .background(Color(0xFF80DEEA)) + .size(200.dp) + .clickable(interactionSource = interactionSource, indication = null) { + } + ) { + Text("Hello", modifier = Modifier.align(Alignment.Center)) + } + // [END android_compose_graphics_morph_on_click] +} + +// [START android_compose_shapes_polygon_compose_shape] +class RoundedPolygonShape( + private val polygon: RoundedPolygon +) : Shape { + private val matrix = Matrix() + override fun createOutline( + size: Size, + layoutDirection: LayoutDirection, + density: Density + ): Outline { + val path = polygon.cubics.toPath() + // below assumes that you haven't changed the default radius of 1f, nor the centerX and centerY of 0f + // By default this stretches the path to the size of the container, if you don't want stretching, use the same size.width for both x and y. + matrix.scale(size.width / 2f, size.height / 2f) + matrix.translate(1f, 1f) + path.transform(matrix) + + return Outline.Generic(path) + } +} +// [END android_compose_shapes_polygon_compose_shape] + +@Preview +@Composable +fun ApplyPolygonAsClipBasic() { + // [START android_compose_shapes_apply_as_clip] + val hexagon = remember { + RoundedPolygon( + 6, + rounding = CornerRounding(0.2f) + ) + } + val clip = remember(hexagon) { + RoundedPolygonShape(polygon = hexagon) + } + Box( + modifier = Modifier + .clip(clip) + .background(MaterialTheme.colorScheme.secondary) + .size(200.dp) + ) { + Text( + "Hello Compose", + color = MaterialTheme.colorScheme.onSecondary, + modifier = Modifier.align(Alignment.Center) + ) + } + // [END android_compose_shapes_apply_as_clip] +} + +@Preview +@Composable +fun ApplyPolygonAsClipImage() { + // [START android_compose_shapes_apply_as_clip_advanced] + val hexagon = remember { + RoundedPolygon( + 6, + rounding = CornerRounding(0.2f) + ) + } + val clip = remember(hexagon) { + RoundedPolygonShape(polygon = hexagon) + } + Box( + modifier = Modifier.fillMaxSize(), + contentAlignment = Alignment.Center + ) { + Image( + painter = painterResource(id = R.drawable.dog), + contentDescription = "Dog", + contentScale = ContentScale.Crop, + modifier = Modifier + .graphicsLayer { + this.shadowElevation = 6.dp.toPx() + this.shape = clip + this.clip = true + this.ambientShadowColor = Color.Black + this.spotShadowColor = Color.Black + } + .size(200.dp) + + ) + } + // [END android_compose_shapes_apply_as_clip_advanced] +} + +// [START android_compose_shapes_custom_rotating_morph_shape] +class CustomRotatingMorphShape( + private val morph: Morph, + private val percentage: Float, + private val rotation: Float +) : Shape { + + private val matrix = Matrix() + override fun createOutline( + size: Size, + layoutDirection: LayoutDirection, + density: Density + ): Outline { + // Below assumes that you haven't changed the default radius of 1f, nor the centerX and centerY of 0f + // By default this stretches the path to the size of the container, if you don't want stretching, use the same size.width for both x and y. + matrix.scale(size.width / 2f, size.height / 2f) + matrix.translate(1f, 1f) + matrix.rotateZ(rotation) + + val path = morph.toComposePath(progress = percentage) + path.transform(matrix) + + return Outline.Generic(path) + } +} + +@Preview +@Composable +private fun RotatingScallopedProfilePic() { + val shapeA = remember { + RoundedPolygon( + 12, + rounding = CornerRounding(0.2f) + ) + } + val shapeB = remember { + RoundedPolygon.star( + 12, + rounding = CornerRounding(0.2f) + ) + } + val morph = remember { + Morph(shapeA, shapeB) + } + val infiniteTransition = rememberInfiniteTransition("infinite outline movement") + val animatedProgress = infiniteTransition.animateFloat( + initialValue = 0f, + targetValue = 1f, + animationSpec = infiniteRepeatable( + tween(2000, easing = LinearEasing), + repeatMode = RepeatMode.Reverse + ), + label = "animatedMorphProgress" + ) + val animatedRotation = infiniteTransition.animateFloat( + initialValue = 0f, + targetValue = 360f, + animationSpec = infiniteRepeatable( + tween(6000, easing = LinearEasing), + repeatMode = RepeatMode.Reverse + ), + label = "animatedMorphProgress" + ) + Box( + modifier = Modifier.fillMaxSize(), + contentAlignment = Alignment.Center + ) { + Image( + painter = painterResource(id = R.drawable.dog), + contentDescription = "Dog", + contentScale = ContentScale.Crop, + modifier = Modifier + .clip( + CustomRotatingMorphShape( + morph, + animatedProgress.value, + animatedRotation.value + ) + ) + .size(200.dp) + ) + } +} +// [END android_compose_shapes_custom_rotating_morph_shape] + +@Preview +@Composable +private fun CartesianPoints() { + // [START android_compose_shapes_custom_vertices] + val vertices = remember { + val radius = 1f + val radiusSides = 0.8f + val innerRadius = .1f + floatArrayOf( + radialToCartesian(radiusSides, 0f.toRadians()).x, + radialToCartesian(radiusSides, 0f.toRadians()).y, + radialToCartesian(radius, 90f.toRadians()).x, + radialToCartesian(radius, 90f.toRadians()).y, + radialToCartesian(radiusSides, 180f.toRadians()).x, + radialToCartesian(radiusSides, 180f.toRadians()).y, + radialToCartesian(radius, 250f.toRadians()).x, + radialToCartesian(radius, 250f.toRadians()).y, + radialToCartesian(innerRadius, 270f.toRadians()).x, + radialToCartesian(innerRadius, 270f.toRadians()).y, + radialToCartesian(radius, 290f.toRadians()).x, + radialToCartesian(radius, 290f.toRadians()).y, + ) + } + // [END android_compose_shapes_custom_vertices] + + // [START android_compose_shapes_custom_vertices_draw] + val rounding = remember { + val roundingNormal = 0.6f + val roundingNone = 0f + listOf( + CornerRounding(roundingNormal), + CornerRounding(roundingNone), + CornerRounding(roundingNormal), + CornerRounding(roundingNormal), + CornerRounding(roundingNone), + CornerRounding(roundingNormal), + ) + } + + val polygon = remember(vertices, rounding) { + RoundedPolygon( + vertices = vertices, + perVertexRounding = rounding + ) + } + Box( + modifier = Modifier + .drawWithCache { + val roundedPolygonPath = polygon.cubics + .toPath() + onDrawBehind { + scale(size.width * 0.5f, size.width * 0.5f) { + translate(size.width * 0.5f, size.height * 0.5f) { + drawPath(roundedPolygonPath, color = Color(0xFFF15087)) + } + } + } + } + .size(400.dp) + ) + // [END android_compose_shapes_custom_vertices_draw] +} + +// [START android_compose_shapes_radial_to_cartesian] +internal fun Float.toRadians() = this * PI.toFloat() / 180f + +internal val PointZero = PointF(0f, 0f) +internal fun radialToCartesian( + radius: Float, + angleRadians: Float, + center: PointF = PointZero +) = directionVectorPointF(angleRadians) * radius + center + +internal fun directionVectorPointF(angleRadians: Float) = + PointF(cos(angleRadians), sin(angleRadians)) +// [END android_compose_shapes_radial_to_cartesian] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/modifiers/CustomModifierSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/modifiers/CustomModifierSnippets.kt index c07abf1d5..7b778ef25 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/modifiers/CustomModifierSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/modifiers/CustomModifierSnippets.kt @@ -33,6 +33,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.drawscope.ContentDrawScope @@ -62,10 +63,12 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.offset import kotlinx.coroutines.launch -@SuppressLint("ModifierFactoryUnreferencedReceiver") // graphics layer does the reference -// [START android_compose_custom_modifiers_1] -fun Modifier.clip(shape: Shape) = graphicsLayer(shape = shape, clip = true) -// [END android_compose_custom_modifiers_1] +private object ClipModifierExample { + @SuppressLint("ModifierFactoryUnreferencedReceiver") // graphics layer does the reference + // [START android_compose_custom_modifiers_1] + fun Modifier.clip(shape: Shape) = graphicsLayer(shape = shape, clip = true) + // [END android_compose_custom_modifiers_1] +} // [START android_compose_custom_modifiers_2] fun Modifier.myBackground(color: Color) = padding(16.dp) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index b2c936c7e..60c07901c 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -22,6 +22,7 @@ enum class Destination(val route: String, val title: String) { AnimationQuickGuideExamples("animationExamples", "Animation Examples"), ComponentsExamples("topComponents", "Top Compose Components"), ScreenshotExample("screenshotExample", "Screenshot Examples"), + ShapesExamples("shapesExamples", "Shapes Examples"), } // Enum class for compose components navigation screen. diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b312d8525..cbdce495e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -65,6 +65,7 @@ androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" } androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" } androidx-compose-ui = { module = "androidx.compose.ui:ui" } androidx-compose-ui-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" } +androidx-graphics-shapes = "androidx.graphics:graphics-shapes:1.0.0-alpha04" androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } From 0d296b9b9af54429a9f5131e77dd05cc52c54f91 Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Tue, 6 Feb 2024 09:43:45 -0800 Subject: [PATCH 155/463] Update sync_main_latest to not using GH sync action. (#200) --- .github/workflows/sync_main_latest.yml | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/.github/workflows/sync_main_latest.yml b/.github/workflows/sync_main_latest.yml index 4573b3d63..a196b5dae 100644 --- a/.github/workflows/sync_main_latest.yml +++ b/.github/workflows/sync_main_latest.yml @@ -10,11 +10,22 @@ jobs: name: Syncing branches steps: - name: Checkout - uses: actions/checkout@v2 - - name: Opening pull request - id: pull - uses: tretuna/sync-branches@1.4.0 + uses: actions/checkout@v3 + + - name: Merge main into latest + run: git checkout latest && git merge main + + - name: Create pull request + id: cpr + uses: peter-evans/create-pull-request@v4 with: - GITHUB_TOKEN: ${{secrets.PAT}} - FROM_BRANCH: "main" - TO_BRANCH: "latest" + token: ${{ secrets.PAT }} + commit-message: 🤖 Sync main to latest + committer: compose-devrel-github-bot + author: compose-devrel-github-bot + signoff: false + branch: bot-sync-main + delete-branch: true + title: '🤖 Sync main to latest' + body: Updated dependencies + reviewers: ${{ github.actor }} From 2ffbaa8467d9a26127586143584908d06e489819 Mon Sep 17 00:00:00 2001 From: MagicalMeghan <46006059+MagicalMeghan@users.noreply.github.com> Date: Tue, 6 Feb 2024 16:27:22 -0500 Subject: [PATCH 156/463] update package name (#205) --- .../PictureInPictureSnippets.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename compose/snippets/src/main/java/com/example/compose/snippets/{pictureInPicture => pictureinpicture}/PictureInPictureSnippets.kt (98%) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/pictureInPicture/PictureInPictureSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt similarity index 98% rename from compose/snippets/src/main/java/com/example/compose/snippets/pictureInPicture/PictureInPictureSnippets.kt rename to compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt index cfd0555f9..953c57238 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/pictureInPicture/PictureInPictureSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.example.compose.snippets.pictureInPicture +package com.example.compose.snippets.pictureinpicture import android.app.PictureInPictureParams import android.app.RemoteAction @@ -150,7 +150,7 @@ fun ToggleUIBasedOnPiP( val inPipMode = rememberIsInPipMode() Column(modifier = modifier) { - // This text will only show up when the app is in PiP mode + // This text will only show up when the app is not in PiP mode if (!inPipMode) { Text( text = "Picture in Picture", From 2cc47d6c0a9d1afaa5a97a1c3005f189d3ece472 Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Tue, 6 Feb 2024 13:35:27 -0800 Subject: [PATCH 157/463] Fix sync_main_to_latest workflow (#206) * Fix sync_to_main workflow to fetch branches before merging main to latest. Git fetch. Merge origin main * Remove test branch. --- .github/workflows/sync_main_latest.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/sync_main_latest.yml b/.github/workflows/sync_main_latest.yml index a196b5dae..b96fab3da 100644 --- a/.github/workflows/sync_main_latest.yml +++ b/.github/workflows/sync_main_latest.yml @@ -1,5 +1,6 @@ name: Sync main and latest on: + workflow_dispatch: push: branches: - main @@ -13,7 +14,7 @@ jobs: uses: actions/checkout@v3 - name: Merge main into latest - run: git checkout latest && git merge main + run: git fetch && git switch latest && git merge origin/main - name: Create pull request id: cpr From 864fd5598518a54847d6dcdcb859677bee425d9b Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Wed, 7 Feb 2024 11:05:12 +0000 Subject: [PATCH 158/463] add path utils to snippets. (#211) --- .../com/example/compose/snippets/graphics/ShapesSnippets.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt index de0a5ee9b..25a1852e1 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt @@ -236,6 +236,7 @@ private fun MorphExampleAnimation() { // [END android_compose_graphics_polygon_morph_animation] } +// [START android_compose_morph_to_path] /** * Transforms the morph at a given progress into a [Path]. * It can optionally be scaled, using the origin (0,0) as pivot point. @@ -257,10 +258,11 @@ fun Morph.toComposePath(progress: Float, scale: Float = 1f, path: Path = Path()) path.close() return path } - +// [END android_compose_morph_to_path] /** * Function used to create a Path from a list of Cubics. */ +// [START android_compose_list_cubics_to_path] fun List.toPath(path: Path = Path(), scale: Float = 1f): Path { path.rewind() firstOrNull()?.let { first -> @@ -276,6 +278,7 @@ fun List.toPath(path: Path = Path(), scale: Float = 1f): Path { path.close() return path } +// [END android_compose_list_cubics_to_path] // [START android_compose_morph_clip_shape] class MorphPolygonShape( From 9c71245de9a0f7546162fd037257c6a3ea08c761 Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Thu, 8 Feb 2024 11:16:56 -0800 Subject: [PATCH 159/463] Fixing reference in Typography sample (#207) * Fixed references in Typography sample. body1/body2/h4 don't exist in M3 Typography. The options are {display|headline|title|body|label}{Small|Medium|Large}. * Update TextDownloadableFontsSnippets.kt Typography should use m3 import. * Apply Spotless --------- Co-authored-by: James Williams <66931+jwill@users.noreply.github.com> Co-authored-by: arriolac --- .../snippets/text/TextDownloadableFontsSnippets.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextDownloadableFontsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextDownloadableFontsSnippets.kt index 283e8f7f0..95b69e9cb 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextDownloadableFontsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextDownloadableFontsSnippets.kt @@ -21,8 +21,8 @@ package com.example.compose.snippets.text import android.util.Log import androidx.compose.foundation.layout.Column import androidx.compose.material.Text -import androidx.compose.material.Typography import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Typography import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect @@ -118,16 +118,16 @@ fun DownloadableFontsText() { private object TextDownloadableFontsSnippet4 { // [START android_compose_text_typography_definition] val MyTypography = Typography( - body1 = TextStyle( + labelMedium = TextStyle( fontFamily = fontFamily, fontWeight = FontWeight.Normal, fontSize = 12.sp/*...*/ ), - body2 = TextStyle( + labelLarge = TextStyle( fontFamily = fontFamily, fontWeight = FontWeight.Bold, letterSpacing = 2.sp, /*...*/ ), - h4 = TextStyle( + displayMedium = TextStyle( fontFamily = fontFamily, fontWeight = FontWeight.SemiBold/*...*/ ), /*...*/ From 2800143cd4547f4c9273251a18769283105337fa Mon Sep 17 00:00:00 2001 From: Ben Trengrove Date: Fri, 9 Feb 2024 06:42:57 +0800 Subject: [PATCH 160/463] Add new Compose text snippets (#210) * Add text snippets * Add linebreak snippets * Apply Spotless * Fix incorrect tags --- .../compose/snippets/text/TextSnippets.kt | 197 +++++++++++++++++- 1 file changed, 196 insertions(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index bfb8b837e..dd5cf5a69 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -19,7 +19,16 @@ package com.example.compose.snippets.text import android.util.Log +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.background +import androidx.compose.foundation.basicMarquee +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.text.ClickableText @@ -27,6 +36,7 @@ import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.selection.DisableSelection import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.material3.TextField @@ -36,6 +46,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Brush @@ -55,10 +66,13 @@ import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.style.Hyphens +import androidx.compose.ui.text.style.LineBreak import androidx.compose.ui.text.style.LineHeightStyle import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.withStyle +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.em import androidx.compose.ui.unit.sp @@ -577,7 +591,188 @@ private object TextEffectiveStateManagement2 { // [END android_compose_text_state_management] } -private val firaSansFamily = FontFamily() +@Composable +private fun TextSample(samples: MapUnit>) { + MaterialTheme { + Box( + Modifier + .background(MaterialTheme.colorScheme.background) + .fillMaxWidth() + ) { + Column( + verticalArrangement = Arrangement.spacedBy(10.dp), + modifier = Modifier.padding(10.dp) + ) { + samples.forEach { (title, content) -> + Row(Modifier.fillMaxWidth()) { + content() + Text( + text = title, + textAlign = TextAlign.Center, + style = MaterialTheme.typography.titleLarge, + modifier = Modifier + .fillMaxWidth() + .align(Alignment.CenterVertically) + ) + } + } + } + } + } +} + +private const val SAMPLE_LONG_TEXT = + "Jetpack Compose is Android’s modern toolkit for building native UI. " + + "It simplifies and accelerates UI development on Android bringing your apps " + + "to life with less code, powerful tools, and intuitive Kotlin APIs. " + + "It makes building Android UI faster and easier." +@Composable +@Preview +fun LineBreakSample() { + // [START android_compose_text_line_break] + TextSample( + samples = mapOf( + "Simple" to { + Text( + text = SAMPLE_LONG_TEXT, + modifier = Modifier + .width(130.dp) + .border(BorderStroke(1.dp, Color.Gray)), + fontSize = 14.sp, + style = TextStyle.Default.copy( + lineBreak = LineBreak.Simple + ) + ) + }, + "Paragraph" to { + Text( + text = SAMPLE_LONG_TEXT, + modifier = Modifier + .width(130.dp) + .border(BorderStroke(1.dp, Color.Gray)), + fontSize = 14.sp, + style = TextStyle.Default.copy( + lineBreak = LineBreak.Paragraph + ) + ) + } + ) + ) + // [END android_compose_text_line_break] +} + +@Preview +@Composable +fun SmallScreenTextSnippet() { + // [START android_compose_text_paragraph] + TextSample( + samples = mapOf( + "Balanced" to { + val smallScreenAdaptedParagraph = + LineBreak.Paragraph.copy(strategy = LineBreak.Strategy.Balanced) + Text( + text = SAMPLE_LONG_TEXT, + modifier = Modifier + .width(200.dp) + .border(BorderStroke(1.dp, Color.Gray)), + fontSize = 14.sp, + style = TextStyle.Default.copy( + lineBreak = smallScreenAdaptedParagraph + ) + ) + }, + "Default" to { + Text( + text = SAMPLE_LONG_TEXT, + modifier = Modifier + .width(200.dp) + .border(BorderStroke(1.dp, Color.Gray)), + fontSize = 14.sp, + style = TextStyle.Default + ) + } + ) + ) + // [END android_compose_text_paragraph] +} + +private object CJKTextSnippet { + @Composable + fun CJKSample() { + // [START android_compose_text_cjk] + val customTitleLineBreak = LineBreak( + strategy = LineBreak.Strategy.HighQuality, + strictness = LineBreak.Strictness.Strict, + wordBreak = LineBreak.WordBreak.Phrase + ) + Text( + text = "あなたに寄り添う最先端のテクノロジー。", + modifier = Modifier.width(250.dp), + fontSize = 14.sp, + style = TextStyle.Default.copy( + lineBreak = customTitleLineBreak + ) + ) + // [END android_compose_text_cjk] + } +} + +@Preview +@Composable +fun HyphenateTextSnippet() { + // [START android_compose_text_hyphen] + TextSample( + samples = mapOf( + "Hyphens - None" to { + Text( + text = SAMPLE_LONG_TEXT, + modifier = Modifier + .width(130.dp) + .border(BorderStroke(1.dp, Color.Gray)), + fontSize = 14.sp, + style = TextStyle.Default.copy( + lineBreak = LineBreak.Paragraph, + hyphens = Hyphens.None + ) + ) + }, + "Hyphens - Auto" to { + Text( + text = SAMPLE_LONG_TEXT, + modifier = Modifier + .width(130.dp) + .border(BorderStroke(1.dp, Color.Gray)), + fontSize = 14.sp, + style = TextStyle.Default.copy( + lineBreak = LineBreak.Paragraph, + hyphens = Hyphens.Auto + ) + ) + } + ) + ) + // [END android_compose_text_hyphen] +} + +@Preview(showBackground = true) +// [START android_compose_text_marquee] +@OptIn(ExperimentalFoundationApi::class) +@Composable +fun BasicMarqueeSample() { + // Marquee only animates when the content doesn't fit in the max width. + Column(Modifier.width(400.dp)) { + Text( + "Learn about why it's great to use Jetpack Compose", + modifier = Modifier.basicMarquee(), + fontSize = 50.sp + ) + } +} +// [END android_compose_text_marquee] + +// Using null just sets the font family to default, which is easier than supplying +// the actual font file in the snippets repo. This fixes a build warning. +private val firaSansFamily = null val LightBlue = Color(0xFF0066FF) val Purple = Color(0xFF800080) From 1b8b1fa5179bbf7c828aa8b833c5267ede4a76f6 Mon Sep 17 00:00:00 2001 From: Alex Vanyo Date: Thu, 15 Feb 2024 15:32:32 +0100 Subject: [PATCH 161/463] Update material3-adaptive to alpha06 (#216) --- .../adaptivelayouts/SampleListDetailPaneScaffold.kt | 9 +++++++-- gradle/libs.versions.toml | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt index 850f53819..75527c461 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt @@ -16,6 +16,7 @@ package com.example.compose.snippets.adaptivelayouts +import androidx.activity.compose.BackHandler import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column @@ -48,7 +49,7 @@ import androidx.compose.ui.unit.sp @Composable fun SampleListDetailPaneScaffoldParts() { // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part02] - val navigator = rememberListDetailPaneScaffoldNavigator() + val navigator = rememberListDetailPaneScaffoldNavigator() // [END android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part02] // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part01] @@ -117,7 +118,11 @@ fun SampleListDetailPaneScaffoldFull() { } // Create the ListDetailPaneScaffoldState - val navigator = rememberListDetailPaneScaffoldNavigator() + val navigator = rememberListDetailPaneScaffoldNavigator() + + BackHandler(navigator.canNavigateBack()) { + navigator.navigateBack() + } ListDetailPaneScaffold( scaffoldState = navigator.scaffoldState, diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cbdce495e..28cf69157 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -32,8 +32,8 @@ kotlin = "1.9.20" ksp = "1.8.0-1.0.9" maps-compose = "4.3.2" material = "1.11.0" -material3-adaptive = "1.0.0-alpha05" -material3-adaptive-navigation-suite = "1.0.0-alpha02" +material3-adaptive = "1.0.0-alpha06" +material3-adaptive-navigation-suite = "1.0.0-alpha03" media3 = "1.2.1" # @keep minSdk = "21" From 806cb442a4c6ee0f245f9ac46ef16cf273ef017a Mon Sep 17 00:00:00 2001 From: Alex Vanyo Date: Thu, 15 Feb 2024 17:12:48 +0100 Subject: [PATCH 162/463] Add BackHandler to navigator snippet part (#217) --- .../snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt index 75527c461..d06615fa1 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt @@ -50,6 +50,10 @@ import androidx.compose.ui.unit.sp fun SampleListDetailPaneScaffoldParts() { // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part02] val navigator = rememberListDetailPaneScaffoldNavigator() + + BackHandler(navigator.canNavigateBack()) { + navigator.navigateBack() + } // [END android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part02] // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part01] From 7546db0680116ffe8b5491250b9a4a3c75b452b8 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Thu, 15 Feb 2024 16:21:31 +0000 Subject: [PATCH 163/463] =?UTF-8?q?=F0=9F=A4=96=20Update=20Dependencies=20?= =?UTF-8?q?(#212)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 28cf69157..8a407f47f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -65,7 +65,6 @@ androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" } androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" } androidx-compose-ui = { module = "androidx.compose.ui:ui" } androidx-compose-ui-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" } -androidx-graphics-shapes = "androidx.graphics:graphics-shapes:1.0.0-alpha04" androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } @@ -82,11 +81,14 @@ androidx-emoji2-views = { module = "androidx.emoji2:emoji2-views", version.ref = androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment-ktx" } androidx-glance-appwidget = { module = "androidx.glance:glance-appwidget", version.ref = "androidx-glance-appwidget" } androidx-glance-material3 = { module = "androidx.glance:glance-material3", version.ref = "androidx-glance-appwidget" } +androidx-graphics-shapes = "androidx.graphics:graphics-shapes:1.0.0-alpha04" androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "androidxHiltNavigationCompose" } androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidx-lifecycle-compose" } androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle-runtime-compose" } androidx-lifecycle-viewModelCompose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle-compose" } androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle-compose" } +androidx-media3-common = { module = "androidx.media3:media3-common", version.ref = "media3" } +androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "media3" } androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "androidx-navigation" } androidx-paging-compose = { module = "androidx.paging:paging-compose", version.ref = "androidx-paging" } androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" } @@ -104,8 +106,6 @@ junit = { module = "junit:junit", version.ref = "junit" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } -androidx-media3-common = { group = "androidx.media3", name = "media3-common", version.ref = "media3" } -androidx-media3-exoplayer = { group = "androidx.media3", name = "media3-exoplayer", version.ref = "media3" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } From db5ffc06e07c4830fbc362517680935b1ebd78c6 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 20 Feb 2024 13:18:24 +0000 Subject: [PATCH 164/463] Create dependabot.yml (#218) --- .github/dependabot.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..0d08e261a --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "github-actions" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" From dc22a42e0832ca2f3d98edf5abd6ead606f54205 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 12:06:18 -0800 Subject: [PATCH 165/463] Bump peter-evans/create-pull-request from 4 to 6 (#219) Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 6. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v4...v6) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/sync_main_latest.yml | 2 +- .github/workflows/update_deps.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sync_main_latest.yml b/.github/workflows/sync_main_latest.yml index b96fab3da..a8cc0368c 100644 --- a/.github/workflows/sync_main_latest.yml +++ b/.github/workflows/sync_main_latest.yml @@ -18,7 +18,7 @@ jobs: - name: Create pull request id: cpr - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.PAT }} commit-message: 🤖 Sync main to latest diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml index 9f92a69b2..dddf05266 100644 --- a/.github/workflows/update_deps.yml +++ b/.github/workflows/update_deps.yml @@ -19,7 +19,7 @@ jobs: run: ./gradlew versionCatalogUpdate - name: Create pull request id: cpr - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.PAT }} commit-message: 🤖 Update Dependencies From cea0c7d4d7e3157ab751870cce0212f3dff2700a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 12:06:44 -0800 Subject: [PATCH 166/463] Bump actions/setup-java from 2 to 4 (#220) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 2 to 4. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v2...v4) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/apply_spotless.yml | 2 +- .github/workflows/build.yml | 2 +- .github/workflows/update_deps.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/apply_spotless.yml b/.github/workflows/apply_spotless.yml index c06624490..a11fc25d2 100644 --- a/.github/workflows/apply_spotless.yml +++ b/.github/workflows/apply_spotless.yml @@ -35,7 +35,7 @@ jobs: token: ${{ secrets.PAT || github.token }} - name: set up Java 17 - uses: actions/setup-java@v2 + uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '17' diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c5b1819d9..91f90e334 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,7 +33,7 @@ jobs: with: token: ${{ secrets.PAT || github.token }} - name: set up Java 17 - uses: actions/setup-java@v2 + uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '17' diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml index dddf05266..d5f8ca4d2 100644 --- a/.github/workflows/update_deps.yml +++ b/.github/workflows/update_deps.yml @@ -9,7 +9,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: set up JDK 17 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: 17 distribution: 'zulu' From d8ef2dd19f25b74bdbbd5e78f96cdfb30be61a3c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 12:07:07 -0800 Subject: [PATCH 167/463] Bump stefanzweifel/git-auto-commit-action from 4 to 5 (#221) Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 4 to 5. - [Release notes](https://github.com/stefanzweifel/git-auto-commit-action/releases) - [Changelog](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/CHANGELOG.md) - [Commits](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4...v5) --- updated-dependencies: - dependency-name: stefanzweifel/git-auto-commit-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/apply_spotless.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/apply_spotless.yml b/.github/workflows/apply_spotless.yml index a11fc25d2..b36a3626f 100644 --- a/.github/workflows/apply_spotless.yml +++ b/.github/workflows/apply_spotless.yml @@ -44,6 +44,6 @@ jobs: run: ./gradlew :compose:spotlessApply --init-script gradle/init.gradle.kts --no-configuration-cache --stacktrace - name: Auto-commit if spotlessApply has changes - uses: stefanzweifel/git-auto-commit-action@v4 + uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: Apply Spotless From 2f34f3b1f916f41d7c3b84286b24a9e1d57951f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Feb 2024 09:03:48 +0000 Subject: [PATCH 168/463] Bump actions/checkout from 3 to 4 (#222) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/apply_spotless.yml | 2 +- .github/workflows/build.yml | 2 +- .github/workflows/sync_main_latest.yml | 2 +- .github/workflows/update_deps.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/apply_spotless.yml b/.github/workflows/apply_spotless.yml index b36a3626f..79c68e238 100644 --- a/.github/workflows/apply_spotless.yml +++ b/.github/workflows/apply_spotless.yml @@ -30,7 +30,7 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: token: ${{ secrets.PAT || github.token }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 91f90e334..51f9b6cbc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -29,7 +29,7 @@ jobs: timeout-minutes: 30 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: token: ${{ secrets.PAT || github.token }} - name: set up Java 17 diff --git a/.github/workflows/sync_main_latest.yml b/.github/workflows/sync_main_latest.yml index a8cc0368c..8a57f7356 100644 --- a/.github/workflows/sync_main_latest.yml +++ b/.github/workflows/sync_main_latest.yml @@ -11,7 +11,7 @@ jobs: name: Syncing branches steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Merge main into latest run: git fetch && git switch latest && git merge origin/main diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml index d5f8ca4d2..ffe44b0e0 100644 --- a/.github/workflows/update_deps.yml +++ b/.github/workflows/update_deps.yml @@ -7,7 +7,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: set up JDK 17 uses: actions/setup-java@v4 with: From db747abfd9ab19b127575e1caa8516024e7479ab Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Sat, 24 Feb 2024 12:50:12 +0000 Subject: [PATCH 169/463] Upgrade dependencies (#225) * Update libs.versions.toml * Update versions * update deps * Update libs.versions.toml * Change material-adaptive artifact to point to new name * Update gradle/libs.versions.toml Co-authored-by: Alex Vanyo --------- Co-authored-by: Alex Vanyo --- compose/snippets/build.gradle.kts | 3 ++- .../SampleListDetailPaneScaffold.kt | 8 ++++---- gradle/libs.versions.toml | 18 ++++++++++-------- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index 37d55a7b4..acfa8ddc8 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -93,7 +93,8 @@ dependencies { implementation(libs.androidx.compose.material3) implementation(libs.androidx.compose.material3.adaptive) - implementation(libs.androidx.compose.material3.adaptive.navigation.suite) + implementation(libs.androidx.compose.material3.adaptive.layout) + implementation(libs.androidx.compose.material3.adaptive.navigation) implementation(libs.androidx.compose.material) implementation(libs.androidx.compose.runtime) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt index d06615fa1..a674512ad 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt @@ -28,11 +28,11 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material3.Card import androidx.compose.material3.ListItem import androidx.compose.material3.Text -import androidx.compose.material3.adaptive.AnimatedPane import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi -import androidx.compose.material3.adaptive.ListDetailPaneScaffold -import androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole -import androidx.compose.material3.adaptive.rememberListDetailPaneScaffoldNavigator +import androidx.compose.material3.adaptive.layout.AnimatedPane +import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffold +import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffoldRole +import androidx.compose.material3.adaptive.navigation.rememberListDetailPaneScaffoldNavigator import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8a407f47f..035b5f151 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,9 +1,9 @@ [versions] accompanist = "0.32.0" androidGradlePlugin = "8.2.2" -androidx-activity-compose = "1.9.0-alpha02" +androidx-activity-compose = "1.9.0-alpha03" androidx-appcompat = "1.6.1" -androidx-compose-bom = "2024.01.00" +androidx-compose-bom = "2024.02.01" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" androidx-coordinator-layout = "1.2.0" @@ -13,11 +13,11 @@ androidx-fragment-ktx = "1.6.2" androidx-glance-appwidget = "1.0.0" androidx-lifecycle-compose = "2.7.0" androidx-lifecycle-runtime-compose = "2.7.0" -androidx-navigation = "2.7.6" +androidx-navigation = "2.7.7" androidx-paging = "3.2.1" androidx-test = "1.5.0" androidx-test-espresso = "3.5.1" -androidxHiltNavigationCompose = "1.1.0" +androidxHiltNavigationCompose = "1.2.0" coil = "2.5.0" # @keep compileSdk = "34" @@ -32,8 +32,8 @@ kotlin = "1.9.20" ksp = "1.8.0-1.0.9" maps-compose = "4.3.2" material = "1.11.0" -material3-adaptive = "1.0.0-alpha06" -material3-adaptive-navigation-suite = "1.0.0-alpha03" +material3-adaptive = "1.0.0-alpha07" +material3-adaptive-navigation-suite = "1.0.0-alpha04" media3 = "1.2.1" # @keep minSdk = "21" @@ -58,7 +58,9 @@ androidx-compose-material = { module = "androidx.compose.material:material" } androidx-compose-material-iconsExtended = { module = "androidx.compose.material:material-icons-extended" } androidx-compose-material-ripple = { module = "androidx.compose.material:material-ripple" } androidx-compose-material3 = { module = "androidx.compose.material3:material3" } -androidx-compose-material3-adaptive = { module = "androidx.compose.material3:material3-adaptive", version.ref = "material3-adaptive" } +androidx-compose-material3-adaptive = { module = "androidx.compose.material3.adaptive:adaptive", version.ref = "material3-adaptive" } +androidx-compose-material3-adaptive-layout = { module = "androidx.compose.material3.adaptive:adaptive-layout", version.ref = "material3-adaptive" } +androidx-compose-material3-adaptive-navigation = { module = "androidx.compose.material3.adaptive:adaptive-navigation", version.ref = "material3-adaptive" } androidx-compose-material3-adaptive-navigation-suite = { module = "androidx.compose.material3:material3-adaptive-navigation-suite", version.ref = "material3-adaptive-navigation-suite" } androidx-compose-materialWindow = { module = "androidx.compose.material3:material3-window-size-class" } androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" } @@ -81,7 +83,7 @@ androidx-emoji2-views = { module = "androidx.emoji2:emoji2-views", version.ref = androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment-ktx" } androidx-glance-appwidget = { module = "androidx.glance:glance-appwidget", version.ref = "androidx-glance-appwidget" } androidx-glance-material3 = { module = "androidx.glance:glance-material3", version.ref = "androidx-glance-appwidget" } -androidx-graphics-shapes = "androidx.graphics:graphics-shapes:1.0.0-alpha04" +androidx-graphics-shapes = "androidx.graphics:graphics-shapes:1.0.0-alpha05" androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "androidxHiltNavigationCompose" } androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidx-lifecycle-compose" } androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle-runtime-compose" } From 695d9bb1e6d68125a5c47d194e0039ad7b9baf9a Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Mon, 26 Feb 2024 09:33:36 -0800 Subject: [PATCH 170/463] Use -s ours and add --allow-unrelated-histories to sync workflow. (#214) --- .github/workflows/sync_main_latest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_main_latest.yml b/.github/workflows/sync_main_latest.yml index 8a57f7356..455feef8b 100644 --- a/.github/workflows/sync_main_latest.yml +++ b/.github/workflows/sync_main_latest.yml @@ -14,7 +14,7 @@ jobs: uses: actions/checkout@v4 - name: Merge main into latest - run: git fetch && git switch latest && git merge origin/main + run: git fetch && git switch latest && git merge -s ours origin/main --allow-unrelated-histories - name: Create pull request id: cpr From a284f31f8cb7d40299e1615e070e947969af5678 Mon Sep 17 00:00:00 2001 From: Alex Vanyo Date: Wed, 28 Feb 2024 11:27:21 -0800 Subject: [PATCH 171/463] Add `DeviceConfigurationOverride` snippets (#228) * Add DeviceConfigurationOverride snippets * Add TODO for ui-test version once 1.7 is stable --- .../DeviceConfigurationOverrideSnippets.kt | 65 +++++++++++++++++++ gradle/libs.versions.toml | 3 +- 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 compose/snippets/src/androidTest/java/com/example/compose/snippets/deviceconfigurationoverride/DeviceConfigurationOverrideSnippets.kt diff --git a/compose/snippets/src/androidTest/java/com/example/compose/snippets/deviceconfigurationoverride/DeviceConfigurationOverrideSnippets.kt b/compose/snippets/src/androidTest/java/com/example/compose/snippets/deviceconfigurationoverride/DeviceConfigurationOverrideSnippets.kt new file mode 100644 index 000000000..36db665a1 --- /dev/null +++ b/compose/snippets/src/androidTest/java/com/example/compose/snippets/deviceconfigurationoverride/DeviceConfigurationOverrideSnippets.kt @@ -0,0 +1,65 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.deviceconfigurationoverride + +import androidx.compose.material3.Text +import androidx.compose.ui.test.DeviceConfigurationOverride +import androidx.compose.ui.test.FontScale +import androidx.compose.ui.test.FontWeightAdjustment +import androidx.compose.ui.test.ForcedSize +import androidx.compose.ui.test.junit4.createComposeRule +import androidx.compose.ui.test.then +import androidx.compose.ui.unit.DpSize +import androidx.compose.ui.unit.dp +import com.example.compose.snippets.interop.MyScreen +import org.junit.Ignore +import org.junit.Rule +import org.junit.Test + +class DeviceConfigurationOverrideSnippetsTest { + @get:Rule + val composeTestRule = createComposeRule() + + @Ignore("Snippet test") + @Test + fun forcedSize() { + // [START android_compose_deviceconfigurationoverride_forcedsize] + composeTestRule.setContent { + DeviceConfigurationOverride( + DeviceConfigurationOverride.ForcedSize(DpSize(1280.dp, 800.dp)) + ) { + MyScreen() // will be rendered in the space for 1280dp by 800dp without clipping + } + } + // [END android_compose_deviceconfigurationoverride_forcedsize] + } + + @Ignore("Snippet test") + @Test + fun then() { + // [START android_compose_deviceconfigurationoverride_then] + composeTestRule.setContent { + DeviceConfigurationOverride( + DeviceConfigurationOverride.FontScale(1.5f) then + DeviceConfigurationOverride.FontWeightAdjustment(200) + ) { + Text(text = "text with increased scale and weight") + } + } + // [END android_compose_deviceconfigurationoverride_then] + } +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 035b5f151..068d1cb8a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,6 +4,7 @@ androidGradlePlugin = "8.2.2" androidx-activity-compose = "1.9.0-alpha03" androidx-appcompat = "1.6.1" androidx-compose-bom = "2024.02.01" +androidx-compose-ui-test = "1.7.0-alpha03" # TODO: Remove once 1.7 is stable androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" androidx-coordinator-layout = "1.2.0" @@ -68,7 +69,7 @@ androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime androidx-compose-ui = { module = "androidx.compose.ui:ui" } androidx-compose-ui-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" } androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } -androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test" } +androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test", version.ref = "androidx-compose-ui-test" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling" } From ad9ffb0f36a9aaa35c57690430dca98f97c021d5 Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Thu, 29 Feb 2024 08:27:39 -0800 Subject: [PATCH 172/463] Set git config user for sync_main_latest workflow. (#230) * Set git config user for sync_main_latest workflow. * Update PR description. --- .github/workflows/sync_main_latest.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/sync_main_latest.yml b/.github/workflows/sync_main_latest.yml index 455feef8b..38c56bbb3 100644 --- a/.github/workflows/sync_main_latest.yml +++ b/.github/workflows/sync_main_latest.yml @@ -13,6 +13,9 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Set git config user + run: git config user.email "compose-devrel-github-bot@google.com" && git config user.name "compose-devrel-github-bot" + - name: Merge main into latest run: git fetch && git switch latest && git merge -s ours origin/main --allow-unrelated-histories @@ -28,5 +31,5 @@ jobs: branch: bot-sync-main delete-branch: true title: '🤖 Sync main to latest' - body: Updated dependencies + body: 'Update `latest` with `main`' reviewers: ${{ github.actor }} From 41199d3dc33949f1050581346da8a75f01a93cdb Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Wed, 6 Mar 2024 10:42:20 +0000 Subject: [PATCH 173/463] Fix Shape snippets to correctly work with different parent sizing. (#233) * Fix Shape snippets to correctly work with different parent sizing. * Fix Shape snippets to correctly work with different parent sizing. --- .../snippets/graphics/ShapesSnippets.kt | 46 +++++++++++++++---- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt index 25a1852e1..02f485000 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt @@ -44,6 +44,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.drawWithCache +import androidx.compose.ui.geometry.Rect import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Matrix @@ -66,9 +67,11 @@ import androidx.graphics.shapes.Cubic import androidx.graphics.shapes.Morph import androidx.graphics.shapes.RoundedPolygon import androidx.graphics.shapes.star +import androidx.graphics.shapes.toPath import com.example.compose.snippets.R import kotlin.math.PI import kotlin.math.cos +import kotlin.math.max import kotlin.math.sin @Preview @@ -348,22 +351,49 @@ private fun MorphOnClick() { } // [START android_compose_shapes_polygon_compose_shape] +@JvmOverloads +fun RoundedPolygon.toPath(path: Path = Path()): Path { + pathFromCubics(path, cubics) + return path +} +private fun pathFromCubics( + path: Path, + cubics: List +) { + var first = true + path.rewind() + for (element in cubics) { + if (first) { + path.moveTo(element.anchor0X, element.anchor0Y) + first = false + } + path.cubicTo( + element.control0X, element.control0Y, element.control1X, element.control1Y, + element.anchor1X, element.anchor1Y + ) + } + path.close() +} +fun RoundedPolygon.getBounds() = calculateBounds().let { Rect(it[0], it[1], it[2], it[3]) } class RoundedPolygonShape( - private val polygon: RoundedPolygon + private val polygon: RoundedPolygon, + private var matrix: Matrix = Matrix() ) : Shape { - private val matrix = Matrix() + private val path = Path() override fun createOutline( size: Size, layoutDirection: LayoutDirection, density: Density ): Outline { - val path = polygon.cubics.toPath() - // below assumes that you haven't changed the default radius of 1f, nor the centerX and centerY of 0f - // By default this stretches the path to the size of the container, if you don't want stretching, use the same size.width for both x and y. - matrix.scale(size.width / 2f, size.height / 2f) - matrix.translate(1f, 1f) - path.transform(matrix) + path.rewind() + polygon.toPath(path) + matrix.reset() + val bounds = polygon.getBounds() + val maxDimension = max(bounds.width, bounds.height) + matrix.scale(size.width / maxDimension, size.height / maxDimension) + matrix.translate(-bounds.left, -bounds.top) + path.transform(matrix) return Outline.Generic(path) } } From 3e6724df8bbc752191c96140e0ebde7fd5f66656 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot Date: Wed, 6 Mar 2024 21:00:03 +0000 Subject: [PATCH 174/463] =?UTF-8?q?=F0=9F=A4=96=20Update=20Dependencies?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 068d1cb8a..285665756 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ androidGradlePlugin = "8.2.2" androidx-activity-compose = "1.9.0-alpha03" androidx-appcompat = "1.6.1" androidx-compose-bom = "2024.02.01" -androidx-compose-ui-test = "1.7.0-alpha03" # TODO: Remove once 1.7 is stable +androidx-compose-ui-test = "1.7.0-alpha03" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" androidx-coordinator-layout = "1.2.0" From bc0a827af67c563edac0b0c29671756a24affaf4 Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Wed, 6 Mar 2024 13:06:13 -0800 Subject: [PATCH 175/463] Update Compose BOM to 2024.02.02 --- gradle/libs.versions.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 285665756..8a1b643e6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,8 +3,8 @@ accompanist = "0.32.0" androidGradlePlugin = "8.2.2" androidx-activity-compose = "1.9.0-alpha03" androidx-appcompat = "1.6.1" -androidx-compose-bom = "2024.02.01" -androidx-compose-ui-test = "1.7.0-alpha03" +androidx-compose-bom = "2024.02.02" +androidx-compose-ui-test = "1.7.0-alpha03" # TODO: Remove once 1.7 is stable androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" androidx-coordinator-layout = "1.2.0" From 0d7ac09570a4f809413966ea5f394b47ce28034d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Mlynari=C4=8D?= Date: Thu, 7 Mar 2024 09:02:31 +0100 Subject: [PATCH 176/463] Migrate recomposeHighlighter to Modifier.Node (#197) * Migrate recomposeHighlighter to Modifier.Node * Apply Spotless * Simplify recompose highlighter * Apply Spotless --------- Co-authored-by: mlykotom --- .../recomposehighlighter/MainActivity.kt | 4 +- .../RecomposeHighlighter.kt | 180 +++++++++++------- 2 files changed, 112 insertions(+), 72 deletions(-) diff --git a/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/MainActivity.kt b/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/MainActivity.kt index 3f7be75ec..cd3540ab7 100644 --- a/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/MainActivity.kt +++ b/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/MainActivity.kt @@ -26,7 +26,7 @@ import androidx.compose.material.Button import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier @@ -43,7 +43,7 @@ class MainActivity : ComponentActivity() { @Composable private fun Content() { - var counter by remember { mutableStateOf(0) } + var counter by remember { mutableIntStateOf(0) } Column( Modifier .fillMaxSize() diff --git a/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt b/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt index fd44e823c..6638a7fa6 100644 --- a/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt +++ b/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt @@ -16,100 +16,140 @@ package com.example.android.compose.recomposehighlighter -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.Stable -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import androidx.compose.ui.composed -import androidx.compose.ui.draw.drawWithCache import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor +import androidx.compose.ui.graphics.drawscope.ContentDrawScope import androidx.compose.ui.graphics.drawscope.Fill import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.graphics.lerp +import androidx.compose.ui.node.DrawModifierNode +import androidx.compose.ui.node.ModifierNodeElement +import androidx.compose.ui.node.invalidateDraw +import androidx.compose.ui.platform.InspectorInfo import androidx.compose.ui.platform.debugInspectorInfo import androidx.compose.ui.unit.dp +import java.util.Objects import kotlin.math.min +import kotlinx.coroutines.Job import kotlinx.coroutines.delay +import kotlinx.coroutines.launch /** * A [Modifier] that draws a border around elements that are recomposing. The border increases in * size and interpolates from red to green as more recompositions occur before a timeout. */ @Stable -fun Modifier.recomposeHighlighter(): Modifier = this.then(recomposeModifier) - -// Use a single instance + @Stable to ensure that recompositions can enable skipping optimizations -// Modifier.composed will still remember unique data per call site. -private val recomposeModifier = - Modifier.composed(inspectorInfo = debugInspectorInfo { name = "recomposeHighlighter" }) { - // The total number of compositions that have occurred. We're not using a State<> here be - // able to read/write the value without invalidating (which would cause infinite - // recomposition). - val totalCompositions = remember { arrayOf(0L) } - totalCompositions[0]++ - - // The value of totalCompositions at the last timeout. - val totalCompositionsAtLastTimeout = remember { mutableStateOf(0L) } - - // Start the timeout, and reset everytime there's a recomposition. (Using totalCompositions - // as the key is really just to cause the timer to restart every composition). - LaunchedEffect(totalCompositions[0]) { +fun Modifier.recomposeHighlighter(): Modifier = this.then(RecomposeHighlighterElement()) + +private class RecomposeHighlighterElement : ModifierNodeElement() { + + override fun InspectorInfo.inspectableProperties() { + debugInspectorInfo { name = "recomposeHighlighter" } + } + + override fun create(): RecomposeHighlighterModifier = RecomposeHighlighterModifier() + + override fun update(node: RecomposeHighlighterModifier) { + node.incrementCompositions() + } + + // It's never equal, so that every recomposition triggers the update function. + override fun equals(other: Any?): Boolean = false + + override fun hashCode(): Int = Objects.hash(this) +} + +private class RecomposeHighlighterModifier : Modifier.Node(), DrawModifierNode { + + private var timerJob: Job? = null + + /** + * The total number of compositions that have occurred. + */ + private var totalCompositions: Long = 0 + set(value) { + if (field == value) return + restartTimer() + field = value + invalidateDraw() + } + + fun incrementCompositions() { + totalCompositions++ + } + + override fun onAttach() { + super.onAttach() + restartTimer() + } + + override val shouldAutoInvalidate: Boolean = false + + override fun onDetach() { + timerJob?.cancel() + } + + /** + * Start the timeout, and reset everytime there's a recomposition. + */ + private fun restartTimer() { + if (!isAttached) return + + timerJob?.cancel() + timerJob = coroutineScope.launch { delay(3000) - totalCompositionsAtLastTimeout.value = totalCompositions[0] + totalCompositions = 0 + invalidateDraw() } + } - Modifier.drawWithCache { - onDrawWithContent { - // Draw actual content. - drawContent() + override fun ContentDrawScope.draw() { + // Draw actual content. + drawContent() - // Below is to draw the highlight, if necessary. A lot of the logic is copied from - // Modifier.border - val numCompositionsSinceTimeout = - totalCompositions[0] - totalCompositionsAtLastTimeout.value + // Below is to draw the highlight, if necessary. A lot of the logic is copied from Modifier.border - val hasValidBorderParams = size.minDimension > 0f - if (!hasValidBorderParams || numCompositionsSinceTimeout <= 0) { - return@onDrawWithContent - } + val hasValidBorderParams = size.minDimension > 0f + if (!hasValidBorderParams || totalCompositions <= 0) { + return + } - val (color, strokeWidthPx) = - when (numCompositionsSinceTimeout) { - // We need at least one composition to draw, so draw the smallest border - // color in blue. - 1L -> Color.Blue to 1f - // 2 compositions is _probably_ okay. - 2L -> Color.Green to 2.dp.toPx() - // 3 or more compositions before timeout may indicate an issue. lerp the - // color from yellow to red, and continually increase the border size. - else -> { - lerp( - Color.Yellow.copy(alpha = 0.8f), - Color.Red.copy(alpha = 0.5f), - min(1f, (numCompositionsSinceTimeout - 1).toFloat() / 100f) - ) to numCompositionsSinceTimeout.toInt().dp.toPx() - } - } - - val halfStroke = strokeWidthPx / 2 - val topLeft = Offset(halfStroke, halfStroke) - val borderSize = Size(size.width - strokeWidthPx, size.height - strokeWidthPx) - - val fillArea = (strokeWidthPx * 2) > size.minDimension - val rectTopLeft = if (fillArea) Offset.Zero else topLeft - val size = if (fillArea) size else borderSize - val style = if (fillArea) Fill else Stroke(strokeWidthPx) - - drawRect( - brush = SolidColor(color), - topLeft = rectTopLeft, - size = size, - style = style - ) + val (color, strokeWidthPx) = + when (totalCompositions) { + // We need at least one composition to draw, so draw the smallest border + // color in blue. + 1L -> Color.Blue to 1f + // 2 compositions is _probably_ okay. + 2L -> Color.Green to 2.dp.toPx() + // 3 or more compositions before timeout may indicate an issue. lerp the + // color from yellow to red, and continually increase the border size. + else -> { + lerp( + Color.Yellow.copy(alpha = 0.8f), + Color.Red.copy(alpha = 0.5f), + min(1f, (totalCompositions - 1).toFloat() / 100f), + ) to totalCompositions.toInt().dp.toPx() + } } - } + + val halfStroke = strokeWidthPx / 2 + val topLeft = Offset(halfStroke, halfStroke) + val borderSize = Size(size.width - strokeWidthPx, size.height - strokeWidthPx) + + val fillArea = (strokeWidthPx * 2) > size.minDimension + val rectTopLeft = if (fillArea) Offset.Zero else topLeft + val size = if (fillArea) size else borderSize + val style = if (fillArea) Fill else Stroke(strokeWidthPx) + + drawRect( + brush = SolidColor(color), + topLeft = rectTopLeft, + size = size, + style = style, + ) } +} From bb01aa8c3719a56d2741f1b7be51269aedf4ca78 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Fri, 8 Mar 2024 10:27:29 +0000 Subject: [PATCH 177/463] Improve shapes documentation (#240) * Remove custom toPath() method in favour of using `toPath().asComposePath()` instead. * Apply Spotless * Remove custom toPath() method in favour of using `toPath().asComposePath()` instead. --------- Co-authored-by: riggaroo --- .../snippets/graphics/ShapesSnippets.kt | 49 +++++-------------- 1 file changed, 12 insertions(+), 37 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt index 02f485000..f254da288 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt @@ -51,6 +51,7 @@ import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Outline import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.graphics.asComposePath import androidx.compose.ui.graphics.drawscope.scale import androidx.compose.ui.graphics.drawscope.translate import androidx.compose.ui.graphics.graphicsLayer @@ -87,8 +88,7 @@ fun BasicShapeCanvas() { centerX = size.width / 2, centerY = size.height / 2 ) - val roundedPolygonPath = roundedPolygon.cubics - .toPath() + val roundedPolygonPath = roundedPolygon.toPath().asComposePath() onDrawBehind { drawPath(roundedPolygonPath, color = Color.Blue) } @@ -115,8 +115,7 @@ private fun RoundedShapeExample() { smoothing = 1f ) ) - val roundedPolygonPath = roundedPolygon.cubics - .toPath() + val roundedPolygonPath = roundedPolygon.toPath().asComposePath() onDrawBehind { drawPath(roundedPolygonPath, color = Color.Black) } @@ -143,8 +142,7 @@ private fun RoundedShapeSmoothnessExample() { smoothing = 0.1f ) ) - val roundedPolygonPath = roundedPolygon.cubics - .toPath() + val roundedPolygonPath = roundedPolygon.toPath().asComposePath() onDrawBehind { drawPath(roundedPolygonPath, color = Color.Black) } @@ -181,7 +179,7 @@ private fun MorphExample() { val morph = Morph(start = triangle, end = square) val morphPath = morph - .toComposePath(progress = 0.5f) + .toPath(progress = 0.5f).asComposePath() onDrawBehind { drawPath(morphPath, color = Color.Black) @@ -228,7 +226,8 @@ private fun MorphExampleAnimation() { val morph = Morph(start = triangle, end = square) val morphPath = morph - .toComposePath(progress = morphProgress.value) + .toPath(progress = morphProgress.value) + .asComposePath() onDrawBehind { drawPath(morphPath, color = Color.Black) @@ -300,7 +299,7 @@ class MorphPolygonShape( matrix.scale(size.width / 2f, size.height / 2f) matrix.translate(1f, 1f) - val path = morph.toComposePath(progress = percentage) + val path = morph.toPath(progress = percentage).asComposePath() path.transform(matrix) return Outline.Generic(path) } @@ -351,42 +350,19 @@ private fun MorphOnClick() { } // [START android_compose_shapes_polygon_compose_shape] -@JvmOverloads -fun RoundedPolygon.toPath(path: Path = Path()): Path { - pathFromCubics(path, cubics) - return path -} -private fun pathFromCubics( - path: Path, - cubics: List -) { - var first = true - path.rewind() - for (element in cubics) { - if (first) { - path.moveTo(element.anchor0X, element.anchor0Y) - first = false - } - path.cubicTo( - element.control0X, element.control0Y, element.control1X, element.control1Y, - element.anchor1X, element.anchor1Y - ) - } - path.close() -} fun RoundedPolygon.getBounds() = calculateBounds().let { Rect(it[0], it[1], it[2], it[3]) } class RoundedPolygonShape( private val polygon: RoundedPolygon, private var matrix: Matrix = Matrix() ) : Shape { - private val path = Path() + private var path = Path() override fun createOutline( size: Size, layoutDirection: LayoutDirection, density: Density ): Outline { path.rewind() - polygon.toPath(path) + path = polygon.toPath().asComposePath() matrix.reset() val bounds = polygon.getBounds() val maxDimension = max(bounds.width, bounds.height) @@ -482,7 +458,7 @@ class CustomRotatingMorphShape( matrix.translate(1f, 1f) matrix.rotateZ(rotation) - val path = morph.toComposePath(progress = percentage) + val path = morph.toPath(progress = percentage).asComposePath() path.transform(matrix) return Outline.Generic(path) @@ -596,8 +572,7 @@ private fun CartesianPoints() { Box( modifier = Modifier .drawWithCache { - val roundedPolygonPath = polygon.cubics - .toPath() + val roundedPolygonPath = polygon.toPath().asComposePath() onDrawBehind { scale(size.width * 0.5f, size.width * 0.5f) { translate(size.width * 0.5f, size.height * 0.5f) { From 7925f9d19a3a4bca15ef68892ea4938da6157f85 Mon Sep 17 00:00:00 2001 From: Alex Vanyo Date: Fri, 8 Mar 2024 08:34:29 -0800 Subject: [PATCH 178/463] Update material3-adaptive to 1.0.0-alpha08 (#239) --- .../adaptivelayouts/SampleListDetailPaneScaffold.kt | 12 ++++++++---- gradle/libs.versions.toml | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt index a674512ad..154ee4b36 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt @@ -64,7 +64,8 @@ fun SampleListDetailPaneScaffoldParts() { // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part03] ListDetailPaneScaffold( - scaffoldState = navigator.scaffoldState, + directive = navigator.scaffoldDirective, + value = navigator.scaffoldValue, // [START_EXCLUDE] listPane = {}, detailPane = {}, @@ -74,7 +75,8 @@ fun SampleListDetailPaneScaffoldParts() { // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part04] ListDetailPaneScaffold( - scaffoldState = navigator.scaffoldState, + directive = navigator.scaffoldDirective, + value = navigator.scaffoldValue, listPane = { AnimatedPane(Modifier) { MyList( @@ -95,7 +97,8 @@ fun SampleListDetailPaneScaffoldParts() { // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part05] ListDetailPaneScaffold( - scaffoldState = navigator.scaffoldState, + directive = navigator.scaffoldDirective, + value = navigator.scaffoldValue, listPane = // [START_EXCLUDE] {}, @@ -129,7 +132,8 @@ fun SampleListDetailPaneScaffoldFull() { } ListDetailPaneScaffold( - scaffoldState = navigator.scaffoldState, + directive = navigator.scaffoldDirective, + value = navigator.scaffoldValue, listPane = { AnimatedPane(Modifier) { MyList( diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8a1b643e6..e69432a98 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -33,8 +33,8 @@ kotlin = "1.9.20" ksp = "1.8.0-1.0.9" maps-compose = "4.3.2" material = "1.11.0" -material3-adaptive = "1.0.0-alpha07" -material3-adaptive-navigation-suite = "1.0.0-alpha04" +material3-adaptive = "1.0.0-alpha08" +material3-adaptive-navigation-suite = "1.0.0-alpha05" media3 = "1.2.1" # @keep minSdk = "21" From 85d71268073cc83d4d5981fc60eb4d5aef6fa516 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot Date: Wed, 20 Mar 2024 17:31:46 +0000 Subject: [PATCH 179/463] =?UTF-8?q?=F0=9F=A4=96=20Update=20Dependencies?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e69432a98..18a0e3e9d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ androidGradlePlugin = "8.2.2" androidx-activity-compose = "1.9.0-alpha03" androidx-appcompat = "1.6.1" androidx-compose-bom = "2024.02.02" -androidx-compose-ui-test = "1.7.0-alpha03" # TODO: Remove once 1.7 is stable +androidx-compose-ui-test = "1.7.0-alpha03" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" androidx-coordinator-layout = "1.2.0" From e9e82be2b22c0628cb262be010d150091be3dd38 Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Wed, 20 Mar 2024 10:44:41 -0700 Subject: [PATCH 180/463] Update Compose BOM to 2024.03.00 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 18a0e3e9d..210b20995 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ accompanist = "0.32.0" androidGradlePlugin = "8.2.2" androidx-activity-compose = "1.9.0-alpha03" androidx-appcompat = "1.6.1" -androidx-compose-bom = "2024.02.02" +androidx-compose-bom = "2024.03.00" androidx-compose-ui-test = "1.7.0-alpha03" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" From 4572c6197d906e24776a67be2bbd55dffc9b17a0 Mon Sep 17 00:00:00 2001 From: MagicalMeghan <46006059+MagicalMeghan@users.noreply.github.com> Date: Mon, 8 Apr 2024 18:58:17 -0400 Subject: [PATCH 181/463] Update libs.versions.toml (#247) Update Compose BOM to 2024.04.00 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 210b20995..173db1d6f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ accompanist = "0.32.0" androidGradlePlugin = "8.2.2" androidx-activity-compose = "1.9.0-alpha03" androidx-appcompat = "1.6.1" -androidx-compose-bom = "2024.03.00" +androidx-compose-bom = "2024.04.00" androidx-compose-ui-test = "1.7.0-alpha03" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" From 4d34435700cff555d2def460ab62a625455a3f9c Mon Sep 17 00:00:00 2001 From: Hoyt Summers Pittman Date: Fri, 12 Apr 2024 10:40:12 -0400 Subject: [PATCH 182/463] Update GlanceSnippets.kt (#249) * Update GlanceSnippets.kt * Apply Spotless * Update GlanceSnippets.kt --------- Co-authored-by: secondsun --- .../com/example/compose/snippets/glance/GlanceSnippets.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt index 4e1af17dc..2566a514c 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt @@ -149,14 +149,17 @@ private object CreateUI { provideContent { // create your AppWidget here - MyContent() + GlanceTheme { + MyContent() + } } } @Composable private fun MyContent() { Column( - modifier = GlanceModifier.fillMaxSize(), + modifier = GlanceModifier.fillMaxSize() + .background(GlanceTheme.colors.background), verticalAlignment = Alignment.Top, horizontalAlignment = Alignment.CenterHorizontally ) { From 568344b3d440b13612130dc40b7425258a5e9c89 Mon Sep 17 00:00:00 2001 From: Simona <35065668+simona-anomis@users.noreply.github.com> Date: Thu, 18 Apr 2024 17:32:45 +0100 Subject: [PATCH 183/463] Update libs.versions.toml (#251) --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 173db1d6f..356661c85 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ accompanist = "0.32.0" androidGradlePlugin = "8.2.2" androidx-activity-compose = "1.9.0-alpha03" androidx-appcompat = "1.6.1" -androidx-compose-bom = "2024.04.00" +androidx-compose-bom = "2024.04.01" androidx-compose-ui-test = "1.7.0-alpha03" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" From 57ebb935d5a198550a51cab34595d5fe97db7824 Mon Sep 17 00:00:00 2001 From: "Ian G. Clifton" <1033551+IanGClifton@users.noreply.github.com> Date: Wed, 1 May 2024 15:51:47 -0700 Subject: [PATCH 184/463] Updated ListDetailPaneScaffold use to alpha12 (#255) This eliminates storing state outside and directly uses the navigator as the source of truth. This also gets rid of the Modifier for AnimatedPane as it's no longer a required argument. --- build.gradle.kts | 1 + compose/snippets/build.gradle.kts | 1 + .../SampleListDetailPaneScaffold.kt | 65 ++++++------------- gradle/libs.versions.toml | 3 +- 4 files changed, 24 insertions(+), 46 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 134686249..547023ae7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,6 +7,7 @@ plugins { alias(libs.plugins.kotlin.android) apply false alias(libs.plugins.kapt) apply false alias(libs.plugins.hilt) apply false + alias(libs.plugins.kotlin.parcelize) apply false } apply("${project.rootDir}/buildscripts/toml-updater-config.gradle") diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index acfa8ddc8..48016ae8d 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -19,6 +19,7 @@ plugins { alias(libs.plugins.kotlin.android) alias(libs.plugins.kapt) alias(libs.plugins.hilt) + alias(libs.plugins.kotlin.parcelize) } android { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt index 154ee4b36..68c14dfd8 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt @@ -16,6 +16,7 @@ package com.example.compose.snippets.adaptivelayouts +import android.os.Parcelable import androidx.activity.compose.BackHandler import androidx.compose.foundation.background import androidx.compose.foundation.clickable @@ -35,33 +36,25 @@ import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffoldRole import androidx.compose.material3.adaptive.navigation.rememberListDetailPaneScaffoldNavigator import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.saveable.Saver -import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import kotlinx.parcelize.Parcelize @OptIn(ExperimentalMaterial3AdaptiveApi::class) @Composable fun SampleListDetailPaneScaffoldParts() { // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part02] - val navigator = rememberListDetailPaneScaffoldNavigator() + val navigator = rememberListDetailPaneScaffoldNavigator() BackHandler(navigator.canNavigateBack()) { navigator.navigateBack() } // [END android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part02] - // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part01] - var selectedItem: MyItem? by rememberSaveable(stateSaver = MyItem.Saver) { - mutableStateOf(null) - } - // [END android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part01] - // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part03] ListDetailPaneScaffold( directive = navigator.scaffoldDirective, @@ -78,13 +71,11 @@ fun SampleListDetailPaneScaffoldParts() { directive = navigator.scaffoldDirective, value = navigator.scaffoldValue, listPane = { - AnimatedPane(Modifier) { + AnimatedPane { MyList( - onItemClick = { id -> - // Set current item - selectedItem = id - // Switch focus to detail pane - navigator.navigateTo(ListDetailPaneScaffoldRole.Detail) + onItemClick = { item -> + // Navigate to the detail pane with the passed item + navigator.navigateTo(ListDetailPaneScaffoldRole.Detail, item) } ) } @@ -104,9 +95,9 @@ fun SampleListDetailPaneScaffoldParts() { {}, // [END_EXCLUDE] detailPane = { - AnimatedPane(Modifier) { - selectedItem?.let { item -> - MyDetails(item) + AnimatedPane { + navigator.currentDestination?.content?.let { + MyDetails(it) } } }, @@ -119,13 +110,7 @@ fun SampleListDetailPaneScaffoldParts() { @Composable fun SampleListDetailPaneScaffoldFull() { // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_full] - // Currently selected item - var selectedItem: MyItem? by rememberSaveable(stateSaver = MyItem.Saver) { - mutableStateOf(null) - } - - // Create the ListDetailPaneScaffoldState - val navigator = rememberListDetailPaneScaffoldNavigator() + val navigator = rememberListDetailPaneScaffoldNavigator() BackHandler(navigator.canNavigateBack()) { navigator.navigateBack() @@ -135,22 +120,20 @@ fun SampleListDetailPaneScaffoldFull() { directive = navigator.scaffoldDirective, value = navigator.scaffoldValue, listPane = { - AnimatedPane(Modifier) { + AnimatedPane { MyList( - onItemClick = { id -> - // Set current item - selectedItem = id - // Display the detail pane - navigator.navigateTo(ListDetailPaneScaffoldRole.Detail) + onItemClick = { item -> + // Navigate to the detail pane with the passed item + navigator.navigateTo(ListDetailPaneScaffoldRole.Detail, item) }, ) } }, detailPane = { - AnimatedPane(Modifier) { + AnimatedPane { // Show the detail pane content if selected item is available - selectedItem?.let { item -> - MyDetails(item) + navigator.currentDestination?.content?.let { + MyDetails(it) } } }, @@ -206,19 +189,11 @@ fun MyDetails(item: MyItem) { } // [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_myitem] -class MyItem(val id: Int) { - companion object { - val Saver: Saver = Saver( - { it?.id }, - ::MyItem, - ) - } -} +@Parcelize +class MyItem(val id: Int) : Parcelable // [END android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_myitem] val shortStrings = listOf( - "Android", - "Petit four", "Cupcake", "Donut", "Eclair", diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 356661c85..f1d252e8a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -33,7 +33,7 @@ kotlin = "1.9.20" ksp = "1.8.0-1.0.9" maps-compose = "4.3.2" material = "1.11.0" -material3-adaptive = "1.0.0-alpha08" +material3-adaptive = "1.0.0-alpha12" material3-adaptive-navigation-suite = "1.0.0-alpha05" media3 = "1.2.1" # @keep @@ -118,3 +118,4 @@ hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } version-catalog-update = { id = "nl.littlerobots.version-catalog-update", version.ref = "version-catalog-update" } +kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } From edb4c219d30f69af2d4a40f2d33dfca00d516b0a Mon Sep 17 00:00:00 2001 From: "Ian G. Clifton" <1033551+IanGClifton@users.noreply.github.com> Date: Wed, 1 May 2024 17:21:07 -0700 Subject: [PATCH 185/463] Added NavigationSuiteScaffold snippets (#261) * Added NavigationSuiteScaffold snippets * Apply Spotless --- compose/snippets/build.gradle.kts | 1 + .../SampleNavigationSuiteScaffold.kt | 191 ++++++++++++++++++ .../src/main/res/values-es/strings.xml | 4 + .../snippets/src/main/res/values/strings.xml | 4 + gradle/libs.versions.toml | 2 +- 5 files changed, 201 insertions(+), 1 deletion(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleNavigationSuiteScaffold.kt diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index 48016ae8d..17b3ea12f 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -96,6 +96,7 @@ dependencies { implementation(libs.androidx.compose.material3.adaptive) implementation(libs.androidx.compose.material3.adaptive.layout) implementation(libs.androidx.compose.material3.adaptive.navigation) + implementation(libs.androidx.compose.material3.adaptive.navigation.suite) implementation(libs.androidx.compose.material) implementation(libs.androidx.compose.runtime) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleNavigationSuiteScaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleNavigationSuiteScaffold.kt new file mode 100644 index 000000000..f5c461f6c --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleNavigationSuiteScaffold.kt @@ -0,0 +1,191 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalMaterial3AdaptiveNavigationSuiteApi::class) + +package com.example.compose.snippets.adaptivelayouts + +import androidx.annotation.StringRes +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.AccountBox +import androidx.compose.material.icons.filled.Favorite +import androidx.compose.material.icons.filled.Home +import androidx.compose.material.icons.filled.ShoppingCart +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.NavigationBarItemDefaults +import androidx.compose.material3.Text +import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo +import androidx.compose.material3.adaptive.navigationsuite.ExperimentalMaterial3AdaptiveNavigationSuiteApi +import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteDefaults +import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteScaffold +import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteScaffoldDefaults +import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteType +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.res.stringResource +import androidx.window.core.layout.WindowWidthSizeClass +import com.example.compose.snippets.R + +// [START android_compose_adaptivelayouts_sample_navigation_suite_scaffold_destinations] +enum class AppDestinations( + @StringRes val label: Int, + val icon: ImageVector, + @StringRes val contentDescription: Int +) { + HOME(R.string.home, Icons.Default.Home, R.string.home), + FAVORITES(R.string.favorites, Icons.Default.Favorite, R.string.favorites), + SHOPPING(R.string.shopping, Icons.Default.ShoppingCart, R.string.shopping), + PROFILE(R.string.profile, Icons.Default.AccountBox, R.string.profile), +} +// [END android_compose_adaptivelayouts_sample_navigation_suite_scaffold_destinations] + +@Composable +fun SampleNavigationSuiteScaffoldParts() { + // [START android_compose_adaptivelayouts_sample_navigation_suite_scaffold_remember] + var currentDestination by rememberSaveable { mutableStateOf(AppDestinations.HOME) } + // [END android_compose_adaptivelayouts_sample_navigation_suite_scaffold_remember] + + // [START android_compose_adaptivelayouts_sample_navigation_suite_scaffold_items] + NavigationSuiteScaffold( + navigationSuiteItems = { + AppDestinations.entries.forEach { + item( + icon = { + Icon( + it.icon, + contentDescription = stringResource(it.contentDescription) + ) + }, + label = { Text(stringResource(it.label)) }, + selected = it == currentDestination, + onClick = { currentDestination = it } + ) + } + } + ) { + // TODO: Destination content. + } + // [END android_compose_adaptivelayouts_sample_navigation_suite_scaffold_items] + + // [START android_compose_adaptivelayouts_sample_navigation_suite_scaffold_content] + NavigationSuiteScaffold( + navigationSuiteItems = { /*...*/ } + ) { + // Destination content. + when (currentDestination) { + AppDestinations.HOME -> HomeDestination() + AppDestinations.FAVORITES -> FavoritesDestination() + AppDestinations.SHOPPING -> ShoppingDestination() + AppDestinations.PROFILE -> ProfileDestination() + } + } + // [END android_compose_adaptivelayouts_sample_navigation_suite_scaffold_content] +} + +@Composable +fun SampleNavigationSuiteScaffoldColors() { + var currentDestination by rememberSaveable { mutableStateOf(AppDestinations.HOME) } + + // [START android_compose_adaptivelayouts_sample_navigation_suite_scaffold_container_color] + NavigationSuiteScaffold( + navigationSuiteItems = { /* ... */ }, + containerColor = MaterialTheme.colorScheme.primary, + contentColor = MaterialTheme.colorScheme.onPrimary, + ) { + // Content... + } + // [END android_compose_adaptivelayouts_sample_navigation_suite_scaffold_container_color] + + // [START android_compose_adaptivelayouts_sample_navigation_suite_scaffold_suite_colors] + NavigationSuiteScaffold( + navigationSuiteItems = { /* ... */ }, + navigationSuiteColors = NavigationSuiteDefaults.colors( + navigationBarContainerColor = Color.Transparent, + ) + ) { + // Content... + } + // [END android_compose_adaptivelayouts_sample_navigation_suite_scaffold_suite_colors] + + // [START android_compose_adaptivelayouts_sample_navigation_suite_scaffold_item_colors] + val myNavigationSuiteItemColors = NavigationSuiteDefaults.itemColors( + navigationBarItemColors = NavigationBarItemDefaults.colors( + indicatorColor = MaterialTheme.colorScheme.primaryContainer, + selectedIconColor = MaterialTheme.colorScheme.onPrimaryContainer + ), + ) + + NavigationSuiteScaffold( + navigationSuiteItems = { + AppDestinations.entries.forEach { + item( + icon = { + Icon( + it.icon, + contentDescription = stringResource(it.contentDescription) + ) + }, + label = { Text(stringResource(it.label)) }, + selected = it == currentDestination, + onClick = { currentDestination = it }, + colors = myNavigationSuiteItemColors, + ) + } + }, + ) { + // Content... + } + // [END android_compose_adaptivelayouts_sample_navigation_suite_scaffold_item_colors] +} + +@Composable +fun SampleNavigationSuiteScaffoldCustomType() { + // [START android_compose_adaptivelayouts_sample_navigation_suite_scaffold_layout_type] + val adaptiveInfo = currentWindowAdaptiveInfo() + val customNavSuiteType = with(adaptiveInfo) { + if (windowSizeClass.windowWidthSizeClass == WindowWidthSizeClass.EXPANDED) { + NavigationSuiteType.NavigationDrawer + } else { + NavigationSuiteScaffoldDefaults.calculateFromAdaptiveInfo(adaptiveInfo) + } + } + + NavigationSuiteScaffold( + navigationSuiteItems = { /* ... */ }, + layoutType = customNavSuiteType, + ) { + // Content... + } + // [END android_compose_adaptivelayouts_sample_navigation_suite_scaffold_layout_type] +} + +@Composable +fun HomeDestination() {} + +@Composable +fun FavoritesDestination() {} + +@Composable +fun ShoppingDestination() {} + +@Composable +fun ProfileDestination() {} diff --git a/compose/snippets/src/main/res/values-es/strings.xml b/compose/snippets/src/main/res/values-es/strings.xml index 7507771af..cd1e2c96c 100644 --- a/compose/snippets/src/main/res/values-es/strings.xml +++ b/compose/snippets/src/main/res/values-es/strings.xml @@ -48,4 +48,8 @@ Add View entry Related Articles + Inicio + Favoritos + Compras + Perfil \ No newline at end of file diff --git a/compose/snippets/src/main/res/values/strings.xml b/compose/snippets/src/main/res/values/strings.xml index 1baab18fc..9c693cafe 100644 --- a/compose/snippets/src/main/res/values/strings.xml +++ b/compose/snippets/src/main/res/values/strings.xml @@ -48,4 +48,8 @@ Add View entry Related Articles + Home + Favorites + Shopping + Profile \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f1d252e8a..01c5c439c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -34,7 +34,7 @@ ksp = "1.8.0-1.0.9" maps-compose = "4.3.2" material = "1.11.0" material3-adaptive = "1.0.0-alpha12" -material3-adaptive-navigation-suite = "1.0.0-alpha05" +material3-adaptive-navigation-suite = "1.0.0-alpha07" media3 = "1.2.1" # @keep minSdk = "21" From cf682eb855fef5e0117954ae8c80f1f8b622719b Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Fri, 3 May 2024 09:52:00 +0100 Subject: [PATCH 186/463] =?UTF-8?q?=F0=9F=A4=96=20Update=20Dependencies=20?= =?UTF-8?q?(#262)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 01c5c439c..2078c2124 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ androidGradlePlugin = "8.2.2" androidx-activity-compose = "1.9.0-alpha03" androidx-appcompat = "1.6.1" androidx-compose-bom = "2024.04.01" -androidx-compose-ui-test = "1.7.0-alpha03" +androidx-compose-ui-test = "1.7.0-alpha08" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" androidx-coordinator-layout = "1.2.0" @@ -12,8 +12,8 @@ androidx-corektx = "1.9.0" androidx-emoji2-views = "1.4.0" androidx-fragment-ktx = "1.6.2" androidx-glance-appwidget = "1.0.0" -androidx-lifecycle-compose = "2.7.0" -androidx-lifecycle-runtime-compose = "2.7.0" +androidx-lifecycle-compose = "2.8.0-rc01" +androidx-lifecycle-runtime-compose = "2.8.0-rc01" androidx-navigation = "2.7.7" androidx-paging = "3.2.1" androidx-test = "1.5.0" @@ -117,5 +117,5 @@ gradle-versions = { id = "com.github.ben-manes.versions", version.ref = "gradle- hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } -version-catalog-update = { id = "nl.littlerobots.version-catalog-update", version.ref = "version-catalog-update" } kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } +version-catalog-update = { id = "nl.littlerobots.version-catalog-update", version.ref = "version-catalog-update" } From ef29bb6fda5c60c3f1b6d9de4d1c500b9f49c7a0 Mon Sep 17 00:00:00 2001 From: "Ian G. Clifton" <1033551+IanGClifton@users.noreply.github.com> Date: Mon, 6 May 2024 11:30:43 -0700 Subject: [PATCH 187/463] Added snippets for SupportingPaneScaffold (#260) * Added snippets for SupportingPaneScaffold * Apply Spotless * Update compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleSupportingPaneScaffold.kt --- .../SampleSupportingPaneScaffold.kt | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleSupportingPaneScaffold.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleSupportingPaneScaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleSupportingPaneScaffold.kt new file mode 100644 index 000000000..ad2e0d30f --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleSupportingPaneScaffold.kt @@ -0,0 +1,147 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalMaterial3AdaptiveApi::class) + +package com.example.compose.snippets.adaptivelayouts + +import androidx.activity.compose.BackHandler +import androidx.compose.foundation.layout.safeContentPadding +import androidx.compose.foundation.layout.wrapContentSize +import androidx.compose.material3.Button +import androidx.compose.material3.Text +import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi +import androidx.compose.material3.adaptive.layout.AnimatedPane +import androidx.compose.material3.adaptive.layout.PaneAdaptedValue +import androidx.compose.material3.adaptive.layout.SupportingPaneScaffold +import androidx.compose.material3.adaptive.layout.SupportingPaneScaffoldRole +import androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole +import androidx.compose.material3.adaptive.layout.ThreePaneScaffoldScope +import androidx.compose.material3.adaptive.navigation.rememberSupportingPaneScaffoldNavigator +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier + +@Composable +fun SampleSupportingPaneScaffoldParts() { + // [START android_compose_adaptivelayouts_sample_supporting_pane_scaffold_nav_and_back] + val navigator = rememberSupportingPaneScaffoldNavigator() + + BackHandler(navigator.canNavigateBack()) { + navigator.navigateBack() + } + // [END android_compose_adaptivelayouts_sample_supporting_pane_scaffold_nav_and_back] + + // [START android_compose_adaptivelayouts_sample_supporting_pane_scaffold_params] + SupportingPaneScaffold( + directive = navigator.scaffoldDirective, + value = navigator.scaffoldValue, + mainPane = { /*...*/ }, + supportingPane = { /*...*/ }, + ) + // [END android_compose_adaptivelayouts_sample_supporting_pane_scaffold_params] +} + +@Composable +fun SampleSupportingPaneScaffoldFull() { + // [START android_compose_adaptivelayouts_sample_supporting_pane_scaffold_full] + val navigator = rememberSupportingPaneScaffoldNavigator() + + BackHandler(navigator.canNavigateBack()) { + navigator.navigateBack() + } + + SupportingPaneScaffold( + directive = navigator.scaffoldDirective, + value = navigator.scaffoldValue, + mainPane = { + AnimatedPane(modifier = Modifier.safeContentPadding()) { + // Main pane content + if (navigator.scaffoldValue[SupportingPaneScaffoldRole.Supporting] == PaneAdaptedValue.Hidden) { + Button( + modifier = Modifier.wrapContentSize(), + onClick = { + navigator.navigateTo(SupportingPaneScaffoldRole.Supporting) + } + ) { + Text("Show supporting pane") + } + } else { + Text("Supporting pane is shown") + } + } + }, + supportingPane = { + AnimatedPane(modifier = Modifier.safeContentPadding()) { + // Supporting pane content + Text("Supporting pane") + } + }, + ) + // [END android_compose_adaptivelayouts_sample_supporting_pane_scaffold_full] +} + +// [START android_compose_adaptivelayouts_sample_supporting_pane_scaffold_extracted_panes] +@Composable +fun ThreePaneScaffoldScope.MainPane( + shouldShowSupportingPaneButton: Boolean, + onNavigateToSupportingPane: () -> Unit, + modifier: Modifier = Modifier, +) { + AnimatedPane(modifier = modifier.safeContentPadding()) { + // Main pane content + if (shouldShowSupportingPaneButton) { + Button(onClick = onNavigateToSupportingPane) { + Text("Show supporting pane") + } + } else { + Text("Supporting pane is shown") + } + } +} + +@Composable +fun ThreePaneScaffoldScope.SupportingPane( + modifier: Modifier = Modifier, +) { + AnimatedPane(modifier = modifier.safeContentPadding()) { + // Supporting pane content + Text("This is the supporting pane") + } +} +// [END android_compose_adaptivelayouts_sample_supporting_pane_scaffold_extracted_panes] + +@Composable +fun SampleSupportingPaneScaffoldSimplified() { +// [START android_compose_adaptivelayouts_sample_supporting_pane_scaffold_simplified] + val navigator = rememberSupportingPaneScaffoldNavigator() + + BackHandler(navigator.canNavigateBack()) { + navigator.navigateBack() + } + + SupportingPaneScaffold( + directive = navigator.scaffoldDirective, + value = navigator.scaffoldValue, + mainPane = { + MainPane( + shouldShowSupportingPaneButton = navigator.scaffoldValue.secondary == PaneAdaptedValue.Hidden, + onNavigateToSupportingPane = { navigator.navigateTo(ThreePaneScaffoldRole.Secondary) } + ) + }, + supportingPane = { SupportingPane() }, + ) +// [END android_compose_adaptivelayouts_sample_supporting_pane_scaffold_simplified] +} From 30f5ef7366ed59a7484f3fda6c76efcc3bcd6a1f Mon Sep 17 00:00:00 2001 From: Alex Vanyo Date: Mon, 6 May 2024 15:51:35 -0700 Subject: [PATCH 188/463] Migrate to material3-adaptive WindowSizeClass method (#264) * Migrate to material3-adaptive WindowSizeClass method * Update comments to be single line --- compose/snippets/build.gradle.kts | 3 +- .../compose/snippets/glance/GlanceSnippets.kt | 8 ++-- .../layouts/AdaptiveLayoutSnippets.kt | 42 ++++++++----------- .../snippets/state/StateOverviewSnippets.kt | 2 +- gradle/libs.versions.toml | 3 +- 5 files changed, 27 insertions(+), 31 deletions(-) diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index 17b3ea12f..3930f5611 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -101,7 +101,6 @@ dependencies { implementation(libs.androidx.compose.runtime) implementation(libs.androidx.compose.runtime.livedata) - implementation(libs.androidx.compose.materialWindow) implementation(libs.androidx.compose.material.iconsExtended) implementation(libs.androidx.compose.material.ripple) implementation(libs.androidx.constraintlayout.compose) @@ -117,6 +116,8 @@ dependencies { implementation(libs.androidx.glance.appwidget) implementation(libs.androidx.glance.material3) + implementation(libs.androidx.window.core) + implementation(libs.accompanist.theme.adapter.appcompat) implementation(libs.accompanist.theme.adapter.material3) implementation(libs.accompanist.theme.adapter.material) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt index 2566a514c..aaea6a62b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt @@ -85,8 +85,8 @@ import androidx.glance.material3.ColorProviders import androidx.glance.text.Text import androidx.work.CoroutineWorker import androidx.work.WorkerParameters +import com.example.compose.snippets.MyActivity import com.example.compose.snippets.R -import com.example.compose.snippets.layouts.MainActivity import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch @@ -167,11 +167,11 @@ private object CreateUI { Row(horizontalAlignment = Alignment.CenterHorizontally) { Button( text = "Home", - onClick = actionStartActivity() + onClick = actionStartActivity() ) Button( text = "Work", - onClick = actionStartActivity() + onClick = actionStartActivity() ) } } @@ -188,7 +188,7 @@ private object ActionLaunchActivity { // .. Button( text = "Go Home", - onClick = actionStartActivity() + onClick = actionStartActivity() ) } // [END android_compose_glance_launchactivity] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AdaptiveLayoutSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AdaptiveLayoutSnippets.kt index 0db5be6b0..c66253cd6 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AdaptiveLayoutSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AdaptiveLayoutSnippets.kt @@ -18,22 +18,19 @@ package com.example.compose.snippets.layouts -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row -import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi -import androidx.compose.material3.windowsizeclass.WindowHeightSizeClass -import androidx.compose.material3.windowsizeclass.WindowSizeClass -import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass +import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi +import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.unit.dp +import androidx.window.core.layout.WindowHeightSizeClass +import androidx.window.core.layout.WindowSizeClass /* * Copyright 2023 The Android Open Source Project @@ -51,25 +48,15 @@ import androidx.compose.ui.unit.dp * limitations under the License. */ // [START android_compose_adaptive_layouts_basic] -class MainActivity : ComponentActivity() { - @OptIn(ExperimentalMaterial3WindowSizeClassApi::class) - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - setContent { - val windowSizeClass = calculateWindowSizeClass(this) - MyApp(windowSizeClass) - } - } -} +@OptIn(ExperimentalMaterial3AdaptiveApi::class) @Composable -fun MyApp(windowSizeClass: WindowSizeClass) { - // Perform logic on the size class to decide whether to show - // the top app bar. - val showTopAppBar = windowSizeClass.heightSizeClass != WindowHeightSizeClass.Compact +fun MyApp( + windowSizeClass: WindowSizeClass = currentWindowAdaptiveInfo().windowSizeClass +) { + // Perform logic on the size class to decide whether to show the top app bar. + val showTopAppBar = windowSizeClass.windowHeightSizeClass != WindowHeightSizeClass.COMPACT - // MyScreen knows nothing about window sizes, and performs logic - // based on a Boolean flag. + // MyScreen knows nothing about window sizes, and performs logic based on a Boolean flag. MyScreen( showTopAppBar = showTopAppBar, /* ... */ @@ -95,6 +82,13 @@ fun AdaptivePane( } // [END android_compose_layouts_adaptive_pane] +@Composable +private fun WindowSizeClassSnippet() { + // [START android_compose_windowsizeclass] + val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass + // [END android_compose_windowsizeclass] +} + @Composable fun OnePane() { // your content here diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/state/StateOverviewSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/state/StateOverviewSnippets.kt index 2ac1e62f5..503732ade 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/state/StateOverviewSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/state/StateOverviewSnippets.kt @@ -27,7 +27,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text -import androidx.compose.material3.windowsizeclass.WindowSizeClass import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable import androidx.compose.runtime.getValue @@ -46,6 +45,7 @@ import androidx.compose.ui.res.imageResource import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.unit.dp +import androidx.window.core.layout.WindowSizeClass // [START android_compose_state_overview] @Composable diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2078c2124..62a11563d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -18,6 +18,7 @@ androidx-navigation = "2.7.7" androidx-paging = "3.2.1" androidx-test = "1.5.0" androidx-test-espresso = "3.5.1" +androidx-window = "1.3.0-beta02" androidxHiltNavigationCompose = "1.2.0" coil = "2.5.0" # @keep @@ -63,7 +64,6 @@ androidx-compose-material3-adaptive = { module = "androidx.compose.material3.ada androidx-compose-material3-adaptive-layout = { module = "androidx.compose.material3.adaptive:adaptive-layout", version.ref = "material3-adaptive" } androidx-compose-material3-adaptive-navigation = { module = "androidx.compose.material3.adaptive:adaptive-navigation", version.ref = "material3-adaptive" } androidx-compose-material3-adaptive-navigation-suite = { module = "androidx.compose.material3:material3-adaptive-navigation-suite", version.ref = "material3-adaptive-navigation-suite" } -androidx-compose-materialWindow = { module = "androidx.compose.material3:material3-window-size-class" } androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" } androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" } androidx-compose-ui = { module = "androidx.compose.ui:ui" } @@ -98,6 +98,7 @@ androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version androidx-test-core = { module = "androidx.test:core", version.ref = "androidx-test" } androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-test-espresso" } androidx-test-runner = "androidx.test:runner:1.5.2" +androidx-window-core = { module = "androidx.window:window-core", version.ref = "androidx-window" } androidx-work-runtime-ktx = "androidx.work:work-runtime-ktx:2.9.0" coil-kt-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } google-android-material = { module = "com.google.android.material:material", version.ref = "material" } From 0ce6be1907362ffb63ec509af25fb98d8af4123a Mon Sep 17 00:00:00 2001 From: MagicalMeghan <46006059+MagicalMeghan@users.noreply.github.com> Date: Wed, 8 May 2024 17:15:34 -0400 Subject: [PATCH 189/463] Update PiP snippets with new aspect ratio best practice (#257) * Update PictureInPictureSnippets.kt * Update PictureInPictureSnippets.kt * Apply Spotless * Update PictureInPictureSnippets.kt * Update PictureInPictureSnippets.kt * Update PictureInPictureSnippets.kt --------- Co-authored-by: MagicalMeghan --- .../pictureinpicture/PictureInPictureSnippets.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt index 953c57238..39cf2d229 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt @@ -47,6 +47,7 @@ import androidx.core.content.ContextCompat import androidx.core.graphics.toRect import androidx.core.util.Consumer import androidx.media3.common.Player +import androidx.media3.common.VideoSize import androidx.media3.exoplayer.ExoPlayer var shouldEnterPipMode by mutableStateOf(false) @@ -237,6 +238,7 @@ fun PiPBuilderSetSourceRect( @Composable fun PiPBuilderSetAspectRatio( + player: Player?, shouldEnterPipMode: Boolean, modifier: Modifier = Modifier, ) { @@ -246,12 +248,11 @@ fun PiPBuilderSetAspectRatio( val pipModifier = modifier.onGloballyPositioned { layoutCoordinates -> val builder = PictureInPictureParams.Builder() - - if (shouldEnterPipMode) { + if (shouldEnterPipMode && player != null && player.videoSize != VideoSize.UNKNOWN) { val sourceRect = layoutCoordinates.boundsInWindow().toAndroidRectF().toRect() builder.setSourceRectHint(sourceRect) builder.setAspectRatio( - Rational(sourceRect.width(), sourceRect.height()) + Rational(player.videoSize.width, player.videoSize.height) ) } @@ -312,6 +313,7 @@ fun listOfRemoteActions(): List { @Composable fun PiPBuilderAddRemoteActions( + player: Player?, shouldEnterPipMode: Boolean, modifier: Modifier = Modifier, ) { @@ -325,11 +327,11 @@ fun PiPBuilderAddRemoteActions( listOfRemoteActions() ) - if (shouldEnterPipMode) { + if (shouldEnterPipMode && player != null && player.videoSize != VideoSize.UNKNOWN) { val sourceRect = layoutCoordinates.boundsInWindow().toAndroidRectF().toRect() builder.setSourceRectHint(sourceRect) builder.setAspectRatio( - Rational(sourceRect.width(), sourceRect.height()) + Rational(player.videoSize.width, player.videoSize.height) ) } From 6a553a62a41ed3cbe5d6e61691b0c028a1bf9369 Mon Sep 17 00:00:00 2001 From: Rob Orgiu Date: Thu, 9 May 2024 10:39:45 +0200 Subject: [PATCH 190/463] Add snippets for Drag & Drop --- .../draganddrop/DragAndDropSnippets.kt | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/draganddrop/DragAndDropSnippets.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/draganddrop/DragAndDropSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/draganddrop/DragAndDropSnippets.kt new file mode 100644 index 000000000..6c7e7792b --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/draganddrop/DragAndDropSnippets.kt @@ -0,0 +1,95 @@ +package com.example.compose.snippets.draganddrop + +import android.content.ClipData +import android.content.ClipDescription +import android.os.Build +import android.view.View +import androidx.annotation.RequiresApi +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.draganddrop.dragAndDropSource +import androidx.compose.foundation.draganddrop.dragAndDropTarget +import androidx.compose.foundation.gestures.detectTapGestures +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.draganddrop.DragAndDropEvent +import androidx.compose.ui.draganddrop.DragAndDropTarget +import androidx.compose.ui.draganddrop.DragAndDropTransferData +import androidx.compose.ui.draganddrop.mimeTypes + +@RequiresApi(Build.VERSION_CODES.N) +@OptIn(ExperimentalFoundationApi::class) +@Composable +fun DragAndDropSnippet() { + + val url = "" + + // [START android_compose_drag_and_drop_1] + Modifier.dragAndDropSource { + detectTapGestures(onLongPress = { + startTransfer( + DragAndDropTransferData( + ClipData.newPlainText( + "image Url", url + ) + ) + ) + }) + } + // [END android_compose_drag_and_drop_1] + + // [START android_compose_drag_and_drop_2] + Modifier.dragAndDropSource { + detectTapGestures(onLongPress = { + startTransfer( + DragAndDropTransferData( + ClipData.newPlainText( + "image Url", url + ), flags = View.DRAG_FLAG_GLOBAL + ) + ) + }) + } + // [END android_compose_drag_and_drop_2] + + // [START android_compose_drag_and_drop_3] + val callback = remember { + object : DragAndDropTarget { + override fun onDrop(event: DragAndDropEvent): Boolean { + // Parse received data + return true + } + } + } + // [END android_compose_drag_and_drop_3] + + // [START android_compose_drag_and_drop_4] + Modifier.dragAndDropTarget( + shouldStartDragAndDrop = { event -> + event.mimeTypes().contains(ClipDescription.MIMETYPE_TEXT_PLAIN) + }, target = callback + ) + // [END android_compose_drag_and_drop_4] + + // [START android_compose_drag_and_drop_5] + object : DragAndDropTarget { + override fun onStarted(event: DragAndDropEvent) { + //When the drag event starts + } + + override fun onEntered(event: DragAndDropEvent) { + //When the dragged object enters the target surface + } + + override fun onEnded(event: DragAndDropEvent) { + //When the drag event stops + } + + override fun onExited(event: DragAndDropEvent) { + //When the dragged object exits the target surface + } + + override fun onDrop(event: DragAndDropEvent): Boolean = true + } + // [END android_compose_drag_and_drop_5] +} \ No newline at end of file From bd223e389437e994e9edbf0d79f57c3cff0acb55 Mon Sep 17 00:00:00 2001 From: tiwiz Date: Thu, 9 May 2024 08:42:17 +0000 Subject: [PATCH 191/463] Apply Spotless --- .../draganddrop/DragAndDropSnippets.kt | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/draganddrop/DragAndDropSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/draganddrop/DragAndDropSnippets.kt index 6c7e7792b..4291b8b01 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/draganddrop/DragAndDropSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/draganddrop/DragAndDropSnippets.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.example.compose.snippets.draganddrop import android.content.ClipData @@ -45,7 +61,8 @@ fun DragAndDropSnippet() { DragAndDropTransferData( ClipData.newPlainText( "image Url", url - ), flags = View.DRAG_FLAG_GLOBAL + ), + flags = View.DRAG_FLAG_GLOBAL ) ) }) @@ -74,22 +91,22 @@ fun DragAndDropSnippet() { // [START android_compose_drag_and_drop_5] object : DragAndDropTarget { override fun onStarted(event: DragAndDropEvent) { - //When the drag event starts + // When the drag event starts } override fun onEntered(event: DragAndDropEvent) { - //When the dragged object enters the target surface + // When the dragged object enters the target surface } override fun onEnded(event: DragAndDropEvent) { - //When the drag event stops + // When the drag event stops } override fun onExited(event: DragAndDropEvent) { - //When the dragged object exits the target surface + // When the dragged object exits the target surface } override fun onDrop(event: DragAndDropEvent): Boolean = true } // [END android_compose_drag_and_drop_5] -} \ No newline at end of file +} From 1a34e2910dc27008518e7921a41a4c74d581bd13 Mon Sep 17 00:00:00 2001 From: Rob Orgiu Date: Thu, 9 May 2024 14:57:29 +0200 Subject: [PATCH 192/463] Add snippet that was previously forgotten --- .../draganddrop/DragAndDropSnippets.kt | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/draganddrop/DragAndDropSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/draganddrop/DragAndDropSnippets.kt index 4291b8b01..7d1a48260 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/draganddrop/DragAndDropSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/draganddrop/DragAndDropSnippets.kt @@ -41,6 +41,14 @@ fun DragAndDropSnippet() { val url = "" // [START android_compose_drag_and_drop_1] + Modifier.dragAndDropSource { + detectTapGestures(onLongPress = { + // Transfer data here. + }) + } + // [END android_compose_drag_and_drop_1] + + // [START android_compose_drag_and_drop_2] Modifier.dragAndDropSource { detectTapGestures(onLongPress = { startTransfer( @@ -52,9 +60,9 @@ fun DragAndDropSnippet() { ) }) } - // [END android_compose_drag_and_drop_1] + // [END android_compose_drag_and_drop_2] - // [START android_compose_drag_and_drop_2] + // [START android_compose_drag_and_drop_3] Modifier.dragAndDropSource { detectTapGestures(onLongPress = { startTransfer( @@ -67,9 +75,9 @@ fun DragAndDropSnippet() { ) }) } - // [END android_compose_drag_and_drop_2] + // [END android_compose_drag_and_drop_3] - // [START android_compose_drag_and_drop_3] + // [START android_compose_drag_and_drop_4] val callback = remember { object : DragAndDropTarget { override fun onDrop(event: DragAndDropEvent): Boolean { @@ -78,17 +86,17 @@ fun DragAndDropSnippet() { } } } - // [END android_compose_drag_and_drop_3] + // [END android_compose_drag_and_drop_4] - // [START android_compose_drag_and_drop_4] + // [START android_compose_drag_and_drop_5] Modifier.dragAndDropTarget( shouldStartDragAndDrop = { event -> event.mimeTypes().contains(ClipDescription.MIMETYPE_TEXT_PLAIN) }, target = callback ) - // [END android_compose_drag_and_drop_4] + // [END android_compose_drag_and_drop_5] - // [START android_compose_drag_and_drop_5] + // [START android_compose_drag_and_drop_6] object : DragAndDropTarget { override fun onStarted(event: DragAndDropEvent) { // When the drag event starts @@ -108,5 +116,5 @@ fun DragAndDropSnippet() { override fun onDrop(event: DragAndDropEvent): Boolean = true } - // [END android_compose_drag_and_drop_5] + // [END android_compose_drag_and_drop_6] } From fc536b7c76b9fa1998ce4d797a4525c5a29964af Mon Sep 17 00:00:00 2001 From: Rob Orgiu Date: Thu, 9 May 2024 14:57:29 +0200 Subject: [PATCH 193/463] Make the composable private --- .../example/compose/snippets/draganddrop/DragAndDropSnippets.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/draganddrop/DragAndDropSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/draganddrop/DragAndDropSnippets.kt index 7d1a48260..46e245a3f 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/draganddrop/DragAndDropSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/draganddrop/DragAndDropSnippets.kt @@ -36,7 +36,7 @@ import androidx.compose.ui.draganddrop.mimeTypes @RequiresApi(Build.VERSION_CODES.N) @OptIn(ExperimentalFoundationApi::class) @Composable -fun DragAndDropSnippet() { +private fun DragAndDropSnippet() { val url = "" From 7dca9cfe9f4ebc7f1f972ec89c076ab99cb26941 Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Fri, 10 May 2024 14:59:29 +0100 Subject: [PATCH 194/463] Additonal Compose components (#269) * first commit - checkbox * Apply Spotless * Fixing region tags * updating parent example * Apply Spotless --------- Co-authored-by: jakeroseman --- .../compose/snippets/SnippetsActivity.kt | 2 + .../compose/snippets/components/Checkbox.kt | 137 ++++++++++++++++++ .../snippets/navigation/Destination.kt | 1 + 3 files changed, 140 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/Checkbox.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 31037647b..37dab73fc 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -30,6 +30,7 @@ import androidx.navigation.compose.rememberNavController import com.example.compose.snippets.animations.AnimationExamplesScreen import com.example.compose.snippets.components.AppBarExamples import com.example.compose.snippets.components.ButtonExamples +import com.example.compose.snippets.components.CheckboxExamples import com.example.compose.snippets.components.ChipExamples import com.example.compose.snippets.components.ComponentsScreen import com.example.compose.snippets.components.DialogExamples @@ -93,6 +94,7 @@ class SnippetsActivity : ComponentActivity() { TopComponentsDestination.ProgressIndicatorExamples -> ProgressIndicatorExamples() TopComponentsDestination.ScaffoldExample -> ScaffoldExample() TopComponentsDestination.AppBarExamples -> AppBarExamples() + TopComponentsDestination.CheckboxExamples -> CheckboxExamples() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Checkbox.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Checkbox.kt new file mode 100644 index 000000000..a203914c3 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Checkbox.kt @@ -0,0 +1,137 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Checkbox +import androidx.compose.material3.Text +import androidx.compose.material3.TriStateCheckbox +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateListOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.state.ToggleableState +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Preview +@Composable +fun CheckboxExamples() { + Column( + modifier = Modifier + .padding(16.dp) + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(32.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Column { + Text("Minimal checkbox example") + CheckboxMinimalExample() + } + Column { + Text("Parent checkbox example") + CheckboxParentExample() + } + } +} + +@Preview +// [START android_compose_components_checkbox_minimal] +@Composable +fun CheckboxMinimalExample() { + var checked by remember { mutableStateOf(true) } + + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + "Minimal checkbox" + ) + Checkbox( + checked = checked, + onCheckedChange = { checked = it } + ) + } + + Text( + if (checked) "Checkbox is checked" else "Checkbox is unchecked" + ) +} +// [END android_compose_components_checkbox_minimal] + +@Preview +// [START android_compose_components_checkbox_parent] +@Composable +fun CheckboxParentExample() { + // Initialize states for the child checkboxes + val childCheckedStates = remember { mutableStateListOf(false, false, false) } + + // Compute the parent state based on children's states + val parentState = when { + childCheckedStates.all { it } -> ToggleableState.On + childCheckedStates.none { it } -> ToggleableState.Off + else -> ToggleableState.Indeterminate + } + + Column { + // Parent TriStateCheckbox + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Text("Select all") + TriStateCheckbox( + state = parentState, + onClick = { + // Determine new state based on current state + val newState = parentState != ToggleableState.On + childCheckedStates.forEachIndexed { index, _ -> + childCheckedStates[index] = newState + } + } + ) + } + + // Child Checkboxes + childCheckedStates.forEachIndexed { index, checked -> + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Text("Option ${index + 1}") + Checkbox( + checked = checked, + onCheckedChange = { isChecked -> + // Update the individual child state + childCheckedStates[index] = isChecked + } + ) + } + } + } + + if (childCheckedStates.all { it }) { + Text("All options selected") + } +} +// [END android_compose_components_checkbox_parent] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index 60c07901c..b7ab7c08e 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -37,4 +37,5 @@ enum class TopComponentsDestination(val route: String, val title: String) { ProgressIndicatorExamples("progressIndicatorExamples", "Progress Indicators"), ScaffoldExample("scaffoldExample", "Scaffold"), AppBarExamples("appBarExamples", "App bars"), + CheckboxExamples("checkboxExamples", "Checkbox"), } From da1a92982f12e7eb1e9f5574b2dc304f8d0cf9c2 Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Thu, 16 May 2024 15:33:18 +0100 Subject: [PATCH 195/463] Add navigation example to app bars examples (#271) * First commit for app bars navigation example * Apply Spotless * Implementing a top app bar whose navigation icon actually pops from the back stack when clicked * Implementing a top app bar whose navigation icon actually pops from the back stack when clicked * Removing unnecessary code --------- Co-authored-by: jakeroseman --- .../compose/snippets/SnippetsActivity.kt | 8 +-- .../compose/snippets/components/AppBar.kt | 52 ++++++++++++++++--- .../snippets/components/ComponentsScreen.kt | 6 ++- 3 files changed, 55 insertions(+), 11 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 37dab73fc..c3595ac68 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -65,7 +65,7 @@ class SnippetsActivity : ComponentActivity() { composable("LandingScreen") { LandingScreen { navController.navigate(it.route) } } - Destination.values().forEach { destination -> + Destination.entries.forEach { destination -> composable(destination.route) { when (destination) { Destination.BrushExamples -> BrushExamplesScreen() @@ -81,7 +81,7 @@ class SnippetsActivity : ComponentActivity() { } } } - TopComponentsDestination.values().forEach { destination -> + TopComponentsDestination.entries.forEach { destination -> composable(destination.route) { when (destination) { TopComponentsDestination.CardExamples -> CardExamples() @@ -93,7 +93,9 @@ class SnippetsActivity : ComponentActivity() { TopComponentsDestination.ButtonExamples -> ButtonExamples() TopComponentsDestination.ProgressIndicatorExamples -> ProgressIndicatorExamples() TopComponentsDestination.ScaffoldExample -> ScaffoldExample() - TopComponentsDestination.AppBarExamples -> AppBarExamples() + TopComponentsDestination.AppBarExamples -> AppBarExamples { + navController.popBackStack() + } TopComponentsDestination.CheckboxExamples -> CheckboxExamples() } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt index 25e7a005e..3df1e91f8 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt @@ -23,8 +23,8 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.ArrowBack import androidx.compose.material.icons.filled.Check import androidx.compose.material.icons.filled.Edit import androidx.compose.material.icons.filled.Image @@ -59,9 +59,10 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -@Preview @Composable -fun AppBarExamples() { +fun AppBarExamples( + navigateBack: () -> Unit +) { var selection by remember { mutableStateOf("none") } Surface( @@ -74,12 +75,14 @@ fun AppBarExamples() { "topBarCenter" -> CenterAlignedTopAppBarExample() "topBarMedium" -> MediumTopAppBarExample() "topBarLarge" -> LargeTopAppBarExample() + "topBarNavigation" -> TopBarNavigationExample { navigateBack() } else -> AppBarOptions( toBottom = { selection = "bottomBar" }, toTopBarSmall = { selection = "topBar" }, toTopBarCenter = { selection = "topBarCenter" }, toTopBarMedium = { selection = "topBarMedium" }, toTopBarLarge = { selection = "topBarLarge" }, + toTopBarNavigation = { selection = "topBarNavigation" }, ) } } @@ -92,6 +95,7 @@ fun AppBarOptions( toTopBarCenter: () -> Unit, toTopBarMedium: () -> Unit, toTopBarLarge: () -> Unit, + toTopBarNavigation: () -> Unit, ) { Column() { Button({ toBottom() }) { @@ -109,6 +113,9 @@ fun AppBarOptions( Button({ toTopBarLarge() }) { Text("Large top bar") } + Button({ toTopBarNavigation() }) { + Text("Top bar navigation example") + } } } @@ -211,7 +218,7 @@ fun CenterAlignedTopAppBarExample() { navigationIcon = { IconButton(onClick = { /* do something */ }) { Icon( - imageVector = Icons.Filled.ArrowBack, + imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Localized description" ) } @@ -258,7 +265,7 @@ fun MediumTopAppBarExample() { navigationIcon = { IconButton(onClick = { /* do something */ }) { Icon( - imageVector = Icons.Filled.ArrowBack, + imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Localized description" ) } @@ -305,7 +312,7 @@ fun LargeTopAppBarExample() { navigationIcon = { IconButton(onClick = { /* do something */ }) { Icon( - imageVector = Icons.Filled.ArrowBack, + imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Localized description" ) } @@ -327,6 +334,39 @@ fun LargeTopAppBarExample() { } // [END android_compose_components_largetopappbar] +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_navigation] +@Composable +fun TopBarNavigationExample( + navigateBack: () -> Unit, +) { + Scaffold( + topBar = { + CenterAlignedTopAppBar( + title = { + Text( + "Navigation example", + ) + }, + navigationIcon = { + IconButton(onClick = navigateBack) { + Icon( + imageVector = Icons.AutoMirrored.Filled.ArrowBack, + contentDescription = "Localized description" + ) + } + }, + ) + }, + ) { innerPadding -> + Text( + "Click the back button to pop from the back stack.", + modifier = Modifier.padding(innerPadding), + ) + } +} +// [END android_compose_components_navigation] + @Composable fun ScrollContent(innerPadding: PaddingValues) { val range = 1..100 diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/ComponentsScreen.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/ComponentsScreen.kt index 90d7a4962..ce1bbae40 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/ComponentsScreen.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/ComponentsScreen.kt @@ -30,7 +30,9 @@ import androidx.compose.ui.unit.dp import com.example.compose.snippets.navigation.TopComponentsDestination @Composable -fun ComponentsScreen(navigate: (TopComponentsDestination) -> Unit) { +fun ComponentsScreen( + navigate: (TopComponentsDestination) -> Unit +) { LazyColumn( modifier = Modifier .padding(16.dp) @@ -38,7 +40,7 @@ fun ComponentsScreen(navigate: (TopComponentsDestination) -> Unit) { verticalArrangement = Arrangement.spacedBy(8.dp), horizontalAlignment = Alignment.CenterHorizontally, ) { - items(TopComponentsDestination.values().toList()) { destination -> + items(TopComponentsDestination.entries) { destination -> NavigationItem(destination) { navigate( destination From ff89f155aca0cc71580b40ff353528bea7f304c8 Mon Sep 17 00:00:00 2001 From: Simona <35065668+simona-anomis@users.noreply.github.com> Date: Tue, 21 May 2024 16:44:37 +0100 Subject: [PATCH 196/463] Add nested scroll snippets (#274) * Add nested scroll snippets * Apply Spotless --------- Co-authored-by: simona-anomis --- .../touchinput/gestures/GesturesSnippets.kt | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/gestures/GesturesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/gestures/GesturesSnippets.kt index d480d1b8f..dcddc073c 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/gestures/GesturesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/gestures/GesturesSnippets.kt @@ -62,6 +62,8 @@ import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.input.nestedscroll.NestedScrollConnection +import androidx.compose.ui.input.nestedscroll.NestedScrollSource import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.platform.ComposeView @@ -351,3 +353,43 @@ private fun TransformableSample() { ) } // [END android_compose_touchinput_gestures_transformable] + +@Composable +fun NestedScrollSample() { + + // [START android_compose_touchinput_gestures_nestedscrollconnection] + val nestedScrollConnection = object : NestedScrollConnection { + override fun onPreScroll(available: Offset, source: NestedScrollSource): Offset { + println("Received onPreScroll callback.") + return Offset.Zero + } + + override fun onPostScroll( + consumed: Offset, + available: Offset, + source: NestedScrollSource + ): Offset { + println("Received onPostScroll callback.") + return Offset.Zero + } + } + // [END android_compose_touchinput_gestures_nestedscrollconnection] + + // [START android_compose_touchinput_gestures_nestedscrolldisabled] + val disabledNestedScrollConnection = remember { + object : NestedScrollConnection { + override fun onPostScroll( + consumed: Offset, + available: Offset, + source: NestedScrollSource + ): Offset { + return if (source == NestedScrollSource.SideEffect) { + available + } else { + Offset.Zero + } + } + } + } + // [END android_compose_touchinput_gestures_nestedscrolldisabled] +} From e34c891bd17cad1e64ed71e8e4e01e3bacb1f555 Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Fri, 24 May 2024 13:41:05 +0100 Subject: [PATCH 197/463] Adding simple divider examples (#275) * Adding simple divider examples * Adding region tags * Apply Spotless --------- Co-authored-by: jakeroseman --- .../compose/snippets/SnippetsActivity.kt | 2 + .../compose/snippets/components/Divider.kt | 84 +++++++++++++++++++ .../snippets/navigation/Destination.kt | 1 + 3 files changed, 87 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/Divider.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index c3595ac68..ed28be7fe 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -34,6 +34,7 @@ import com.example.compose.snippets.components.CheckboxExamples import com.example.compose.snippets.components.ChipExamples import com.example.compose.snippets.components.ComponentsScreen import com.example.compose.snippets.components.DialogExamples +import com.example.compose.snippets.components.DividerExamples import com.example.compose.snippets.components.FloatingActionButtonExamples import com.example.compose.snippets.components.ProgressIndicatorExamples import com.example.compose.snippets.components.ScaffoldExample @@ -97,6 +98,7 @@ class SnippetsActivity : ComponentActivity() { navController.popBackStack() } TopComponentsDestination.CheckboxExamples -> CheckboxExamples() + TopComponentsDestination.DividerExamples -> DividerExamples() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Divider.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Divider.kt new file mode 100644 index 000000000..e9add3f46 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Divider.kt @@ -0,0 +1,84 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.IntrinsicSize +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.VerticalDivider +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Preview +@Composable +fun DividerExamples() { + Column( + modifier = Modifier + .padding(16.dp) + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(24.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text("Column with divider", fontWeight = FontWeight.Bold) + HorizontalDividerExample() + Text("Row with divider", fontWeight = FontWeight.Bold) + VerticalDividerExample() + } +} + +@Preview +// [START android_compose_components_horizontaldivider] +@Composable +fun HorizontalDividerExample() { + Column( + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + Text("First item in list") + HorizontalDivider(thickness = 2.dp) + Text("Second item in list") + } +} +// [END android_compose_components_horizontaldivider] + +@Preview +// [START android_compose_components_verticaldivider] +@Composable +fun VerticalDividerExample() { + Row( + modifier = Modifier + .fillMaxWidth() + .height(IntrinsicSize.Min), + horizontalArrangement = Arrangement.SpaceEvenly + ) { + Text("First item in row") + VerticalDivider(color = MaterialTheme.colorScheme.secondary) + Text("Second item in row") + } +} +// [END android_compose_components_verticaldivider] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index b7ab7c08e..a920ad6ba 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -38,4 +38,5 @@ enum class TopComponentsDestination(val route: String, val title: String) { ScaffoldExample("scaffoldExample", "Scaffold"), AppBarExamples("appBarExamples", "App bars"), CheckboxExamples("checkboxExamples", "Checkbox"), + DividerExamples("dividerExamples", "Dividers"), } From b883fb9bca33ef91cbd8f6a5d69d4cfba80f8d4e Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Tue, 28 May 2024 10:35:25 +0100 Subject: [PATCH 198/463] Adding badge examples (#277) * Adding badge examples * Apply Spotless * Tweaks * Moving conditional so there's always a BadgedBox * Apply Spotless --------- Co-authored-by: jakeroseman --- .../compose/snippets/SnippetsActivity.kt | 2 + .../compose/snippets/components/Badges.kt | 108 ++++++++++++++++++ .../snippets/navigation/Destination.kt | 1 + 3 files changed, 111 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/Badges.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index ed28be7fe..ba27fb525 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -29,6 +29,7 @@ import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import com.example.compose.snippets.animations.AnimationExamplesScreen import com.example.compose.snippets.components.AppBarExamples +import com.example.compose.snippets.components.BadgeExamples import com.example.compose.snippets.components.ButtonExamples import com.example.compose.snippets.components.CheckboxExamples import com.example.compose.snippets.components.ChipExamples @@ -99,6 +100,7 @@ class SnippetsActivity : ComponentActivity() { } TopComponentsDestination.CheckboxExamples -> CheckboxExamples() TopComponentsDestination.DividerExamples -> DividerExamples() + TopComponentsDestination.BadgeExamples -> BadgeExamples() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Badges.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Badges.kt new file mode 100644 index 000000000..f2f83b01c --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Badges.kt @@ -0,0 +1,108 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Mail +import androidx.compose.material.icons.filled.ShoppingCart +import androidx.compose.material3.Badge +import androidx.compose.material3.BadgedBox +import androidx.compose.material3.Button +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Preview +@Composable +fun BadgeExamples() { + Column( + modifier = Modifier + .padding(16.dp) + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(32.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text("Minimal badge example", fontWeight = FontWeight.Bold) + BadgeExample() + Text("Badge number example", fontWeight = FontWeight.Bold) + BadgeInteractiveExample() + } +} + +@Preview +// [START android_compose_components_badge] +@Composable +fun BadgeExample() { + BadgedBox( + badge = { + Badge() + } + ) { + Icon( + imageVector = Icons.Filled.Mail, + contentDescription = "Email" + ) + } +} +// [END android_compose_components_badge] + +@Preview +// [START android_compose_components_badgeinteractive] +@Composable +fun BadgeInteractiveExample() { + var itemCount by remember { mutableStateOf(0) } + + Column( + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + BadgedBox( + badge = { + if (itemCount > 0) { + Badge( + containerColor = Color.Red, + contentColor = Color.White + ) { + Text("$itemCount") + } + } + } + ) { + Icon( + imageVector = Icons.Filled.ShoppingCart, + contentDescription = "Shopping cart", + ) + } + Button(onClick = { itemCount++ }) { + Text("Add item") + } + } +} +// [END android_compose_components_badgeinteractive] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index a920ad6ba..820109b41 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -39,4 +39,5 @@ enum class TopComponentsDestination(val route: String, val title: String) { AppBarExamples("appBarExamples", "App bars"), CheckboxExamples("checkboxExamples", "Checkbox"), DividerExamples("dividerExamples", "Dividers"), + BadgeExamples("badgeExamples", "Badges"), } From 07b51c299a4a7c443060fa924b284b31de48307a Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Fri, 7 Jun 2024 08:59:44 +0100 Subject: [PATCH 199/463] Partial bottom sheet example (#279) * Example of a bottom sheet that only partially displays * Minor tweaks, adding regions tags * Apply Spotless * Adding padding --------- Co-authored-by: jakeroseman --- .../compose/snippets/SnippetsActivity.kt | 2 + .../snippets/components/BottomSheet.kt | 72 +++++++++++++++++++ .../snippets/navigation/Destination.kt | 1 + 3 files changed, 75 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/BottomSheet.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index ba27fb525..02f3fbe25 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -37,6 +37,7 @@ import com.example.compose.snippets.components.ComponentsScreen import com.example.compose.snippets.components.DialogExamples import com.example.compose.snippets.components.DividerExamples import com.example.compose.snippets.components.FloatingActionButtonExamples +import com.example.compose.snippets.components.PartialBottomSheet import com.example.compose.snippets.components.ProgressIndicatorExamples import com.example.compose.snippets.components.ScaffoldExample import com.example.compose.snippets.components.SliderExamples @@ -101,6 +102,7 @@ class SnippetsActivity : ComponentActivity() { TopComponentsDestination.CheckboxExamples -> CheckboxExamples() TopComponentsDestination.DividerExamples -> DividerExamples() TopComponentsDestination.BadgeExamples -> BadgeExamples() + TopComponentsDestination.PartialBottomSheet -> PartialBottomSheet() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/BottomSheet.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/BottomSheet.kt new file mode 100644 index 000000000..c7e374312 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/BottomSheet.kt @@ -0,0 +1,72 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.Text +import androidx.compose.material3.rememberModalBottomSheetState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@OptIn(ExperimentalMaterial3Api::class) +@Preview +// [START android_compose_components_partialbottomsheet] +@Composable +fun PartialBottomSheet() { + var showBottomSheet by remember { mutableStateOf(false) } + val sheetState = rememberModalBottomSheetState( + skipPartiallyExpanded = false, + ) + + Column( + modifier = Modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Button( + onClick = { showBottomSheet = true } + ) { + Text("Display partial bottom sheet") + } + + if (showBottomSheet) { + ModalBottomSheet( + modifier = Modifier.fillMaxHeight(), + sheetState = sheetState, + onDismissRequest = { showBottomSheet = false } + ) { + Text( + "Swipe up to open sheet. Swipe down to dismiss.", + modifier = Modifier.padding(16.dp) + ) + } + } + } +} +// [END android_compose_components_partialbottomsheet] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index 820109b41..9e64792f7 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -40,4 +40,5 @@ enum class TopComponentsDestination(val route: String, val title: String) { CheckboxExamples("checkboxExamples", "Checkbox"), DividerExamples("dividerExamples", "Dividers"), BadgeExamples("badgeExamples", "Badges"), + PartialBottomSheet("partialBottomSheets", "Partial Bottom Sheet"), } From 2f6441ceefecf3f562f491fa7d7f341f5d4db66c Mon Sep 17 00:00:00 2001 From: Chiara Chiappini Date: Mon, 10 Jun 2024 14:10:51 +0100 Subject: [PATCH 200/463] Adds Wear voice input --- .github/workflows/apply_spotless.yml | 3 + .github/workflows/build.yml | 2 + gradle/libs.versions.toml | 11 ++ settings.gradle.kts | 1 + wear/.gitignore | 1 + wear/build.gradle.kts | 78 +++++++++++ wear/lint.xml | 8 ++ wear/proguard-rules.pro | 21 +++ wear/src/main/AndroidManifest.xml | 39 ++++++ .../com/example/wear/snippets/MainActivity.kt | 43 ++++++ .../snippets/voiceinput/VoiceInputScreen.kt | 122 ++++++++++++++++++ .../res/drawable/ic_launcher_background.xml | 74 +++++++++++ .../res/drawable/ic_launcher_foreground.xml | 31 +++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 4292 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 2762 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 6126 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 8874 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 12130 bytes wear/src/main/res/values/strings.xml | 5 + 21 files changed, 449 insertions(+) create mode 100644 wear/.gitignore create mode 100644 wear/build.gradle.kts create mode 100644 wear/lint.xml create mode 100644 wear/proguard-rules.pro create mode 100644 wear/src/main/AndroidManifest.xml create mode 100644 wear/src/main/java/com/example/wear/snippets/MainActivity.kt create mode 100644 wear/src/main/java/com/example/wear/snippets/voiceinput/VoiceInputScreen.kt create mode 100644 wear/src/main/res/drawable/ic_launcher_background.xml create mode 100644 wear/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 wear/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 wear/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 wear/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 wear/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 wear/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 wear/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 wear/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 wear/src/main/res/values/strings.xml diff --git a/.github/workflows/apply_spotless.yml b/.github/workflows/apply_spotless.yml index 79c68e238..0ab863010 100644 --- a/.github/workflows/apply_spotless.yml +++ b/.github/workflows/apply_spotless.yml @@ -47,3 +47,6 @@ jobs: uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: Apply Spotless + + - name: Run spotlessApply for Wear + run: ./gradlew :wear:spotlessApply --init-script gradle/init.gradle.kts --no-configuration-cache --stacktrace diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 51f9b6cbc..8337b4237 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,3 +43,5 @@ jobs: run: ./gradlew :compose:recomposehighlighter:build - name: Build kotlin snippets run: ./gradlew :kotlin:build + - name: Build Wear snippets + run: ./gradlew :wear:build diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 62a11563d..82937258e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -43,6 +43,11 @@ recyclerview = "1.3.2" # @keep targetSdk = "34" version-catalog-update = "0.8.3" +playServicesWearable = "18.1.0" +wearComposeMaterial = "1.2.1" +wearComposeFoundation = "1.2.1" +coreSplashscreen = "1.0.1" +horologist = "0.5.24" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } @@ -110,6 +115,12 @@ junit = { module = "junit:junit", version.ref = "junit" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } +play-services-wearable = { group = "com.google.android.gms", name = "play-services-wearable", version.ref = "playServicesWearable" } +compose-material = { group = "androidx.wear.compose", name = "compose-material", version.ref = "wearComposeMaterial" } +compose-foundation = { group = "androidx.wear.compose", name = "compose-foundation", version.ref = "wearComposeFoundation" } +androidx-core-splashscreen = { group = "androidx.core", name = "core-splashscreen", version.ref = "coreSplashscreen" } +horologist-compose-layout = { module = "com.google.android.horologist:horologist-compose-layout", version.ref = "horologist" } +horologist-compose-material = { module = "com.google.android.horologist:horologist-compose-material", version.ref = "horologist" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } diff --git a/settings.gradle.kts b/settings.gradle.kts index 1edd26a8b..f9ba4f22a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -26,4 +26,5 @@ include( ":compose:recomposehighlighter", ":kotlin", ":compose:snippets", + ":wear", ) diff --git a/wear/.gitignore b/wear/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/wear/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/wear/build.gradle.kts b/wear/build.gradle.kts new file mode 100644 index 000000000..f31e8ba8e --- /dev/null +++ b/wear/build.gradle.kts @@ -0,0 +1,78 @@ +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) +} + +android { + namespace = "com.example.wear" + compileSdk = 34 + + defaultConfig { + applicationId = "com.example.wear" + minSdk = 26 + targetSdk = 33 + versionCode = 1 + versionName = "1.0" + vectorDrawables { + useSupportLibrary = true + } + + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + kotlin { + jvmToolchain(17) + } + + buildFeatures { + compose = true + } + composeOptions { + kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get() + } + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } + } +} + +dependencies { + val composeBom = platform(libs.androidx.compose.bom) + implementation(composeBom) + androidTestImplementation(composeBom) + + implementation(libs.play.services.wearable) + implementation(platform(libs.androidx.compose.bom)) + implementation(libs.androidx.compose.ui) + implementation(libs.androidx.compose.ui.tooling.preview) + implementation(libs.compose.material) + implementation(libs.compose.foundation) + implementation(libs.androidx.activity.compose) + implementation(libs.androidx.core.splashscreen) + implementation(libs.horologist.compose.layout) + implementation(libs.horologist.compose.material) + androidTestImplementation(libs.androidx.compose.ui.test.junit4) + debugImplementation(libs.androidx.compose.ui.tooling) + debugImplementation(libs.androidx.compose.ui.test.manifest) + testImplementation(libs.junit) + + androidTestImplementation(libs.junit) + androidTestImplementation(libs.androidx.test.core) + androidTestImplementation(libs.androidx.test.runner) + androidTestImplementation(libs.androidx.test.espresso.core) + androidTestImplementation(libs.androidx.compose.ui.test) + debugImplementation(libs.androidx.compose.ui.tooling) +} diff --git a/wear/lint.xml b/wear/lint.xml new file mode 100644 index 000000000..44fac75b8 --- /dev/null +++ b/wear/lint.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/wear/proguard-rules.pro b/wear/proguard-rules.pro new file mode 100644 index 000000000..481bb4348 --- /dev/null +++ b/wear/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/wear/src/main/AndroidManifest.xml b/wear/src/main/AndroidManifest.xml new file mode 100644 index 000000000..f0d2328e2 --- /dev/null +++ b/wear/src/main/AndroidManifest.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wear/src/main/java/com/example/wear/snippets/MainActivity.kt b/wear/src/main/java/com/example/wear/snippets/MainActivity.kt new file mode 100644 index 000000000..0921cb042 --- /dev/null +++ b/wear/src/main/java/com/example/wear/snippets/MainActivity.kt @@ -0,0 +1,43 @@ +/* + * Copyright 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.wear.snippets + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.runtime.Composable +import com.example.wear.snippets.voiceinput.VoiceInputScreen +import com.google.android.horologist.annotations.ExperimentalHorologistApi + +class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + + super.onCreate(savedInstanceState) + + setTheme(android.R.style.Theme_DeviceDefault) + + setContent { + WearApp() + } + } +} + +@OptIn(ExperimentalHorologistApi::class) +@Composable +fun WearApp() { + VoiceInputScreen() +} diff --git a/wear/src/main/java/com/example/wear/snippets/voiceinput/VoiceInputScreen.kt b/wear/src/main/java/com/example/wear/snippets/voiceinput/VoiceInputScreen.kt new file mode 100644 index 000000000..36e3e19b9 --- /dev/null +++ b/wear/src/main/java/com/example/wear/snippets/voiceinput/VoiceInputScreen.kt @@ -0,0 +1,122 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.wear.snippets.voiceinput + +/* + * Copyright 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import android.content.Intent +import android.speech.RecognizerIntent +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.result.contract.ActivityResultContracts +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import com.example.wear.R +import com.google.android.horologist.annotations.ExperimentalHorologistApi +import com.google.android.horologist.compose.layout.ScalingLazyColumnDefaults +import com.google.android.horologist.compose.layout.ScalingLazyColumnDefaults.ItemType +import com.google.android.horologist.compose.layout.ScreenScaffold +import com.google.android.horologist.compose.material.Chip +import com.google.android.horologist.compose.rotaryinput.rotaryWithScroll + +/** + * Shows voice input option + */ +@OptIn(ExperimentalHorologistApi::class) +@Composable +fun VoiceInputScreen() { + // [START android_wear_voice_input] + var textForVoiceInput by remember { mutableStateOf("") } + + val voiceLauncher = + rememberLauncherForActivityResult( + ActivityResultContracts.StartActivityForResult() + ) { activityResult -> + // This is where you process the intent and extract the speech text from the intent. + activityResult.data?.let { data -> + val results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS) + textForVoiceInput = results?.get(0) ?: "None" + } + } + + // [START_EXCLUDE android_wear_voice_input] + val scrollState = rememberScrollState() + + ScreenScaffold(scrollState = scrollState) { + val padding = ScalingLazyColumnDefaults.padding( + first = ItemType.Text, + last = ItemType.Chip + )() + Column( + modifier = Modifier + .fillMaxSize() + .verticalScroll(scrollState) + .rotaryWithScroll(scrollState) + .padding(padding), + verticalArrangement = Arrangement.Center + ) { + // [END_EXCLUDE android_wear_voice_input] + // Create an intent that can start the Speech Recognizer activity + val voiceIntent: Intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply { + putExtra( + RecognizerIntent.EXTRA_LANGUAGE_MODEL, + RecognizerIntent.LANGUAGE_MODEL_FREE_FORM + ) + + putExtra( + RecognizerIntent.EXTRA_PROMPT, + stringResource(R.string.voice_text_entry_label) + ) + } + // Invoke the process from a chip + Chip( + onClick = { + voiceLauncher.launch(voiceIntent) + }, + label = stringResource(R.string.voice_input_label), + secondaryLabel = textForVoiceInput + ) + // [START_EXCLUDE android_wear_voice_input] + } + } + // [END_EXCLUDE android_wear_voice_input] + // [END android_wear_voice_input] +} diff --git a/wear/src/main/res/drawable/ic_launcher_background.xml b/wear/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 000000000..ca3826a46 --- /dev/null +++ b/wear/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wear/src/main/res/drawable/ic_launcher_foreground.xml b/wear/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 000000000..da1dcd94e --- /dev/null +++ b/wear/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/wear/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/wear/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 000000000..bbd3e0212 --- /dev/null +++ b/wear/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/wear/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/wear/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 000000000..bbd3e0212 --- /dev/null +++ b/wear/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/wear/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/wear/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..a4383dac1d0ba729b308b25a2963f657e9af5846 GIT binary patch literal 4292 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 AZ2$lO literal 0 HcmV?d00001 diff --git a/wear/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/wear/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..59beb611809efca5e1b95822b143c4a78cfa82a4 GIT binary patch literal 8874 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 + Wear Snippets + Voice Input + Voice Text Entry + \ No newline at end of file From a5736c15ed1639437a8a6e180af39f45a000e11c Mon Sep 17 00:00:00 2001 From: Chiara Chiappini Date: Fri, 14 Jun 2024 17:00:49 +0100 Subject: [PATCH 201/463] add the structure of the screen --- .../wear/snippets/voiceinput/VoiceInputScreen.kt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/wear/src/main/java/com/example/wear/snippets/voiceinput/VoiceInputScreen.kt b/wear/src/main/java/com/example/wear/snippets/voiceinput/VoiceInputScreen.kt index 36e3e19b9..4109b95ec 100644 --- a/wear/src/main/java/com/example/wear/snippets/voiceinput/VoiceInputScreen.kt +++ b/wear/src/main/java/com/example/wear/snippets/voiceinput/VoiceInputScreen.kt @@ -77,15 +77,19 @@ fun VoiceInputScreen() { } } - // [START_EXCLUDE android_wear_voice_input] val scrollState = rememberScrollState() ScreenScaffold(scrollState = scrollState) { + //rest of implementation here + // [START_EXCLUDE] val padding = ScalingLazyColumnDefaults.padding( first = ItemType.Text, last = ItemType.Chip )() + // [END_EXCLUDE] Column( + //rest of implementation here + // [START_EXCLUDE] modifier = Modifier .fillMaxSize() .verticalScroll(scrollState) @@ -93,7 +97,8 @@ fun VoiceInputScreen() { .padding(padding), verticalArrangement = Arrangement.Center ) { - // [END_EXCLUDE android_wear_voice_input] + // [END_EXCLUDE] + // Create an intent that can start the Speech Recognizer activity val voiceIntent: Intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply { putExtra( @@ -114,9 +119,7 @@ fun VoiceInputScreen() { label = stringResource(R.string.voice_input_label), secondaryLabel = textForVoiceInput ) - // [START_EXCLUDE android_wear_voice_input] } } - // [END_EXCLUDE android_wear_voice_input] // [END android_wear_voice_input] } From 37f5da8fbe143712db219a3812a3bf06e6cc94e6 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Mon, 17 Jun 2024 08:43:02 +0100 Subject: [PATCH 202/463] =?UTF-8?q?=F0=9F=A4=96=20Update=20Dependencies=20?= =?UTF-8?q?(#282)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 82937258e..44ac7feef 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -24,30 +24,30 @@ coil = "2.5.0" # @keep compileSdk = "34" compose-compiler = "1.5.4" +coreSplashscreen = "1.0.1" coroutines = "1.7.3" google-maps = "18.2.0" gradle-versions = "0.51.0" hilt = "2.50" +horologist = "0.5.24" junit = "4.13.2" # @pin Update in conjuction with Compose Compiler kotlin = "1.9.20" ksp = "1.8.0-1.0.9" maps-compose = "4.3.2" -material = "1.11.0" +material = "1.4.0-beta01" material3-adaptive = "1.0.0-alpha12" material3-adaptive-navigation-suite = "1.0.0-alpha07" media3 = "1.2.1" # @keep minSdk = "21" +playServicesWearable = "18.1.0" recyclerview = "1.3.2" # @keep targetSdk = "34" version-catalog-update = "0.8.3" -playServicesWearable = "18.1.0" -wearComposeMaterial = "1.2.1" -wearComposeFoundation = "1.2.1" -coreSplashscreen = "1.0.1" -horologist = "0.5.24" +wearComposeFoundation = "1.3.0" +wearComposeMaterial = "1.3.0" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } @@ -85,6 +85,7 @@ androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayo androidx-constraintlayout-compose = { module = "androidx.constraintlayout:constraintlayout-compose", version.ref = "androidx-constraintlayout-compose" } androidx-coordinator-layout = { module = "androidx.coordinatorlayout:coordinatorlayout", version.ref = "androidx-coordinator-layout" } androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidx-corektx" } +androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "coreSplashscreen" } androidx-emoji2-views = { module = "androidx.emoji2:emoji2-views", version.ref = "androidx-emoji2-views" } androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment-ktx" } androidx-glance-appwidget = { module = "androidx.glance:glance-appwidget", version.ref = "androidx-glance-appwidget" } @@ -106,21 +107,20 @@ androidx-test-runner = "androidx.test:runner:1.5.2" androidx-window-core = { module = "androidx.window:window-core", version.ref = "androidx-window" } androidx-work-runtime-ktx = "androidx.work:work-runtime-ktx:2.9.0" coil-kt-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } +compose-foundation = { module = "androidx.wear.compose:compose-foundation", version.ref = "wearComposeFoundation" } +compose-material = { module = "androidx.wear.compose:compose-material", version.ref = "wearComposeMaterial" } google-android-material = { module = "com.google.android.material:material", version.ref = "material" } googlemaps-compose = { module = "com.google.maps.android:maps-compose", version.ref = "maps-compose" } googlemaps-maps = { module = "com.google.android.gms:play-services-maps", version.ref = "google-maps" } hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" } hilt-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hilt" } +horologist-compose-layout = { module = "com.google.android.horologist:horologist-compose-layout", version.ref = "horologist" } +horologist-compose-material = { module = "com.google.android.horologist:horologist-compose-material", version.ref = "horologist" } junit = { module = "junit:junit", version.ref = "junit" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } -play-services-wearable = { group = "com.google.android.gms", name = "play-services-wearable", version.ref = "playServicesWearable" } -compose-material = { group = "androidx.wear.compose", name = "compose-material", version.ref = "wearComposeMaterial" } -compose-foundation = { group = "androidx.wear.compose", name = "compose-foundation", version.ref = "wearComposeFoundation" } -androidx-core-splashscreen = { group = "androidx.core", name = "core-splashscreen", version.ref = "coreSplashscreen" } -horologist-compose-layout = { module = "com.google.android.horologist:horologist-compose-layout", version.ref = "horologist" } -horologist-compose-material = { module = "com.google.android.horologist:horologist-compose-material", version.ref = "horologist" } +play-services-wearable = { module = "com.google.android.gms:play-services-wearable", version.ref = "playServicesWearable" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } From 6da9f024bd0d394e0fbc8e93cddcf5af048b81e0 Mon Sep 17 00:00:00 2001 From: Chiara Chiappini Date: Tue, 18 Jun 2024 17:40:35 +0100 Subject: [PATCH 203/463] Adds snippet for Navigation --- gradle/libs.versions.toml | 2 + wear/build.gradle.kts | 1 + .../com/example/wear/snippets/MainActivity.kt | 6 +- .../wear/snippets/navigation/Navigation.kt | 136 ++++++++++++++++++ wear/src/main/res/values/strings.xml | 1 + 5 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 wear/src/main/java/com/example/wear/snippets/navigation/Navigation.kt diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 44ac7feef..d054cc136 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -48,6 +48,7 @@ targetSdk = "34" version-catalog-update = "0.8.3" wearComposeFoundation = "1.3.0" wearComposeMaterial = "1.3.0" +composeUiTooling = "1.3.1" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } @@ -121,6 +122,7 @@ kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.re kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } play-services-wearable = { module = "com.google.android.gms:play-services-wearable", version.ref = "playServicesWearable" } +compose-ui-tooling = { group = "androidx.wear.compose", name = "compose-ui-tooling", version.ref = "composeUiTooling" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } diff --git a/wear/build.gradle.kts b/wear/build.gradle.kts index f31e8ba8e..d6d44736e 100644 --- a/wear/build.gradle.kts +++ b/wear/build.gradle.kts @@ -54,6 +54,7 @@ dependencies { implementation(composeBom) androidTestImplementation(composeBom) + implementation(libs.compose.ui.tooling) implementation(libs.play.services.wearable) implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.compose.ui) diff --git a/wear/src/main/java/com/example/wear/snippets/MainActivity.kt b/wear/src/main/java/com/example/wear/snippets/MainActivity.kt index 0921cb042..ea2e27cd8 100644 --- a/wear/src/main/java/com/example/wear/snippets/MainActivity.kt +++ b/wear/src/main/java/com/example/wear/snippets/MainActivity.kt @@ -20,8 +20,10 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.runtime.Composable +import com.example.wear.snippets.navigation.navigation import com.example.wear.snippets.voiceinput.VoiceInputScreen import com.google.android.horologist.annotations.ExperimentalHorologistApi +import com.google.android.horologist.compose.layout.AppScaffold class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -39,5 +41,7 @@ class MainActivity : ComponentActivity() { @OptIn(ExperimentalHorologistApi::class) @Composable fun WearApp() { - VoiceInputScreen() + AppScaffold { + navigation() + } } diff --git a/wear/src/main/java/com/example/wear/snippets/navigation/Navigation.kt b/wear/src/main/java/com/example/wear/snippets/navigation/Navigation.kt new file mode 100644 index 000000000..53e4d4aa8 --- /dev/null +++ b/wear/src/main/java/com/example/wear/snippets/navigation/Navigation.kt @@ -0,0 +1,136 @@ +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.wear.snippets.navigation + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextAlign +import androidx.wear.compose.material.Text +import androidx.wear.compose.navigation.SwipeDismissableNavHost +import androidx.wear.compose.navigation.composable +import androidx.wear.compose.navigation.rememberSwipeDismissableNavController +import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices +import androidx.wear.compose.ui.tooling.preview.WearPreviewFontScales +import com.example.wear.R +import com.google.android.horologist.annotations.ExperimentalHorologistApi +import com.google.android.horologist.compose.layout.ScalingLazyColumn +import com.google.android.horologist.compose.layout.ScalingLazyColumnDefaults +import com.google.android.horologist.compose.layout.ScalingLazyColumnDefaults.ItemType +import com.google.android.horologist.compose.layout.ScreenScaffold +import com.google.android.horologist.compose.layout.rememberResponsiveColumnState +import com.google.android.horologist.compose.material.Chip +import com.google.android.horologist.compose.material.ListHeaderDefaults.firstItemPadding +import com.google.android.horologist.compose.material.ResponsiveListHeader +import com.google.android.horologist.compose.rotaryinput.rotaryWithScroll + + @Composable + fun navigation() { + // [START android_wear_navigation] + val navController = rememberSwipeDismissableNavController() + SwipeDismissableNavHost( + navController = navController, + startDestination = "message_list" + ) { + composable("message_list") { + MessageList(onMessageClick = { id -> + navController.navigate("message_detail/$id") + }) + } + composable("message_detail/{id}") { + MessageDetail(id = it.arguments?.getString("id")!!) + } + } + // [END android_wear_navigation] + } + +@OptIn(ExperimentalHorologistApi::class) +@Composable +fun MessageDetail(id: String){ + val scrollState = rememberScrollState() + + ScreenScaffold(scrollState = scrollState) { + val padding = ScalingLazyColumnDefaults.padding( + first = ItemType.Text, + last = ItemType.Text + )() + Column( + modifier = Modifier + .fillMaxSize() + .verticalScroll(scrollState) + .rotaryWithScroll(scrollState) + .padding(padding), + verticalArrangement = Arrangement.Center + ) { + Text(text= id, + textAlign = TextAlign.Center, + modifier = Modifier.fillMaxSize()) + } + } +} + +@OptIn(ExperimentalHorologistApi::class) +@Composable +fun MessageList(onMessageClick: (String) -> Unit){ + val columnState = rememberResponsiveColumnState( + contentPadding = ScalingLazyColumnDefaults.padding( + first = ItemType.Text, + last = ItemType.Chip + ) + ) + + ScreenScaffold(scrollState = columnState) { + ScalingLazyColumn( + columnState = columnState, + modifier = Modifier + .fillMaxSize() + ) { + item { + ResponsiveListHeader(contentPadding = firstItemPadding()) { + Text(text = stringResource(R.string.message_list)) + } + } + item { + Chip(label = "Message 1", onClick = { onMessageClick("message1")}) + } + item { + Chip(label = "Message 2", onClick = { onMessageClick("message2")}) + } + } + } +} + +@WearPreviewDevices +@WearPreviewFontScales +@Composable +fun MessageDetailPreview() { + MessageDetail("test") +} + +@WearPreviewDevices +@WearPreviewFontScales +@Composable +fun MessageListPreview() { + MessageList(onMessageClick = {}) +} + diff --git a/wear/src/main/res/values/strings.xml b/wear/src/main/res/values/strings.xml index 9fecdf816..31b64b4d3 100644 --- a/wear/src/main/res/values/strings.xml +++ b/wear/src/main/res/values/strings.xml @@ -2,4 +2,5 @@ Wear Snippets Voice Input Voice Text Entry + Message List \ No newline at end of file From 1ef854252f92e5ab17afb2fb4fa1483695c7e47c Mon Sep 17 00:00:00 2001 From: Ben Trengrove Date: Tue, 25 Jun 2024 12:09:05 +1200 Subject: [PATCH 204/463] Update the LaunchedEffect snipper (#285) --- .../sideeffects/SideEffectsSnippets.kt | 52 ++++++------------- 1 file changed, 16 insertions(+), 36 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt index 4241e4af9..c68791a0f 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt @@ -18,12 +18,13 @@ package com.example.compose.snippets.sideeffects import android.media.Image import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.core.Animatable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material.Button +import androidx.compose.material3.Button import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState @@ -50,53 +51,32 @@ import com.example.compose.snippets.interop.FirebaseAnalytics import com.example.compose.snippets.interop.User import com.example.compose.snippets.kotlin.Message import kotlinx.coroutines.delay +import kotlinx.coroutines.isActive import kotlinx.coroutines.launch -// [START android_compose_side_effects_launchedeffect] @Composable -fun MyScreen( - state: UiState>, - snackbarHostState: SnackbarHostState -) { - - // If the UI state contains an error, show snackbar - if (state.hasError) { - - // `LaunchedEffect` will cancel and re-launch if - // `scaffoldState.snackbarHostState` changes - LaunchedEffect(snackbarHostState) { - // Show snackbar using a coroutine, when the coroutine is cancelled the - // snackbar will automatically dismiss. This coroutine will cancel whenever - // `state.hasError` is false, and only start when `state.hasError` is true - // (due to the above if-check), or if `scaffoldState.snackbarHostState` changes. - snackbarHostState.showSnackbar( - message = "Error message", - actionLabel = "Retry message" - ) - } - } - - Scaffold( - snackbarHost = { - SnackbarHost(hostState = snackbarHostState) +fun MyScreen() { +// [START android_compose_side_effects_launchedeffect] + // Allow the pulse rate to be configured, so it can be sped up if the user is running + // out of time + var pulseRateMs by remember { mutableStateOf(3000L) } + val alpha = remember { Animatable(1f) } + LaunchedEffect(pulseRateMs) { // Restart the effect when the pulse rate changes + while (isActive) { + delay(pulseRateMs) // Pulse the alpha every pulseRateMs to alert the user + alpha.animateTo(0f) + alpha.animateTo(1f) } - ) { contentPadding -> - // [START_EXCLUDE] - Box(Modifier.padding(contentPadding)) - // [END_EXCLUDE] } +// [END android_compose_side_effects_launchedeffect] } + // [START_EXCLUDE silent] class Movie { val url = "" val id = "" } -class UiState { - val hasError = true -} // [END_EXCLUDE] -// [END android_compose_side_effects_launchedeffect] - // [START android_compose_side_effects_remembercoroutinescope] @Composable fun MoviesScreen(snackbarHostState: SnackbarHostState) { From 184d4348288bea29053e0873d728d11a221dd06e Mon Sep 17 00:00:00 2001 From: Chiara Chiappini Date: Fri, 21 Jun 2024 16:36:59 +0100 Subject: [PATCH 205/463] Adds sample for rotary and timepicker --- .../com/example/wear/snippets/MainActivity.kt | 9 +- .../wear/snippets/navigation/Navigation.kt | 22 +- .../example/wear/snippets/rotary/Rotary.kt | 219 ++++++++++++++++++ .../snippets/voiceinput/VoiceInputScreen.kt | 106 +++++---- 4 files changed, 294 insertions(+), 62 deletions(-) create mode 100644 wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt diff --git a/wear/src/main/java/com/example/wear/snippets/MainActivity.kt b/wear/src/main/java/com/example/wear/snippets/MainActivity.kt index ea2e27cd8..1e51a3fe0 100644 --- a/wear/src/main/java/com/example/wear/snippets/MainActivity.kt +++ b/wear/src/main/java/com/example/wear/snippets/MainActivity.kt @@ -20,10 +20,8 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.runtime.Composable -import com.example.wear.snippets.navigation.navigation -import com.example.wear.snippets.voiceinput.VoiceInputScreen +import com.example.wear.snippets.rotary.TimePicker import com.google.android.horologist.annotations.ExperimentalHorologistApi -import com.google.android.horologist.compose.layout.AppScaffold class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -41,7 +39,6 @@ class MainActivity : ComponentActivity() { @OptIn(ExperimentalHorologistApi::class) @Composable fun WearApp() { - AppScaffold { - navigation() - } + // insert here the snippet you want to test + TimePicker() } diff --git a/wear/src/main/java/com/example/wear/snippets/navigation/Navigation.kt b/wear/src/main/java/com/example/wear/snippets/navigation/Navigation.kt index 53e4d4aa8..5c7fbe062 100644 --- a/wear/src/main/java/com/example/wear/snippets/navigation/Navigation.kt +++ b/wear/src/main/java/com/example/wear/snippets/navigation/Navigation.kt @@ -34,6 +34,7 @@ import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices import androidx.wear.compose.ui.tooling.preview.WearPreviewFontScales import com.example.wear.R import com.google.android.horologist.annotations.ExperimentalHorologistApi +import com.google.android.horologist.compose.layout.AppScaffold import com.google.android.horologist.compose.layout.ScalingLazyColumn import com.google.android.horologist.compose.layout.ScalingLazyColumnDefaults import com.google.android.horologist.compose.layout.ScalingLazyColumnDefaults.ItemType @@ -44,8 +45,9 @@ import com.google.android.horologist.compose.material.ListHeaderDefaults.firstIt import com.google.android.horologist.compose.material.ResponsiveListHeader import com.google.android.horologist.compose.rotaryinput.rotaryWithScroll - @Composable - fun navigation() { +@Composable +fun navigation() { + AppScaffold { // [START android_wear_navigation] val navController = rememberSwipeDismissableNavController() SwipeDismissableNavHost( @@ -63,10 +65,11 @@ import com.google.android.horologist.compose.rotaryinput.rotaryWithScroll } // [END android_wear_navigation] } +} @OptIn(ExperimentalHorologistApi::class) @Composable -fun MessageDetail(id: String){ +fun MessageDetail(id: String) { val scrollState = rememberScrollState() ScreenScaffold(scrollState = scrollState) { @@ -82,16 +85,18 @@ fun MessageDetail(id: String){ .padding(padding), verticalArrangement = Arrangement.Center ) { - Text(text= id, + Text( + text = id, textAlign = TextAlign.Center, - modifier = Modifier.fillMaxSize()) + modifier = Modifier.fillMaxSize() + ) } } } @OptIn(ExperimentalHorologistApi::class) @Composable -fun MessageList(onMessageClick: (String) -> Unit){ +fun MessageList(onMessageClick: (String) -> Unit) { val columnState = rememberResponsiveColumnState( contentPadding = ScalingLazyColumnDefaults.padding( first = ItemType.Text, @@ -111,10 +116,10 @@ fun MessageList(onMessageClick: (String) -> Unit){ } } item { - Chip(label = "Message 1", onClick = { onMessageClick("message1")}) + Chip(label = "Message 1", onClick = { onMessageClick("message1") }) } item { - Chip(label = "Message 2", onClick = { onMessageClick("message2")}) + Chip(label = "Message 2", onClick = { onMessageClick("message2") }) } } } @@ -133,4 +138,3 @@ fun MessageDetailPreview() { fun MessageListPreview() { MessageList(onMessageClick = {}) } - diff --git a/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt b/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt new file mode 100644 index 000000000..92f84673e --- /dev/null +++ b/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt @@ -0,0 +1,219 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.wear.snippets.rotary + +import android.view.MotionEvent +import androidx.compose.foundation.focusable +import androidx.compose.foundation.gestures.animateScrollBy +import androidx.compose.foundation.gestures.scrollBy +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.input.pointer.pointerInteropFilter +import androidx.compose.ui.input.rotary.onRotaryScrollEvent +import androidx.compose.ui.unit.dp +import androidx.wear.compose.foundation.ExperimentalWearFoundationApi +import androidx.wear.compose.foundation.lazy.ScalingLazyColumn +import androidx.wear.compose.foundation.lazy.rememberScalingLazyListState +import androidx.wear.compose.foundation.rememberActiveFocusRequester +import androidx.wear.compose.material.Chip +import androidx.wear.compose.material.MaterialTheme +import androidx.wear.compose.material.Picker +import androidx.wear.compose.material.PositionIndicator +import androidx.wear.compose.material.Scaffold +import androidx.wear.compose.material.Text +import androidx.wear.compose.material.rememberPickerState +import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices +import androidx.wear.compose.ui.tooling.preview.WearPreviewFontScales +import kotlinx.coroutines.launch + +@OptIn(ExperimentalWearFoundationApi::class) +@Composable +fun ScrollableScreen() { + // This sample doesn't add a Time Text at the top of the screen. + // If using Time Text, add padding to ensure content does not overlap with Time Text. + // [START android_wear_rotary_input] + val listState = rememberScalingLazyListState() + Scaffold( + positionIndicator = { + PositionIndicator(scalingLazyListState = listState) + } + ) { + + val focusRequester = rememberActiveFocusRequester() + val coroutineScope = rememberCoroutineScope() + + ScalingLazyColumn( + modifier = Modifier + .onRotaryScrollEvent { + coroutineScope.launch { + listState.scrollBy(it.verticalScrollPixels) + listState.animateScrollBy(0f) + } + true + } + .focusRequester(focusRequester) + .focusable() + .fillMaxSize(), + state = listState + ) { + // Content goes here + // [START_EXCLUDE] + items(count = 5) { + Chip(onClick = { }, label = { Text("Item #$it") }) + } + // [END_EXCLUDE] + } + } + // [END android_wear_rotary_input] +} + +@OptIn(ExperimentalComposeUiApi::class) +@Composable +fun TimePicker() { + val textStyle = MaterialTheme.typography.display1 + + // [START android_wear_rotary_input_picker] + var selectedColumn by remember { mutableIntStateOf(0) } + + val hoursFocusRequester = remember { FocusRequester() } + val minutesRequester = remember { FocusRequester() } + // [START_EXCLUDE] + val coroutineScope = rememberCoroutineScope() + + @Composable + fun Option(column: Int, text: String) = Box(modifier = Modifier.fillMaxSize()) { + Text( + text = text, style = textStyle, + color = if (selectedColumn == column) MaterialTheme.colors.secondary + else MaterialTheme.colors.onBackground, + modifier = Modifier + .pointerInteropFilter { + if (it.action == MotionEvent.ACTION_DOWN) selectedColumn = column + true + } + ) + } + // [END_EXCLUDE] + Scaffold(modifier = Modifier.fillMaxSize()) { + Row( + // [START_EXCLUDE] + modifier = Modifier.fillMaxSize(), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Center, + // [END_EXCLUDE] + // ... + ) { + // [START_EXCLUDE] + val hourState = rememberPickerState( + initialNumberOfOptions = 12, + initiallySelectedOption = 5 + ) + val hourContentDescription by remember { + derivedStateOf { "${hourState.selectedOption + 1 } hours" } + } + // [END_EXCLUDE] + Picker( + readOnly = selectedColumn != 0, + modifier = Modifier.size(64.dp, 100.dp) + .onRotaryScrollEvent { + coroutineScope.launch { + hourState.scrollBy(it.verticalScrollPixels) + } + true + } + .focusRequester(hoursFocusRequester) + .focusable(), + onSelected = { selectedColumn = 0 }, + // ... + // [START_EXCLUDE] + state = hourState, + contentDescription = hourContentDescription, + option = { hour: Int -> Option(0, "%2d".format(hour + 1)) } + // [END_EXCLUDE] + ) + // [START_EXCLUDE] + Spacer(Modifier.width(8.dp)) + Text(text = ":", style = textStyle, color = MaterialTheme.colors.onBackground) + Spacer(Modifier.width(8.dp)) + val minuteState = + rememberPickerState(initialNumberOfOptions = 60, initiallySelectedOption = 0) + val minuteContentDescription by remember { + derivedStateOf { "${minuteState.selectedOption} minutes" } + } + // [END_EXCLUDE] + Picker( + readOnly = selectedColumn != 1, + modifier = Modifier.size(64.dp, 100.dp) + .onRotaryScrollEvent { + coroutineScope.launch { + minuteState.scrollBy(it.verticalScrollPixels) + } + true + } + .focusRequester(minutesRequester) + .focusable(), + onSelected = { selectedColumn = 1 }, + // ... + // [START_EXCLUDE] + state = minuteState, + contentDescription = minuteContentDescription, + option = { minute: Int -> Option(1, "%02d".format(minute)) } + // [END_EXCLUDE] + ) + LaunchedEffect(selectedColumn) { + listOf( + hoursFocusRequester, + minutesRequester + )[selectedColumn] + .requestFocus() + } + } + } + // [END android_wear_rotary_input_picker] +} + +@WearPreviewDevices +@WearPreviewFontScales +@Composable +fun ScrollableScreenPreview() { + ScrollableScreen() +} + +@WearPreviewDevices +@WearPreviewFontScales +@Composable +fun TimePickerPreview() { + TimePicker() +} diff --git a/wear/src/main/java/com/example/wear/snippets/voiceinput/VoiceInputScreen.kt b/wear/src/main/java/com/example/wear/snippets/voiceinput/VoiceInputScreen.kt index 4109b95ec..fa80ab800 100644 --- a/wear/src/main/java/com/example/wear/snippets/voiceinput/VoiceInputScreen.kt +++ b/wear/src/main/java/com/example/wear/snippets/voiceinput/VoiceInputScreen.kt @@ -49,8 +49,11 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource +import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices +import androidx.wear.compose.ui.tooling.preview.WearPreviewFontScales import com.example.wear.R import com.google.android.horologist.annotations.ExperimentalHorologistApi +import com.google.android.horologist.compose.layout.AppScaffold import com.google.android.horologist.compose.layout.ScalingLazyColumnDefaults import com.google.android.horologist.compose.layout.ScalingLazyColumnDefaults.ItemType import com.google.android.horologist.compose.layout.ScreenScaffold @@ -63,63 +66,72 @@ import com.google.android.horologist.compose.rotaryinput.rotaryWithScroll @OptIn(ExperimentalHorologistApi::class) @Composable fun VoiceInputScreen() { - // [START android_wear_voice_input] - var textForVoiceInput by remember { mutableStateOf("") } + AppScaffold { + // [START android_wear_voice_input] + var textForVoiceInput by remember { mutableStateOf("") } - val voiceLauncher = - rememberLauncherForActivityResult( - ActivityResultContracts.StartActivityForResult() - ) { activityResult -> - // This is where you process the intent and extract the speech text from the intent. - activityResult.data?.let { data -> - val results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS) - textForVoiceInput = results?.get(0) ?: "None" + val voiceLauncher = + rememberLauncherForActivityResult( + ActivityResultContracts.StartActivityForResult() + ) { activityResult -> + // This is where you process the intent and extract the speech text from the intent. + activityResult.data?.let { data -> + val results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS) + textForVoiceInput = results?.get(0) ?: "None" + } } - } - val scrollState = rememberScrollState() + val scrollState = rememberScrollState() - ScreenScaffold(scrollState = scrollState) { - //rest of implementation here - // [START_EXCLUDE] - val padding = ScalingLazyColumnDefaults.padding( - first = ItemType.Text, - last = ItemType.Chip - )() - // [END_EXCLUDE] - Column( - //rest of implementation here + ScreenScaffold(scrollState = scrollState) { + // rest of implementation here // [START_EXCLUDE] - modifier = Modifier - .fillMaxSize() - .verticalScroll(scrollState) - .rotaryWithScroll(scrollState) - .padding(padding), - verticalArrangement = Arrangement.Center - ) { + val padding = ScalingLazyColumnDefaults.padding( + first = ItemType.Text, + last = ItemType.Chip + )() // [END_EXCLUDE] + Column( + // rest of implementation here + // [START_EXCLUDE] + modifier = Modifier + .fillMaxSize() + .verticalScroll(scrollState) + .rotaryWithScroll(scrollState) + .padding(padding), + verticalArrangement = Arrangement.Center + ) { + // [END_EXCLUDE] - // Create an intent that can start the Speech Recognizer activity - val voiceIntent: Intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply { - putExtra( - RecognizerIntent.EXTRA_LANGUAGE_MODEL, - RecognizerIntent.LANGUAGE_MODEL_FREE_FORM - ) + // Create an intent that can start the Speech Recognizer activity + val voiceIntent: Intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply { + putExtra( + RecognizerIntent.EXTRA_LANGUAGE_MODEL, + RecognizerIntent.LANGUAGE_MODEL_FREE_FORM + ) - putExtra( - RecognizerIntent.EXTRA_PROMPT, - stringResource(R.string.voice_text_entry_label) + putExtra( + RecognizerIntent.EXTRA_PROMPT, + stringResource(R.string.voice_text_entry_label) + ) + } + // Invoke the process from a chip + Chip( + onClick = { + voiceLauncher.launch(voiceIntent) + }, + label = stringResource(R.string.voice_input_label), + secondaryLabel = textForVoiceInput ) } - // Invoke the process from a chip - Chip( - onClick = { - voiceLauncher.launch(voiceIntent) - }, - label = stringResource(R.string.voice_input_label), - secondaryLabel = textForVoiceInput - ) } + // [END android_wear_voice_input] } - // [END android_wear_voice_input] +} + +@WearPreviewDevices +@WearPreviewFontScales +@Composable +fun VoiceInputScreenPreview() { + VoiceInputScreen() } From 010a9f1e7b651792df16504706b475b46bd8bb48 Mon Sep 17 00:00:00 2001 From: Chiara Chiappini Date: Wed, 3 Jul 2024 14:46:06 +0100 Subject: [PATCH 206/463] Adds code for List using Horologist --- gradle/libs.versions.toml | 3 +- gradle/wrapper/gradle-wrapper.properties | 2 +- wear/build.gradle.kts | 1 + .../com/example/wear/snippets/MainActivity.kt | 9 +- .../com/example/wear/snippets/list/List.kt | 110 ++++++++++++++++++ 5 files changed, 116 insertions(+), 9 deletions(-) create mode 100644 wear/src/main/java/com/example/wear/snippets/list/List.kt diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d054cc136..ad1f77a30 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -41,7 +41,7 @@ material3-adaptive-navigation-suite = "1.0.0-alpha07" media3 = "1.2.1" # @keep minSdk = "21" -playServicesWearable = "18.1.0" +playServicesWearable = "18.2.0" recyclerview = "1.3.2" # @keep targetSdk = "34" @@ -123,6 +123,7 @@ kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutine kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } play-services-wearable = { module = "com.google.android.gms:play-services-wearable", version.ref = "playServicesWearable" } compose-ui-tooling = { group = "androidx.wear.compose", name = "compose-ui-tooling", version.ref = "composeUiTooling" } +androidx-material-icons-core = { module = "androidx.compose.material:material-icons-core" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1af9e0930..a80b22ce5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/wear/build.gradle.kts b/wear/build.gradle.kts index d6d44736e..b8ca7edda 100644 --- a/wear/build.gradle.kts +++ b/wear/build.gradle.kts @@ -65,6 +65,7 @@ dependencies { implementation(libs.androidx.core.splashscreen) implementation(libs.horologist.compose.layout) implementation(libs.horologist.compose.material) + implementation(libs.androidx.material.icons.core) androidTestImplementation(libs.androidx.compose.ui.test.junit4) debugImplementation(libs.androidx.compose.ui.tooling) debugImplementation(libs.androidx.compose.ui.test.manifest) diff --git a/wear/src/main/java/com/example/wear/snippets/MainActivity.kt b/wear/src/main/java/com/example/wear/snippets/MainActivity.kt index 1e51a3fe0..e2da498a3 100644 --- a/wear/src/main/java/com/example/wear/snippets/MainActivity.kt +++ b/wear/src/main/java/com/example/wear/snippets/MainActivity.kt @@ -20,25 +20,20 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.runtime.Composable -import com.example.wear.snippets.rotary.TimePicker -import com.google.android.horologist.annotations.ExperimentalHorologistApi +import com.example.wear.snippets.list.ComposeList class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setTheme(android.R.style.Theme_DeviceDefault) - setContent { WearApp() } } } -@OptIn(ExperimentalHorologistApi::class) @Composable fun WearApp() { // insert here the snippet you want to test - TimePicker() + ComposeList() } diff --git a/wear/src/main/java/com/example/wear/snippets/list/List.kt b/wear/src/main/java/com/example/wear/snippets/list/List.kt new file mode 100644 index 000000000..0c73de7d6 --- /dev/null +++ b/wear/src/main/java/com/example/wear/snippets/list/List.kt @@ -0,0 +1,110 @@ +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.wear.snippets.list +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Build +import androidx.compose.runtime.Composable +import androidx.wear.compose.material.Text +import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices +import androidx.wear.compose.ui.tooling.preview.WearPreviewFontScales +import com.google.android.horologist.annotations.ExperimentalHorologistApi +import com.google.android.horologist.compose.layout.ScalingLazyColumn +import com.google.android.horologist.compose.layout.ScalingLazyColumnDefaults +import com.google.android.horologist.compose.layout.ScalingLazyColumnState +import com.google.android.horologist.compose.layout.ScreenScaffold +import com.google.android.horologist.compose.layout.rememberResponsiveColumnState +import com.google.android.horologist.compose.material.Button +import com.google.android.horologist.compose.material.ListHeaderDefaults.firstItemPadding +import com.google.android.horologist.compose.material.ResponsiveListHeader + +@OptIn(ExperimentalHorologistApi::class) +@Composable +fun ComposeList() { + // [START android_wear_list] + val columnState = rememberResponsiveColumnState( + contentPadding = ScalingLazyColumnDefaults.padding( + first = ScalingLazyColumnDefaults.ItemType.Text, + last = ScalingLazyColumnDefaults.ItemType.SingleButton + ) + ) + ScreenScaffold(scrollState = columnState) { + ScalingLazyColumn( + columnState = columnState + ) { + item { + ResponsiveListHeader(contentPadding = firstItemPadding()) { + Text(text = "Header") + } + } + // ... other items + item { + Button( + imageVector = Icons.Default.Build, + contentDescription = "Example Button", + onClick = { } + ) + } + } + } + // [END android_wear_list] +} + +@OptIn(ExperimentalHorologistApi::class) +@Composable +fun SnapAndFlingComposeList() { + // [START android_wear_snap] + val columnState = rememberResponsiveColumnState( + // ... + // [START_EXCLUDE] + contentPadding = ScalingLazyColumnDefaults.padding( + first = ScalingLazyColumnDefaults.ItemType.Text, + last = ScalingLazyColumnDefaults.ItemType.SingleButton + ), + // [END_EXCLUDE] + rotaryMode = ScalingLazyColumnState.RotaryMode.Snap + ) + ScreenScaffold(scrollState = columnState) { + ScalingLazyColumn( + columnState = columnState + ) { + // ... + // [START_EXCLUDE] + item { + ResponsiveListHeader(contentPadding = firstItemPadding()) { + Text(text = "Header") + } + } + // ... other items + item { + Button( + imageVector = Icons.Default.Build, + contentDescription = "Example Button", + onClick = { } + ) + } + // [END_EXCLUDE] + } + } + // [END android_wear_snap] +} + +@WearPreviewDevices +@WearPreviewFontScales +@Composable +fun ComposeListPreview() { + ComposeList() +} From 97546660a1640b5983eb8e76964f2ab51da8da0e Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Thu, 4 Jul 2024 15:44:35 +0100 Subject: [PATCH 207/463] Time picker (#287) * Adding minimal time picker examples * Fixing region tag * Fixing region tag * Removing wildcard imports * Apply Spotless --------- Co-authored-by: jakeroseman --- .../compose/snippets/SnippetsActivity.kt | 2 + .../snippets/components/TimePickers.kt | 178 ++++++++++++++++++ .../snippets/navigation/Destination.kt | 1 + 3 files changed, 181 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/TimePickers.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 02f3fbe25..2e5de2bcb 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -42,6 +42,7 @@ import com.example.compose.snippets.components.ProgressIndicatorExamples import com.example.compose.snippets.components.ScaffoldExample import com.example.compose.snippets.components.SliderExamples import com.example.compose.snippets.components.SwitchExamples +import com.example.compose.snippets.components.TimePickerExamples import com.example.compose.snippets.graphics.ApplyPolygonAsClipImage import com.example.compose.snippets.graphics.BitmapFromComposableSnippet import com.example.compose.snippets.graphics.BrushExamplesScreen @@ -103,6 +104,7 @@ class SnippetsActivity : ComponentActivity() { TopComponentsDestination.DividerExamples -> DividerExamples() TopComponentsDestination.BadgeExamples -> BadgeExamples() TopComponentsDestination.PartialBottomSheet -> PartialBottomSheet() + TopComponentsDestination.TimePickerExamples -> TimePickerExamples() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/TimePickers.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/TimePickers.kt new file mode 100644 index 000000000..cdf11101b --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/TimePickers.kt @@ -0,0 +1,178 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.Button +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.TimeInput +import androidx.compose.material3.TimePicker +import androidx.compose.material3.TimePickerState +import androidx.compose.material3.rememberTimePickerState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import java.text.SimpleDateFormat +import java.util.Calendar +import java.util.Locale + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun TimePickerExamples() { + var showDialExample by remember { mutableStateOf(false) } + var showInputExample by remember { mutableStateOf(false) } + + var selectedTime: TimePickerState? by remember { mutableStateOf(null) } + + val formatter = remember { SimpleDateFormat("hh:mm a", Locale.getDefault()) } + + Column( + modifier = Modifier + .fillMaxSize() + .padding(32.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(24.dp), + ) { + Button(onClick = { + showDialExample = true + showInputExample = false + }) { + Text("Dial time picker") + } + Button(onClick = { + showDialExample = false + showInputExample = true + }) { + Text("Input time picker") + } + if (selectedTime != null) { + val cal = Calendar.getInstance() + cal.set(Calendar.HOUR_OF_DAY, selectedTime!!.hour) + cal.set(Calendar.MINUTE, selectedTime!!.minute) + cal.isLenient = false + Text("Selected time = ${formatter.format(cal.time)}") + } else { + Text("No time selected.") + } + } + + when { + showDialExample -> DialExample( + onDismiss = { showDialExample = false }, + onConfirm = { + time -> + selectedTime = time + showDialExample = false + }, + ) + showInputExample -> InputExample( + onDismiss = { showInputExample = false }, + onConfirm = { + time -> + selectedTime = time + showInputExample = false + }, + ) + } +} + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_dial] +@Composable +fun DialExample( + onConfirm: (TimePickerState) -> Unit, + onDismiss: () -> Unit, +) { + val currentTime = Calendar.getInstance() + + val timePickerState = rememberTimePickerState( + initialHour = currentTime.get(Calendar.HOUR_OF_DAY), + initialMinute = currentTime.get(Calendar.MINUTE), + is24Hour = true, + ) + + TimePickerDialog( + onDismiss = { onDismiss() }, + onConfirm = { onConfirm(timePickerState) } + ) { + TimePicker( + state = timePickerState, + ) + } +} +// [END android_compose_components_dial] + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_input] +@Composable +fun InputExample( + onConfirm: (TimePickerState) -> Unit, + onDismiss: () -> Unit, +) { + val currentTime = Calendar.getInstance() + + val timePickerState = rememberTimePickerState( + initialHour = currentTime.get(Calendar.HOUR_OF_DAY), + initialMinute = currentTime.get(Calendar.MINUTE), + is24Hour = true, + ) + + TimePickerDialog( + onDismiss = { onDismiss() }, + onConfirm = { onConfirm(timePickerState) } + ) { + TimeInput( + state = timePickerState, + ) + } +} +// [END android_compose_components_input] + +// [START android_compose_components_timepickerdialog] +@Composable +fun TimePickerDialog( + onDismiss: () -> Unit, + onConfirm: () -> Unit, + content: @Composable () -> Unit +) { + AlertDialog( + onDismissRequest = onDismiss, + dismissButton = { + TextButton(onClick = { onDismiss() }) { + Text("Dismiss") + } + }, + confirmButton = { + TextButton(onClick = { onConfirm() }) { + Text("OK") + } + }, + text = { content() } + ) +} +// [END android_compose_components_timepickerdialog] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index 9e64792f7..5aefdbcb3 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -41,4 +41,5 @@ enum class TopComponentsDestination(val route: String, val title: String) { DividerExamples("dividerExamples", "Dividers"), BadgeExamples("badgeExamples", "Badges"), PartialBottomSheet("partialBottomSheets", "Partial Bottom Sheet"), + TimePickerExamples("timePickerExamples", "Time Pickers"), } From 0280de88d3835ac75466d888bc30604ac8a4b480 Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Tue, 9 Jul 2024 15:32:25 +0100 Subject: [PATCH 208/463] Adding advanced examples (#289) * Adding advanced examples * Apply Spotless * Adding advanced examples * Rename AdvancedTimePickerExample --------- Co-authored-by: jakeroseman --- .../snippets/components/TimePickers.kt | 136 +++++++++++++++++- 1 file changed, 134 insertions(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/TimePickers.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/TimePickers.kt index cdf11101b..5180a1bd8 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/TimePickers.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/TimePickers.kt @@ -16,13 +16,27 @@ package com.example.compose.snippets.components +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.IntrinsicSize +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.AccessTime +import androidx.compose.material.icons.filled.EditCalendar import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TimeInput @@ -37,6 +51,8 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.Dialog +import androidx.compose.ui.window.DialogProperties import java.text.SimpleDateFormat import java.util.Calendar import java.util.Locale @@ -46,6 +62,7 @@ import java.util.Locale fun TimePickerExamples() { var showDialExample by remember { mutableStateOf(false) } var showInputExample by remember { mutableStateOf(false) } + var showAdvancedExample by remember { mutableStateOf(false) } var selectedTime: TimePickerState? by remember { mutableStateOf(null) } @@ -60,16 +77,19 @@ fun TimePickerExamples() { ) { Button(onClick = { showDialExample = true - showInputExample = false }) { Text("Dial time picker") } Button(onClick = { - showDialExample = false showInputExample = true }) { Text("Input time picker") } + Button(onClick = { + showAdvancedExample = true + }) { + Text("Time picker with custom dialog") + } if (selectedTime != null) { val cal = Calendar.getInstance() cal.set(Calendar.HOUR_OF_DAY, selectedTime!!.hour) @@ -98,6 +118,14 @@ fun TimePickerExamples() { showInputExample = false }, ) + showAdvancedExample -> AdvancedTimePickerExample( + onDismiss = { showAdvancedExample = false }, + onConfirm = { + time -> + selectedTime = time + showAdvancedExample = false + }, + ) } } @@ -153,6 +181,57 @@ fun InputExample( } // [END android_compose_components_input] +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_advanced] +@Composable +fun AdvancedTimePickerExample( + onConfirm: (TimePickerState) -> Unit, + onDismiss: () -> Unit, +) { + + val currentTime = Calendar.getInstance() + + val timePickerState = rememberTimePickerState( + initialHour = currentTime.get(Calendar.HOUR_OF_DAY), + initialMinute = currentTime.get(Calendar.MINUTE), + is24Hour = true, + ) + + /** Determines whether the time picker is dial or input */ + var showDial by remember { mutableStateOf(true) } + + /** The icon used for the icon button that switches from dial to input */ + val toggleIcon = if (showDial) { + Icons.Filled.EditCalendar + } else { + Icons.Filled.AccessTime + } + + AdvancedTimePickerDialog( + onDismiss = { onDismiss() }, + onConfirm = { onConfirm(timePickerState) }, + toggle = { + IconButton(onClick = { showDial = !showDial }) { + Icon( + imageVector = toggleIcon, + contentDescription = "Time picker type toggle", + ) + } + }, + ) { + if (showDial) { + TimePicker( + state = timePickerState, + ) + } else { + TimeInput( + state = timePickerState, + ) + } + } +} +// [END android_compose_components_advanced] + // [START android_compose_components_timepickerdialog] @Composable fun TimePickerDialog( @@ -176,3 +255,56 @@ fun TimePickerDialog( ) } // [END android_compose_components_timepickerdialog] + +// [START android_compose_components_advanceddialog] +@Composable +fun AdvancedTimePickerDialog( + title: String = "Select Time", + onDismiss: () -> Unit, + onConfirm: () -> Unit, + toggle: @Composable () -> Unit = {}, + content: @Composable () -> Unit, +) { + Dialog( + onDismissRequest = onDismiss, + properties = DialogProperties(usePlatformDefaultWidth = false), + ) { + Surface( + shape = MaterialTheme.shapes.extraLarge, + tonalElevation = 6.dp, + modifier = + Modifier + .width(IntrinsicSize.Min) + .height(IntrinsicSize.Min) + .background( + shape = MaterialTheme.shapes.extraLarge, + color = MaterialTheme.colorScheme.surface + ), + ) { + Column( + modifier = Modifier.padding(24.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Text( + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 20.dp), + text = title, + style = MaterialTheme.typography.labelMedium + ) + content() + Row( + modifier = Modifier + .height(40.dp) + .fillMaxWidth() + ) { + toggle() + Spacer(modifier = Modifier.weight(1f)) + TextButton(onClick = onDismiss) { Text("Cancel") } + TextButton(onClick = onConfirm) { Text("OK") } + } + } + } + } +} +// [END android_compose_components_advanceddialog] From cc73f312d9abbe969a4510cd3452b105f1571b98 Mon Sep 17 00:00:00 2001 From: Jamal Eason Date: Thu, 18 Jul 2024 08:39:47 -0700 Subject: [PATCH 209/463] Update CenterAlignedTopAppBar snippet to use centerAlignedTopAppBarColors --- .../main/java/com/example/compose/snippets/components/AppBar.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt index 3df1e91f8..8199b00cd 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt @@ -204,7 +204,7 @@ fun CenterAlignedTopAppBarExample() { topBar = { CenterAlignedTopAppBar( - colors = TopAppBarDefaults.topAppBarColors( + colors = TopAppBarDefaults.centerAlignedTopAppBarColors( containerColor = MaterialTheme.colorScheme.primaryContainer, titleContentColor = MaterialTheme.colorScheme.primary, ), From 312340288cee5818c298267d2d6079352e1fc64b Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Mon, 22 Jul 2024 14:26:16 +0100 Subject: [PATCH 210/463] Time pickers comments (#295) * Adding advanced examples * Apply Spotless * Adding advanced examples * Rename AdvancedTimePickerExample * Rename AdvancedTimePickerExample --------- Co-authored-by: jakeroseman --- .../com/example/compose/snippets/components/TimePickers.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/TimePickers.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/TimePickers.kt index 5180a1bd8..129cbb053 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/TimePickers.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/TimePickers.kt @@ -144,6 +144,7 @@ fun DialExample( is24Hour = true, ) + // For information on how to implement a time picker dialog, see the "Dialogs for time pickers" guide. TimePickerDialog( onDismiss = { onDismiss() }, onConfirm = { onConfirm(timePickerState) } @@ -170,6 +171,7 @@ fun InputExample( is24Hour = true, ) + // For information on how to implement a time picker dialog, see the "Dialogs for time pickers" guide. TimePickerDialog( onDismiss = { onDismiss() }, onConfirm = { onConfirm(timePickerState) } @@ -207,6 +209,7 @@ fun AdvancedTimePickerExample( Icons.Filled.AccessTime } + // For information on how to implement a time picker dialog, see the "Dialogs for time pickers" guide. AdvancedTimePickerDialog( onDismiss = { onDismiss() }, onConfirm = { onConfirm(timePickerState) }, From 788f14dcac9f72a1a1871be528829926ff1d47ac Mon Sep 17 00:00:00 2001 From: Chiara Chiappini Date: Wed, 24 Jul 2024 14:42:49 +0100 Subject: [PATCH 211/463] Adds preview and breakpoint --- .../com/example/wear/snippets/list/List.kt | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/wear/src/main/java/com/example/wear/snippets/list/List.kt b/wear/src/main/java/com/example/wear/snippets/list/List.kt index 0c73de7d6..98cf8d187 100644 --- a/wear/src/main/java/com/example/wear/snippets/list/List.kt +++ b/wear/src/main/java/com/example/wear/snippets/list/List.kt @@ -18,6 +18,7 @@ package com.example.wear.snippets.list import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Build import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalConfiguration import androidx.wear.compose.material.Text import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices import androidx.wear.compose.ui.tooling.preview.WearPreviewFontScales @@ -102,9 +103,38 @@ fun SnapAndFlingComposeList() { // [END android_wear_snap] } +// [START android_wear_list_breakpoint] +const val LARGE_DISPLAY_BREAKPOINT = 225 + +@Composable +fun isLargeDisplay() = LocalConfiguration.current.screenWidthDp >= LARGE_DISPLAY_BREAKPOINT +// [START_EXCLUDE] +@Composable +fun breakpointDemo() { + // [END_EXCLUDE] +// ... use in your Composables: + if (isLargeDisplay()) { + // Show additional content. + } else { + // Show content only for smaller displays. + } + // [START_EXCLUDE] +} +// [END_EXCLUDE] +// [END android_wear_list_breakpoint] + +// [START android_wear_list_preview] @WearPreviewDevices @WearPreviewFontScales @Composable fun ComposeListPreview() { ComposeList() } +// [END android_wear_list_preview] + +@WearPreviewDevices +@WearPreviewFontScales +@Composable +fun SnapAndFlingComposeListPreview() { + SnapAndFlingComposeList() +} From a84c80d425b31d72444a4d7157614899ee7df164 Mon Sep 17 00:00:00 2001 From: Alex Vanyo Date: Mon, 29 Jul 2024 03:00:18 -0700 Subject: [PATCH 212/463] Updating DeviceConfigurationOverride snippet comment (#232) --- .../DeviceConfigurationOverrideSnippets.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/snippets/src/androidTest/java/com/example/compose/snippets/deviceconfigurationoverride/DeviceConfigurationOverrideSnippets.kt b/compose/snippets/src/androidTest/java/com/example/compose/snippets/deviceconfigurationoverride/DeviceConfigurationOverrideSnippets.kt index 36db665a1..fca68ad4f 100644 --- a/compose/snippets/src/androidTest/java/com/example/compose/snippets/deviceconfigurationoverride/DeviceConfigurationOverrideSnippets.kt +++ b/compose/snippets/src/androidTest/java/com/example/compose/snippets/deviceconfigurationoverride/DeviceConfigurationOverrideSnippets.kt @@ -42,7 +42,7 @@ class DeviceConfigurationOverrideSnippetsTest { DeviceConfigurationOverride( DeviceConfigurationOverride.ForcedSize(DpSize(1280.dp, 800.dp)) ) { - MyScreen() // will be rendered in the space for 1280dp by 800dp without clipping + MyScreen() // Will be rendered in the space for 1280dp by 800dp without clipping. } } // [END android_compose_deviceconfigurationoverride_forcedsize] From 1a2f369e38bd5333d03f57df6daba6e158fa46d7 Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Mon, 29 Jul 2024 13:18:10 +0100 Subject: [PATCH 213/463] Timepickers redux (#296) * Reworking the time picker examples to be more friendly to copy-pasting * Apply Spotless * Updating the time picker examples to be more copy-pastable * Change in-use tag name back to the current form. * Apply Spotless * Renaming region tags * Renaming region tags --------- Co-authored-by: jakeroseman --- .../snippets/components/TimePickers.kt | 309 ++++++++++++------ 1 file changed, 218 insertions(+), 91 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/TimePickers.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/TimePickers.kt index 129cbb053..08f3c7aad 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/TimePickers.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/TimePickers.kt @@ -18,6 +18,7 @@ package com.example.compose.snippets.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.Row @@ -60,79 +61,180 @@ import java.util.Locale @OptIn(ExperimentalMaterial3Api::class) @Composable fun TimePickerExamples() { + var showMenu by remember { mutableStateOf(true) } + var showDialExample by remember { mutableStateOf(false) } var showInputExample by remember { mutableStateOf(false) } + var showDialWithDialogExample by remember { mutableStateOf(false) } var showAdvancedExample by remember { mutableStateOf(false) } var selectedTime: TimePickerState? by remember { mutableStateOf(null) } val formatter = remember { SimpleDateFormat("hh:mm a", Locale.getDefault()) } - Column( - modifier = Modifier - .fillMaxSize() - .padding(32.dp), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.spacedBy(24.dp), + Box( + Modifier.fillMaxSize(), + contentAlignment = Alignment.Center ) { - Button(onClick = { - showDialExample = true - }) { - Text("Dial time picker") + if (showMenu) { + Column( + modifier = Modifier + .fillMaxSize() + .padding(32.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(24.dp), + ) { + Button(onClick = { + showDialExample = true + showMenu = false + }) { + Text("Dial time picker") + } + Button(onClick = { + showInputExample = true + showMenu = false + }) { + Text("Input time picker") + } + Button(onClick = { + showDialWithDialogExample = true + showMenu = false + }) { + Text("Time picker with dialog") + } + Button(onClick = { + showAdvancedExample = true + showMenu = false + }) { + Text("Time picker with custom dialog") + } + if (selectedTime != null) { + val cal = Calendar.getInstance() + cal.set(Calendar.HOUR_OF_DAY, selectedTime!!.hour) + cal.set(Calendar.MINUTE, selectedTime!!.minute) + cal.isLenient = false + Text("Selected time = ${formatter.format(cal.time)}") + } else { + Text("No time selected.") + } + } } - Button(onClick = { - showInputExample = true - }) { - Text("Input time picker") + + when { + showDialExample -> DialUseStateExample( + onDismiss = { + showDialExample = false + showMenu = true + }, + onConfirm = { + time -> + selectedTime = time + showDialExample = false + showMenu = true + }, + ) + showInputExample -> InputUseStateExample( + onDismiss = { + showInputExample = false + showMenu = true + }, + onConfirm = { + time -> + selectedTime = time + showInputExample = false + showMenu = true + }, + ) + showDialWithDialogExample -> DialWithDialogExample( + onDismiss = { + showDialWithDialogExample = false + showMenu = true + }, + onConfirm = { + time -> + selectedTime = time + showDialWithDialogExample = false + showMenu = true + }, + ) + showAdvancedExample -> AdvancedTimePickerExample( + onDismiss = { + showAdvancedExample = false + showMenu = true + }, + onConfirm = { + time -> + selectedTime = time + showAdvancedExample = false + showMenu = true + }, + ) } - Button(onClick = { - showAdvancedExample = true - }) { - Text("Time picker with custom dialog") + } +} + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_dial] +@Composable +fun DialExample( + onConfirm: () -> Unit, + onDismiss: () -> Unit, +) { + val currentTime = Calendar.getInstance() + + val timePickerState = rememberTimePickerState( + initialHour = currentTime.get(Calendar.HOUR_OF_DAY), + initialMinute = currentTime.get(Calendar.MINUTE), + is24Hour = true, + ) + + Column { + TimePicker( + state = timePickerState, + ) + Button(onClick = onDismiss) { + Text("Dismiss picker") } - if (selectedTime != null) { - val cal = Calendar.getInstance() - cal.set(Calendar.HOUR_OF_DAY, selectedTime!!.hour) - cal.set(Calendar.MINUTE, selectedTime!!.minute) - cal.isLenient = false - Text("Selected time = ${formatter.format(cal.time)}") - } else { - Text("No time selected.") + Button(onClick = onConfirm) { + Text("Confirm selection") } } +} +// [END android_compose_components_dial] - when { - showDialExample -> DialExample( - onDismiss = { showDialExample = false }, - onConfirm = { - time -> - selectedTime = time - showDialExample = false - }, - ) - showInputExample -> InputExample( - onDismiss = { showInputExample = false }, - onConfirm = { - time -> - selectedTime = time - showInputExample = false - }, - ) - showAdvancedExample -> AdvancedTimePickerExample( - onDismiss = { showAdvancedExample = false }, - onConfirm = { - time -> - selectedTime = time - showAdvancedExample = false - }, +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_input] +@Composable +fun InputExample( + onConfirm: () -> Unit, + onDismiss: () -> Unit, +) { + val currentTime = Calendar.getInstance() + + val timePickerState = rememberTimePickerState( + initialHour = currentTime.get(Calendar.HOUR_OF_DAY), + initialMinute = currentTime.get(Calendar.MINUTE), + is24Hour = true, + ) + + Column { + TimeInput( + state = timePickerState, ) + Button(onClick = onDismiss) { + Text("Dismiss picker") + } + Button(onClick = onConfirm) { + Text("Confirm selection") + } } } +// [END android_compose_components_input] @OptIn(ExperimentalMaterial3Api::class) -// [START android_compose_components_dial] +// [START android_compose_components_dial_usestate] @Composable -fun DialExample( +fun DialUseStateExample( onConfirm: (TimePickerState) -> Unit, onDismiss: () -> Unit, ) { @@ -144,22 +246,53 @@ fun DialExample( is24Hour = true, ) - // For information on how to implement a time picker dialog, see the "Dialogs for time pickers" guide. - TimePickerDialog( - onDismiss = { onDismiss() }, - onConfirm = { onConfirm(timePickerState) } - ) { + Column { TimePicker( state = timePickerState, ) + Button(onClick = onDismiss) { + Text("Dismiss picker") + } + Button(onClick = { onConfirm(timePickerState) }) { + Text("Confirm selection") + } } } -// [END android_compose_components_dial] +// [END android_compose_components_dial_usestate] @OptIn(ExperimentalMaterial3Api::class) -// [START android_compose_components_input] +// [START android_compose_components_input_usestate] @Composable -fun InputExample( +fun InputUseStateExample( + onConfirm: (TimePickerState) -> Unit, + onDismiss: () -> Unit, +) { + val currentTime = Calendar.getInstance() + + val timePickerState = rememberTimePickerState( + initialHour = currentTime.get(Calendar.HOUR_OF_DAY), + initialMinute = currentTime.get(Calendar.MINUTE), + is24Hour = true, + ) + + Column { + TimeInput( + state = timePickerState, + ) + Button(onClick = onDismiss) { + Text("Dismiss picker") + } + Button(onClick = { onConfirm(timePickerState) }) { + Text("Confirm selection") + } + } +} +// [END android_compose_components_input_usestate] + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_timepickerdialog] +@Composable +fun DialWithDialogExample( onConfirm: (TimePickerState) -> Unit, onDismiss: () -> Unit, ) { @@ -171,17 +304,38 @@ fun InputExample( is24Hour = true, ) - // For information on how to implement a time picker dialog, see the "Dialogs for time pickers" guide. TimePickerDialog( onDismiss = { onDismiss() }, onConfirm = { onConfirm(timePickerState) } ) { - TimeInput( + TimePicker( state = timePickerState, ) } } -// [END android_compose_components_input] + +@Composable +fun TimePickerDialog( + onDismiss: () -> Unit, + onConfirm: () -> Unit, + content: @Composable () -> Unit +) { + AlertDialog( + onDismissRequest = onDismiss, + dismissButton = { + TextButton(onClick = { onDismiss() }) { + Text("Dismiss") + } + }, + confirmButton = { + TextButton(onClick = { onConfirm() }) { + Text("OK") + } + }, + text = { content() } + ) +} +// [END android_compose_components_timepickerdialog] @OptIn(ExperimentalMaterial3Api::class) // [START android_compose_components_advanced] @@ -209,7 +363,6 @@ fun AdvancedTimePickerExample( Icons.Filled.AccessTime } - // For information on how to implement a time picker dialog, see the "Dialogs for time pickers" guide. AdvancedTimePickerDialog( onDismiss = { onDismiss() }, onConfirm = { onConfirm(timePickerState) }, @@ -233,33 +386,7 @@ fun AdvancedTimePickerExample( } } } -// [END android_compose_components_advanced] - -// [START android_compose_components_timepickerdialog] -@Composable -fun TimePickerDialog( - onDismiss: () -> Unit, - onConfirm: () -> Unit, - content: @Composable () -> Unit -) { - AlertDialog( - onDismissRequest = onDismiss, - dismissButton = { - TextButton(onClick = { onDismiss() }) { - Text("Dismiss") - } - }, - confirmButton = { - TextButton(onClick = { onConfirm() }) { - Text("OK") - } - }, - text = { content() } - ) -} -// [END android_compose_components_timepickerdialog] -// [START android_compose_components_advanceddialog] @Composable fun AdvancedTimePickerDialog( title: String = "Select Time", @@ -310,4 +437,4 @@ fun AdvancedTimePickerDialog( } } } -// [END android_compose_components_advanceddialog] +// [END android_compose_components_advanced] From e273661699880ab04ec52de5b6543a649310b0fc Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Thu, 1 Aug 2024 16:32:20 +0100 Subject: [PATCH 214/463] Date pickers (#302) * Reworking the time picker examples to be more friendly to copy-pasting * Apply Spotless * Updating the time picker examples to be more copy-pastable * Change in-use tag name back to the current form. * Apply Spotless * Renaming region tags * Renaming region tags * Adding date picker snippets * Apply Spotless * fixing region tags * Adding additional range tags --------- Co-authored-by: jakeroseman --- .../compose/snippets/SnippetsActivity.kt | 2 + .../snippets/components/DatePickers.kt | 315 ++++++++++++++++++ .../snippets/navigation/Destination.kt | 1 + 3 files changed, 318 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/DatePickers.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 2e5de2bcb..aaed49166 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -34,6 +34,7 @@ import com.example.compose.snippets.components.ButtonExamples import com.example.compose.snippets.components.CheckboxExamples import com.example.compose.snippets.components.ChipExamples import com.example.compose.snippets.components.ComponentsScreen +import com.example.compose.snippets.components.DatePickerExamples import com.example.compose.snippets.components.DialogExamples import com.example.compose.snippets.components.DividerExamples import com.example.compose.snippets.components.FloatingActionButtonExamples @@ -105,6 +106,7 @@ class SnippetsActivity : ComponentActivity() { TopComponentsDestination.BadgeExamples -> BadgeExamples() TopComponentsDestination.PartialBottomSheet -> PartialBottomSheet() TopComponentsDestination.TimePickerExamples -> TimePickerExamples() + TopComponentsDestination.DatePickerExamples -> DatePickerExamples() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/DatePickers.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/DatePickers.kt new file mode 100644 index 000000000..650b969a0 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/DatePickers.kt @@ -0,0 +1,315 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.DateRange +import androidx.compose.material3.Button +import androidx.compose.material3.DatePicker +import androidx.compose.material3.DatePickerDialog +import androidx.compose.material3.DateRangePicker +import androidx.compose.material3.DisplayMode +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.rememberDatePickerState +import androidx.compose.material3.rememberDateRangePickerState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.Popup +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale + +// [START android_compose_components_datepicker_examples] +// [START_EXCLUDE] +@Composable +fun DatePickerExamples() { + var showModal by remember { mutableStateOf(false) } + var showModalInput by remember { mutableStateOf(false) } + var showRangeModal by remember { mutableStateOf(false) } +// [END_EXCLUDE] + var selectedDate by remember { mutableStateOf(null) } +// [START_EXCLUDE] + var selectedDateRange by remember { mutableStateOf>(null to null) } + + Column( + modifier = Modifier + .fillMaxSize() + .padding(16.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + Text("Docked date picker:") + DatePickerDocked() + + Text("Modal date pickers:") + Button(onClick = { showModal = true }) { + Text("Show Modal Date Picker") + } + Button(onClick = { showModalInput = true }) { + Text("Show Modal Input Date Picker") + } +// [END_EXCLUDE] + if (selectedDate != null) { + val date = Date(selectedDate!!) + val formattedDate = SimpleDateFormat("MMM dd, yyyy", Locale.getDefault()).format(date) + Text("Selected date: $formattedDate") + } else { + Text("No date selected") + } +// [START_EXCLUDE] + + Text("Date range pickers:") + + Button(onClick = { showRangeModal = true }) { + Text("Show Modal Date Range Picker") + } + + if (selectedDateRange.first != null && selectedDateRange.second != null) { + val startDate = Date(selectedDateRange.first!!) + val endDate = Date(selectedDateRange.second!!) + val formattedStartDate = SimpleDateFormat("MMM dd, yyyy", Locale.getDefault()).format(startDate) + val formattedEndDate = SimpleDateFormat("MMM dd, yyyy", Locale.getDefault()).format(endDate) + Text("Selected date range: $formattedStartDate - $formattedEndDate") + } else { + Text("No date range selected") + } + } + + if (showModal) { +// [END_EXCLUDE] + DatePickerModal( + onDateSelected = { + selectedDate = it + showModal = false + }, + onDismiss = { showModal = false } + ) + } +// [START_EXCLUDE] + + if (showModalInput) { + DatePickerModalInput( + onDateSelected = { + selectedDate = it + showModalInput = false + }, + onDismiss = { showModalInput = false } + ) + } + + if (showRangeModal) { + DateRangePickerModal( + onDateRangeSelected = { + selectedDateRange = it + showRangeModal = false + }, + onDismiss = { showRangeModal = false } + ) + } +} +// [END android_compose_components_datepicker_examples] + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_datepicker_modal] +@Composable +fun DatePickerModal( + onDateSelected: (Long?) -> Unit, + onDismiss: () -> Unit +) { + val datePickerState = rememberDatePickerState() + + DatePickerDialog( + onDismissRequest = onDismiss, + confirmButton = { + TextButton(onClick = { + onDateSelected(datePickerState.selectedDateMillis) + onDismiss() + }) { + Text("OK") + } + }, + dismissButton = { + TextButton(onClick = onDismiss) { + Text("Cancel") + } + } + ) { + DatePicker(state = datePickerState) + } +} +// [END android_compose_components_datepicker_modal] + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_datepicker_inputmodal] +@Composable +fun DatePickerModalInput( + onDateSelected: (Long?) -> Unit, + onDismiss: () -> Unit +) { + val datePickerState = rememberDatePickerState(initialDisplayMode = DisplayMode.Input) + + DatePickerDialog( + onDismissRequest = onDismiss, + confirmButton = { + TextButton(onClick = { + onDateSelected(datePickerState.selectedDateMillis) + onDismiss() + }) { + Text("OK") + } + }, + dismissButton = { + TextButton(onClick = onDismiss) { + Text("Cancel") + } + } + ) { + DatePicker(state = datePickerState) + } +} +// [END android_compose_components_datepicker_inputmodal] + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_datepicker_docked] +@Composable +fun DatePickerDocked() { + var showDatePicker by remember { mutableStateOf(false) } + val datePickerState = rememberDatePickerState() + val selectedDate = datePickerState.selectedDateMillis?.let { + convertMillisToDate(it) + } ?: "" + + Box( + modifier = Modifier.fillMaxWidth() + ) { + OutlinedTextField( + value = selectedDate, + onValueChange = { }, + label = { Text("DOB") }, + readOnly = true, + trailingIcon = { + IconButton(onClick = { showDatePicker = !showDatePicker }) { + Icon( + imageVector = Icons.Default.DateRange, + contentDescription = "Select date" + ) + } + }, + modifier = Modifier + .fillMaxWidth() + .height(64.dp) + ) + + if (showDatePicker) { + Popup( + onDismissRequest = { showDatePicker = false }, + alignment = Alignment.TopStart + ) { + Box( + modifier = Modifier + .fillMaxWidth() + .offset(y = 64.dp) + .shadow(elevation = 4.dp) + .background(MaterialTheme.colorScheme.surface) + .padding(16.dp) + ) { + DatePicker( + state = datePickerState, + showModeToggle = false + ) + } + } + } + } +} + +fun convertMillisToDate(millis: Long): String { + val formatter = SimpleDateFormat("MM/dd/yyyy", Locale.getDefault()) + return formatter.format(Date(millis)) +} +// [END android_compose_components_datepicker_docked] + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_datepicker_range] +@Composable +fun DateRangePickerModal( + onDateRangeSelected: (Pair) -> Unit, + onDismiss: () -> Unit +) { + val dateRangePickerState = rememberDateRangePickerState() + + DatePickerDialog( + onDismissRequest = onDismiss, + confirmButton = { + TextButton( + onClick = { + onDateRangeSelected( + Pair( + dateRangePickerState.selectedStartDateMillis, + dateRangePickerState.selectedEndDateMillis + ) + ) + onDismiss() + } + ) { + Text("OK") + } + }, + dismissButton = { + TextButton(onClick = onDismiss) { + Text("Cancel") + } + } + ) { + DateRangePicker( + state = dateRangePickerState, + title = { + Text( + text = "Select date range" + ) + }, + showModeToggle = false, + modifier = Modifier + .fillMaxWidth() + .height(500.dp) + .padding(16.dp) + ) + } +} +// [END android_compose_components_datepicker_range] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index 5aefdbcb3..9007ba4df 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -42,4 +42,5 @@ enum class TopComponentsDestination(val route: String, val title: String) { BadgeExamples("badgeExamples", "Badges"), PartialBottomSheet("partialBottomSheets", "Partial Bottom Sheet"), TimePickerExamples("timePickerExamples", "Time Pickers"), + DatePickerExamples("datePickerExamples", "Date Pickers"), } From 822ac2d63545f4ff40ee4e4b815bd13eb74c760d Mon Sep 17 00:00:00 2001 From: Chiara Chiappini Date: Wed, 7 Aug 2024 15:20:31 +0100 Subject: [PATCH 215/463] Break long instruction in 2 lines to optimize for DAC --- wear/src/main/java/com/example/wear/snippets/list/List.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wear/src/main/java/com/example/wear/snippets/list/List.kt b/wear/src/main/java/com/example/wear/snippets/list/List.kt index 98cf8d187..962bee0ab 100644 --- a/wear/src/main/java/com/example/wear/snippets/list/List.kt +++ b/wear/src/main/java/com/example/wear/snippets/list/List.kt @@ -15,6 +15,7 @@ */ package com.example.wear.snippets.list + import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Build import androidx.compose.runtime.Composable @@ -107,7 +108,9 @@ fun SnapAndFlingComposeList() { const val LARGE_DISPLAY_BREAKPOINT = 225 @Composable -fun isLargeDisplay() = LocalConfiguration.current.screenWidthDp >= LARGE_DISPLAY_BREAKPOINT +fun isLargeDisplay() = + LocalConfiguration.current.screenWidthDp >= LARGE_DISPLAY_BREAKPOINT + // [START_EXCLUDE] @Composable fun breakpointDemo() { From 5ca7f540426f135a983c16cf481ba0878f00c465 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Mlynari=C4=8D?= Date: Thu, 8 Aug 2024 12:27:18 +0200 Subject: [PATCH 216/463] Prevent redrawing twice and running timer when compositions =0 (#304) --- .../compose/recomposehighlighter/RecomposeHighlighter.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt b/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt index 6638a7fa6..fdcbbda30 100644 --- a/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt +++ b/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt @@ -73,7 +73,7 @@ private class RecomposeHighlighterModifier : Modifier.Node(), DrawModifierNode { private var totalCompositions: Long = 0 set(value) { if (field == value) return - restartTimer() + if (value > 0) restartTimer() field = value invalidateDraw() } @@ -103,7 +103,6 @@ private class RecomposeHighlighterModifier : Modifier.Node(), DrawModifierNode { timerJob = coroutineScope.launch { delay(3000) totalCompositions = 0 - invalidateDraw() } } From 1a6cb36c4bfc4e5c179333e436c8940b612303ba Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Thu, 15 Aug 2024 18:16:14 +0100 Subject: [PATCH 217/463] Allow Spotless to make commits on a user's behalf (#312) See https://github.com/diffplug/spotless/issues/1242 --- .github/workflows/apply_spotless.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/apply_spotless.yml b/.github/workflows/apply_spotless.yml index 0ab863010..db01dad52 100644 --- a/.github/workflows/apply_spotless.yml +++ b/.github/workflows/apply_spotless.yml @@ -33,6 +33,7 @@ jobs: uses: actions/checkout@v4 with: token: ${{ secrets.PAT || github.token }} + fetch-depth: 0 - name: set up Java 17 uses: actions/setup-java@v4 From 1dbad15e0e40bd2ca08d11e1ef37c1fcc9948fd8 Mon Sep 17 00:00:00 2001 From: Ben Trengrove Date: Thu, 29 Aug 2024 07:54:10 +1200 Subject: [PATCH 218/463] Migrate CompositionLocal snippets to m3 (#321) --- .../state/CompositionLocalSnippets.kt | 50 +++++++++++-------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/state/CompositionLocalSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/state/CompositionLocalSnippets.kt index d81fc2cec..a2c2aa6dc 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/state/CompositionLocalSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/state/CompositionLocalSnippets.kt @@ -21,14 +21,13 @@ import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Column -import androidx.compose.material.Button -import androidx.compose.material.Card -import androidx.compose.material.Colors -import androidx.compose.material.ContentAlpha -import androidx.compose.material.LocalContentAlpha -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Text -import androidx.compose.material.lightColors +import androidx.compose.material3.Button +import androidx.compose.material3.ColorScheme +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.compositionLocalOf @@ -67,7 +66,7 @@ object CompositionLocalSnippets2 { fun MyApp() { // Provides a Theme whose values are propagated down its `content` MaterialTheme { - // New values for colors, typography, and shapes are available + // New values for colorScheme, typography, and shapes are available // in MaterialTheme's content lambda. // ... content here ... @@ -81,7 +80,7 @@ object CompositionLocalSnippets2 { text = labelText, // `primary` is obtained from MaterialTheme's // LocalColors CompositionLocal - color = MaterialTheme.colors.primary + color = MaterialTheme.colorScheme.primary ) } // [END android_compose_state_compositionlocal2] @@ -91,14 +90,19 @@ object CompositionLocalSnippets3 { // [START android_compose_state_compositionlocal3] @Composable fun CompositionLocalExample() { - MaterialTheme { // MaterialTheme sets ContentAlpha.high as default - Column { - Text("Uses MaterialTheme's provided alpha") - CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) { - Text("Medium value provided for LocalContentAlpha") - Text("This Text also uses the medium value") - CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.disabled) { - DescendantExample() + MaterialTheme { + // Surface provides contentColorFor(MaterialTheme.colorScheme.surface) by default + // This is to automatically make text and other content contrast to the background + // correctly. + Surface { + Column { + Text("Uses Surface's provided content color") + CompositionLocalProvider(LocalContentColor provides MaterialTheme.colorScheme.primary) { + Text("Primary color provided by LocalContentColor") + Text("This Text also uses primary as textColor") + CompositionLocalProvider(LocalContentColor provides MaterialTheme.colorScheme.error) { + DescendantExample() + } } } } @@ -108,7 +112,7 @@ object CompositionLocalSnippets3 { @Composable fun DescendantExample() { // CompositionLocalProviders also work across composable functions - Text("This Text uses the disabled alpha now") + Text("This Text uses the error color now") } // [END android_compose_state_compositionlocal3] } @@ -169,11 +173,15 @@ object CompositionLocalSnippets5_6_7 { fun SomeComposable() { // Access the globally defined LocalElevations variable to get the // current Elevations in this part of the Composition - Card(elevation = LocalElevations.current.card) { + MyCard(elevation = LocalElevations.current.card) { // Content } } // [END android_compose_state_compositionlocal7] + + @Composable + fun MyCard(elevation: Dp, content: @Composable () -> Unit) { + } } object CompositionLocalSnippets8 { @@ -267,7 +275,7 @@ object CompositionLocalSnippets11 { /*** * Fakes */ -fun colors(): Colors = lightColors() +fun colors(): ColorScheme = lightColorScheme() data class DataToDisplay(val title: String) class MyViewModel : ViewModel() { From 5bbe6402691d75a16634d5e23d4a2ac16ede9b3d Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 3 Sep 2024 08:40:06 +0100 Subject: [PATCH 219/463] Migrate Custom design system page to M3 (#325) * Migrate Custom design system page to M3 * Apply Spotless --------- Co-authored-by: riggaroo --- .../designsystems/CustomDesignSystem.kt | 47 +++++++------------ 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/CustomDesignSystem.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/CustomDesignSystem.kt index c9489e455..fd864ac3d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/CustomDesignSystem.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/CustomDesignSystem.kt @@ -16,13 +16,13 @@ package com.example.compose.snippets.designsystems +import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.ZeroCornerSize -import androidx.compose.material.Colors -import androidx.compose.material.ContentAlpha import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.ColorScheme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ProvideTextStyle import androidx.compose.material3.Shapes @@ -38,28 +38,13 @@ import androidx.compose.ui.text.TextStyle import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.example.compose.snippets.designsystems.FullyCustomDesignSystem.CustomTheme.elevation -/* -* Copyright 2022 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ private object CustomDesignSystemExtend { // [START android_compose_designsystems_custom_extend] - // Use with MaterialTheme.colors.snackbarAction - val Colors.snackbarAction: Color - get() = if (isLight) Red300 else Red700 + // Use with MaterialTheme.colorScheme.snackbarAction + val ColorScheme.snackbarAction: Color + @Composable + get() = if (isSystemInDarkTheme()) Red300 else Red700 // Use with MaterialTheme.typography.textFieldInput val Typography.textFieldInput: TextStyle @@ -78,14 +63,14 @@ private object CustomDesignSystemExtendTheme { // [START android_compose_designsystems_custom_extend_theme] @Immutable data class ExtendedColors( - val tertiary: Color, - val onTertiary: Color + val caution: Color, + val onCaution: Color ) val LocalExtendedColors = staticCompositionLocalOf { ExtendedColors( - tertiary = Color.Unspecified, - onTertiary = Color.Unspecified + caution = Color.Unspecified, + onCaution = Color.Unspecified ) } @@ -95,8 +80,8 @@ private object CustomDesignSystemExtendTheme { content: @Composable () -> Unit ) { val extendedColors = ExtendedColors( - tertiary = Color(0xFFA8EFF0), - onTertiary = Color(0xFF002021) + caution = Color(0xFFFFCC02), + onCaution = Color(0xFF2C2D30) ) CompositionLocalProvider(LocalExtendedColors provides extendedColors) { MaterialTheme( @@ -106,7 +91,7 @@ private object CustomDesignSystemExtendTheme { } } - // Use with eg. ExtendedTheme.colors.tertiary + // Use with eg. ExtendedTheme.colors.caution object ExtendedTheme { val colors: ExtendedColors @Composable @@ -123,8 +108,8 @@ private object CustomDesignSystemExtendTheme { ) { Button( colors = ButtonDefaults.buttonColors( - containerColor = ExtendedTheme.colors.tertiary, - contentColor = ExtendedTheme.colors.onTertiary + containerColor = ExtendedTheme.colors.caution, + contentColor = ExtendedTheme.colors.onCaution /* Other colors use values from MaterialTheme */ ), onClick = onClick, @@ -340,7 +325,7 @@ object FullyCustomDesignSystem { .copy(alpha = 0.12f) .compositeOver(CustomTheme.colors.component), disabledContentColor = CustomTheme.colors.content - .copy(alpha = ContentAlpha.disabled) + .copy(alpha = 0.38f) ), shape = ButtonShape, elevation = ButtonDefaults.elevatedButtonElevation( From 298923759c9efc7c55a7723a095fe7c17471c107 Mon Sep 17 00:00:00 2001 From: Chiara Chiappini Date: Thu, 5 Sep 2024 11:06:50 +0100 Subject: [PATCH 220/463] Remote special handling for rotary for SLC --- gradle/libs.versions.toml | 4 +-- .../example/wear/snippets/rotary/Rotary.kt | 35 ------------------- 2 files changed, 2 insertions(+), 37 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ad1f77a30..cccf9af43 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -46,8 +46,8 @@ recyclerview = "1.3.2" # @keep targetSdk = "34" version-catalog-update = "0.8.3" -wearComposeFoundation = "1.3.0" -wearComposeMaterial = "1.3.0" +wearComposeFoundation = "1.4.0" +wearComposeMaterial = "1.4.0" composeUiTooling = "1.3.1" [libraries] diff --git a/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt b/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt index 92f84673e..52fe2a79e 100644 --- a/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt +++ b/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt @@ -58,45 +58,10 @@ import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices import androidx.wear.compose.ui.tooling.preview.WearPreviewFontScales import kotlinx.coroutines.launch -@OptIn(ExperimentalWearFoundationApi::class) @Composable fun ScrollableScreen() { // This sample doesn't add a Time Text at the top of the screen. // If using Time Text, add padding to ensure content does not overlap with Time Text. - // [START android_wear_rotary_input] - val listState = rememberScalingLazyListState() - Scaffold( - positionIndicator = { - PositionIndicator(scalingLazyListState = listState) - } - ) { - - val focusRequester = rememberActiveFocusRequester() - val coroutineScope = rememberCoroutineScope() - - ScalingLazyColumn( - modifier = Modifier - .onRotaryScrollEvent { - coroutineScope.launch { - listState.scrollBy(it.verticalScrollPixels) - listState.animateScrollBy(0f) - } - true - } - .focusRequester(focusRequester) - .focusable() - .fillMaxSize(), - state = listState - ) { - // Content goes here - // [START_EXCLUDE] - items(count = 5) { - Chip(onClick = { }, label = { Text("Item #$it") }) - } - // [END_EXCLUDE] - } - } - // [END android_wear_rotary_input] } @OptIn(ExperimentalComposeUiApi::class) From 5bcb6851435b968f5cd7179d585811d8eaea2873 Mon Sep 17 00:00:00 2001 From: Chiara Chiappini Date: Thu, 5 Sep 2024 12:44:58 +0100 Subject: [PATCH 221/463] adds sample for snap, removes picker --- .../example/wear/snippets/rotary/Rotary.kt | 161 +++--------------- 1 file changed, 25 insertions(+), 136 deletions(-) diff --git a/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt b/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt index 52fe2a79e..29b02e1e2 100644 --- a/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt +++ b/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt @@ -16,157 +16,53 @@ package com.example.wear.snippets.rotary -import android.view.MotionEvent -import androidx.compose.foundation.focusable -import androidx.compose.foundation.gestures.animateScrollBy -import androidx.compose.foundation.gestures.scrollBy -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.derivedStateOf -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableIntStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier -import androidx.compose.ui.focus.FocusRequester -import androidx.compose.ui.focus.focusRequester -import androidx.compose.ui.input.pointer.pointerInteropFilter -import androidx.compose.ui.input.rotary.onRotaryScrollEvent -import androidx.compose.ui.unit.dp -import androidx.wear.compose.foundation.ExperimentalWearFoundationApi import androidx.wear.compose.foundation.lazy.ScalingLazyColumn +import androidx.wear.compose.foundation.lazy.ScalingLazyColumnDefaults import androidx.wear.compose.foundation.lazy.rememberScalingLazyListState -import androidx.wear.compose.foundation.rememberActiveFocusRequester import androidx.wear.compose.material.Chip -import androidx.wear.compose.material.MaterialTheme -import androidx.wear.compose.material.Picker +import androidx.wear.compose.material.ChipDefaults +import androidx.wear.compose.material.ListHeader import androidx.wear.compose.material.PositionIndicator import androidx.wear.compose.material.Scaffold import androidx.wear.compose.material.Text -import androidx.wear.compose.material.rememberPickerState import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices import androidx.wear.compose.ui.tooling.preview.WearPreviewFontScales -import kotlinx.coroutines.launch @Composable fun ScrollableScreen() { // This sample doesn't add a Time Text at the top of the screen. // If using Time Text, add padding to ensure content does not overlap with Time Text. -} - -@OptIn(ExperimentalComposeUiApi::class) -@Composable -fun TimePicker() { - val textStyle = MaterialTheme.typography.display1 - - // [START android_wear_rotary_input_picker] - var selectedColumn by remember { mutableIntStateOf(0) } - - val hoursFocusRequester = remember { FocusRequester() } - val minutesRequester = remember { FocusRequester() } - // [START_EXCLUDE] - val coroutineScope = rememberCoroutineScope() + // [START android_wear_rotary_input_snap_fling] + val listState = rememberScalingLazyListState() + Scaffold( + positionIndicator = { + PositionIndicator(scalingLazyListState = listState) + } + ) { - @Composable - fun Option(column: Int, text: String) = Box(modifier = Modifier.fillMaxSize()) { - Text( - text = text, style = textStyle, - color = if (selectedColumn == column) MaterialTheme.colors.secondary - else MaterialTheme.colors.onBackground, - modifier = Modifier - .pointerInteropFilter { - if (it.action == MotionEvent.ACTION_DOWN) selectedColumn = column - true - } - ) - } - // [END_EXCLUDE] - Scaffold(modifier = Modifier.fillMaxSize()) { - Row( - // [START_EXCLUDE] - modifier = Modifier.fillMaxSize(), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.Center, - // [END_EXCLUDE] - // ... + val state = rememberScalingLazyListState() + ScalingLazyColumn( + modifier = Modifier.fillMaxWidth(), + state = state, + flingBehavior = ScalingLazyColumnDefaults.snapFlingBehavior(state = state) ) { + // Content goes here // [START_EXCLUDE] - val hourState = rememberPickerState( - initialNumberOfOptions = 12, - initiallySelectedOption = 5 - ) - val hourContentDescription by remember { - derivedStateOf { "${hourState.selectedOption + 1 } hours" } + item { ListHeader { Text(text = "List Header") } } + items(20) { + Chip( + onClick = {}, + label = { Text("List item $it") }, + colors = ChipDefaults.secondaryChipColors() + ) } // [END_EXCLUDE] - Picker( - readOnly = selectedColumn != 0, - modifier = Modifier.size(64.dp, 100.dp) - .onRotaryScrollEvent { - coroutineScope.launch { - hourState.scrollBy(it.verticalScrollPixels) - } - true - } - .focusRequester(hoursFocusRequester) - .focusable(), - onSelected = { selectedColumn = 0 }, - // ... - // [START_EXCLUDE] - state = hourState, - contentDescription = hourContentDescription, - option = { hour: Int -> Option(0, "%2d".format(hour + 1)) } - // [END_EXCLUDE] - ) - // [START_EXCLUDE] - Spacer(Modifier.width(8.dp)) - Text(text = ":", style = textStyle, color = MaterialTheme.colors.onBackground) - Spacer(Modifier.width(8.dp)) - val minuteState = - rememberPickerState(initialNumberOfOptions = 60, initiallySelectedOption = 0) - val minuteContentDescription by remember { - derivedStateOf { "${minuteState.selectedOption} minutes" } - } - // [END_EXCLUDE] - Picker( - readOnly = selectedColumn != 1, - modifier = Modifier.size(64.dp, 100.dp) - .onRotaryScrollEvent { - coroutineScope.launch { - minuteState.scrollBy(it.verticalScrollPixels) - } - true - } - .focusRequester(minutesRequester) - .focusable(), - onSelected = { selectedColumn = 1 }, - // ... - // [START_EXCLUDE] - state = minuteState, - contentDescription = minuteContentDescription, - option = { minute: Int -> Option(1, "%02d".format(minute)) } - // [END_EXCLUDE] - ) - LaunchedEffect(selectedColumn) { - listOf( - hoursFocusRequester, - minutesRequester - )[selectedColumn] - .requestFocus() - } } } - // [END android_wear_rotary_input_picker] + // [END android_wear_rotary_input_snap_fling] } @WearPreviewDevices @@ -175,10 +71,3 @@ fun TimePicker() { fun ScrollableScreenPreview() { ScrollableScreen() } - -@WearPreviewDevices -@WearPreviewFontScales -@Composable -fun TimePickerPreview() { - TimePicker() -} From 434f4772db483dcdef74559667eb9376da72f428 Mon Sep 17 00:00:00 2001 From: Chiara Chiappini Date: Thu, 5 Sep 2024 13:04:27 +0100 Subject: [PATCH 222/463] readds the previous samples to not cause issues on DAC while updating --- .../example/wear/snippets/rotary/Rotary.kt | 177 ++++++++++++++++++ 1 file changed, 177 insertions(+) diff --git a/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt b/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt index 29b02e1e2..3b999dfb7 100644 --- a/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt +++ b/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt @@ -16,23 +16,200 @@ package com.example.wear.snippets.rotary +import android.view.MotionEvent +import androidx.compose.foundation.focusable +import androidx.compose.foundation.gestures.animateScrollBy +import androidx.compose.foundation.gestures.scrollBy +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.input.pointer.pointerInteropFilter +import androidx.compose.ui.input.rotary.onRotaryScrollEvent +import androidx.compose.ui.unit.dp +import androidx.wear.compose.foundation.ExperimentalWearFoundationApi import androidx.wear.compose.foundation.lazy.ScalingLazyColumn import androidx.wear.compose.foundation.lazy.ScalingLazyColumnDefaults import androidx.wear.compose.foundation.lazy.rememberScalingLazyListState +import androidx.wear.compose.foundation.rememberActiveFocusRequester import androidx.wear.compose.material.Chip import androidx.wear.compose.material.ChipDefaults import androidx.wear.compose.material.ListHeader +import androidx.wear.compose.material.MaterialTheme +import androidx.wear.compose.material.Picker import androidx.wear.compose.material.PositionIndicator import androidx.wear.compose.material.Scaffold import androidx.wear.compose.material.Text +import androidx.wear.compose.material.rememberPickerState import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices import androidx.wear.compose.ui.tooling.preview.WearPreviewFontScales +import kotlinx.coroutines.launch +@OptIn(ExperimentalWearFoundationApi::class) @Composable fun ScrollableScreen() { + // This sample doesn't add a Time Text at the top of the screen. + // If using Time Text, add padding to ensure content does not overlap with Time Text. + // [START android_wear_rotary_input] + val listState = rememberScalingLazyListState() + Scaffold( + positionIndicator = { + PositionIndicator(scalingLazyListState = listState) + } + ) { + + val focusRequester = rememberActiveFocusRequester() + val coroutineScope = rememberCoroutineScope() + + ScalingLazyColumn( + modifier = Modifier + .onRotaryScrollEvent { + coroutineScope.launch { + listState.scrollBy(it.verticalScrollPixels) + listState.animateScrollBy(0f) + } + true + } + .focusRequester(focusRequester) + .focusable() + .fillMaxSize(), + state = listState + ) { + // Content goes here + // [START_EXCLUDE] + items(count = 5) { + Chip(onClick = { }, label = { Text("Item #$it") }) + } + // [END_EXCLUDE] + } + } + // [END android_wear_rotary_input] +} + +@OptIn(ExperimentalComposeUiApi::class) +@Composable +fun TimePicker() { + val textStyle = MaterialTheme.typography.display1 + + // [START android_wear_rotary_input_picker] + var selectedColumn by remember { mutableIntStateOf(0) } + + val hoursFocusRequester = remember { FocusRequester() } + val minutesRequester = remember { FocusRequester() } + // [START_EXCLUDE] + val coroutineScope = rememberCoroutineScope() + + @Composable + fun Option(column: Int, text: String) = Box(modifier = Modifier.fillMaxSize()) { + Text( + text = text, style = textStyle, + color = if (selectedColumn == column) MaterialTheme.colors.secondary + else MaterialTheme.colors.onBackground, + modifier = Modifier + .pointerInteropFilter { + if (it.action == MotionEvent.ACTION_DOWN) selectedColumn = column + true + } + ) + } + // [END_EXCLUDE] + Scaffold(modifier = Modifier.fillMaxSize()) { + Row( + // [START_EXCLUDE] + modifier = Modifier.fillMaxSize(), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Center, + // [END_EXCLUDE] + // ... + ) { + // [START_EXCLUDE] + val hourState = rememberPickerState( + initialNumberOfOptions = 12, + initiallySelectedOption = 5 + ) + val hourContentDescription by remember { + derivedStateOf { "${hourState.selectedOption + 1 } hours" } + } + // [END_EXCLUDE] + Picker( + readOnly = selectedColumn != 0, + modifier = Modifier.size(64.dp, 100.dp) + .onRotaryScrollEvent { + coroutineScope.launch { + hourState.scrollBy(it.verticalScrollPixels) + } + true + } + .focusRequester(hoursFocusRequester) + .focusable(), + onSelected = { selectedColumn = 0 }, + // ... + // [START_EXCLUDE] + state = hourState, + contentDescription = hourContentDescription, + option = { hour: Int -> Option(0, "%2d".format(hour + 1)) } + // [END_EXCLUDE] + ) + // [START_EXCLUDE] + Spacer(Modifier.width(8.dp)) + Text(text = ":", style = textStyle, color = MaterialTheme.colors.onBackground) + Spacer(Modifier.width(8.dp)) + val minuteState = + rememberPickerState(initialNumberOfOptions = 60, initiallySelectedOption = 0) + val minuteContentDescription by remember { + derivedStateOf { "${minuteState.selectedOption} minutes" } + } + // [END_EXCLUDE] + Picker( + readOnly = selectedColumn != 1, + modifier = Modifier.size(64.dp, 100.dp) + .onRotaryScrollEvent { + coroutineScope.launch { + minuteState.scrollBy(it.verticalScrollPixels) + } + true + } + .focusRequester(minutesRequester) + .focusable(), + onSelected = { selectedColumn = 1 }, + // ... + // [START_EXCLUDE] + state = minuteState, + contentDescription = minuteContentDescription, + option = { minute: Int -> Option(1, "%02d".format(minute)) } + // [END_EXCLUDE] + ) + LaunchedEffect(selectedColumn) { + listOf( + hoursFocusRequester, + minutesRequester + )[selectedColumn] + .requestFocus() + } + } + } + // [END android_wear_rotary_input_picker] +} + +@Composable +fun SnapScrollableScreen() { // This sample doesn't add a Time Text at the top of the screen. // If using Time Text, add padding to ensure content does not overlap with Time Text. // [START android_wear_rotary_input_snap_fling] From 23712af0c03b9f2754b7e11ce3d342a1c6e48144 Mon Sep 17 00:00:00 2001 From: Chiara Chiappini Date: Thu, 5 Sep 2024 13:09:03 +0100 Subject: [PATCH 223/463] adds all previews --- .../com/example/wear/snippets/rotary/Rotary.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt b/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt index 3b999dfb7..4668c7fec 100644 --- a/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt +++ b/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt @@ -242,9 +242,23 @@ fun SnapScrollableScreen() { // [END android_wear_rotary_input_snap_fling] } +@WearPreviewDevices +@WearPreviewFontScales +@Composable +fun TimePickerPreview() { + TimePicker() +} + @WearPreviewDevices @WearPreviewFontScales @Composable fun ScrollableScreenPreview() { ScrollableScreen() } + +@WearPreviewDevices +@WearPreviewFontScales +@Composable +fun SnapScrollableScreenPreview() { + SnapScrollableScreen() +} From 14f817b2b9d4aabbe04ee8bc7c4eac0ac6ad0ca7 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Fri, 6 Sep 2024 11:16:26 +0100 Subject: [PATCH 224/463] Latest -> Main (#322) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add snippets for Indication and Ripple migration (#191) * Add ripple snippets. * Add new ripple APIs. * Add snippets for interactions. * Added more ripple snippets. * Update foundation and material to 1.7.0-alpha01 * Fix snippet tag. * Apply Spotless --------- Co-authored-by: arriolac * Convert NeonIndication to data class. (#193) * Adding pip snippets to latest branch (#196) * Adding pip snippets to latest branch * Apply Spotless * Adding pip snippets to latest --------- Co-authored-by: MagicalMeghan * Delete pictureInPicture. (#213) * Update activity compose level and align log tag with main branch (#215) * Migrate recomposeHighlighter to Modifier.Node (#197) (#238) * Migrate recomposeHighlighter to Modifier.Node * Apply Spotless * Simplify recompose highlighter * Apply Spotless --------- Co-authored-by: Tomáš Mlynarič Co-authored-by: mlykotom * Adding samples for ContextualFlowRow (#234) * Add snippets for ContextualFlowRow * Apply Spotless * Update flow snippets * Apply Spotless --------- Co-authored-by: riggaroo * Update libs.versions.toml (#247) (#248) Update Compose BOM to 2024.04.00 Co-authored-by: MagicalMeghan <46006059+MagicalMeghan@users.noreply.github.com> * Update Bitmap to image snippet to use new Graphics Layers (#254) * Update libs.versions.toml (#251) * Replace Graphics bitmap snippets with new Graphics Layer snippets. * Replace Graphics bitmap snippets with new Graphics Layer snippets. * Apply Spotless --------- Co-authored-by: Simona <35065668+simona-anomis@users.noreply.github.com> Co-authored-by: riggaroo * add shared element snippets * Apply Spotless * Split snippets into different files. * Apply Spotless * Shared element snippets (#256) * add shared element snippets * Apply Spotless * Split snippets into different files. * Apply Spotless --------- Co-authored-by: riggaroo * Update libs.versions.toml (#251) (#252) Co-authored-by: Simona <35065668+simona-anomis@users.noreply.github.com> * Snippet updates based on peer feedback. * Shared element snippets (#258) * add shared element snippets * Apply Spotless * Split snippets into different files. * Apply Spotless * Snippet updates based on peer feedback. * Apply Spotless --------- Co-authored-by: riggaroo * Unique key snippet * Update SharedElementsWithNavigationSnippets.kt * Update AsyncImage snippet * Add placeholder size example * Add comment to snippet about unmatched bounds * 🤖 Sync main to latest (#259) * Update libs.versions.toml (#251) * Updated ListDetailPaneScaffold use to alpha12 (#255) This eliminates storing state outside and directly uses the navigator as the source of truth. This also gets rid of the Modifier for AnimatedPane as it's no longer a required argument. * Added NavigationSuiteScaffold snippets (#261) * Added NavigationSuiteScaffold snippets * Apply Spotless * 🤖 Update Dependencies (#262) * Added snippets for SupportingPaneScaffold (#260) * Added snippets for SupportingPaneScaffold * Apply Spotless * Update compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleSupportingPaneScaffold.kt * Migrate to material3-adaptive WindowSizeClass method (#264) * Migrate to material3-adaptive WindowSizeClass method * Update comments to be single line * Apply Spotless --------- Co-authored-by: Simona <35065668+simona-anomis@users.noreply.github.com> Co-authored-by: Ian G. Clifton <1033551+IanGClifton@users.noreply.github.com> Co-authored-by: Alex Vanyo Co-authored-by: compose-devrel-github-bot * Update to new lazy list snippets. (#265) * Compose - beta01 (#270) * Update to new beta01 version * Apply Spotless * Update shared element text composable * Apply Spotless --------- Co-authored-by: riggaroo * Added snippet for AnimatedVisibility usage with Shared elements (#272) * Added AnimatedVisibility shared element examples. * Apply Spotless * Switch to using LazyColumn instead of Grid as it has better animation support at present. * Apply Spotless * Fixed import. * Apply Spotless * Seperate samples into different files, simplify snippet. * Apply Spotless --------- Co-authored-by: riggaroo * Add clickable text snippets (#297) * 🤖 Sync main to latest (#266) * Update CenterAlignedTopAppBar snippet to use centerAlignedTopAppBarColors * Time pickers comments (#295) * Adding advanced examples * Apply Spotless * Adding advanced examples * Rename AdvancedTimePickerExample * Rename AdvancedTimePickerExample --------- Co-authored-by: jakeroseman * Adds preview and breakpoint --------- Co-authored-by: Jamal Eason Co-authored-by: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Co-authored-by: jakeroseman Co-authored-by: Kat Kuan <843428+kkuan2011@users.noreply.github.com> Co-authored-by: Chiara Chiappini Co-authored-by: Chiara Chiappini * 🤖 Sync main to latest (#301) * Update CenterAlignedTopAppBar snippet to use centerAlignedTopAppBarColors * Time pickers comments (#295) * Adding advanced examples * Apply Spotless * Adding advanced examples * Rename AdvancedTimePickerExample * Rename AdvancedTimePickerExample --------- Co-authored-by: jakeroseman * Adds preview and breakpoint * Updating DeviceConfigurationOverride snippet comment (#232) * Timepickers redux (#296) * Reworking the time picker examples to be more friendly to copy-pasting * Apply Spotless * Updating the time picker examples to be more copy-pastable * Change in-use tag name back to the current form. * Apply Spotless * Renaming region tags * Renaming region tags --------- Co-authored-by: jakeroseman * Date pickers (#302) * Reworking the time picker examples to be more friendly to copy-pasting * Apply Spotless * Updating the time picker examples to be more copy-pastable * Change in-use tag name back to the current form. * Apply Spotless * Renaming region tags * Renaming region tags * Adding date picker snippets * Apply Spotless * fixing region tags * Adding additional range tags --------- Co-authored-by: jakeroseman * Break long instruction in 2 lines to optimize for DAC * Prevent redrawing twice and running timer when compositions =0 (#304) --------- Co-authored-by: Jamal Eason Co-authored-by: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Co-authored-by: jakeroseman Co-authored-by: Kat Kuan <843428+kkuan2011@users.noreply.github.com> Co-authored-by: Chiara Chiappini Co-authored-by: Chiara Chiappini Co-authored-by: Alex Vanyo Co-authored-by: Tomáš Mlynarič * Snippet updates for type safe navigation APIs * Downgrade compileSdk to 34 * 🤖 Sync main to latest (#313) * Update CenterAlignedTopAppBar snippet to use centerAlignedTopAppBarColors * Time pickers comments (#295) * Adding advanced examples * Apply Spotless * Adding advanced examples * Rename AdvancedTimePickerExample * Rename AdvancedTimePickerExample --------- Co-authored-by: jakeroseman * Adds preview and breakpoint * Updating DeviceConfigurationOverride snippet comment (#232) * Timepickers redux (#296) * Reworking the time picker examples to be more friendly to copy-pasting * Apply Spotless * Updating the time picker examples to be more copy-pastable * Change in-use tag name back to the current form. * Apply Spotless * Renaming region tags * Renaming region tags --------- Co-authored-by: jakeroseman * Date pickers (#302) * Reworking the time picker examples to be more friendly to copy-pasting * Apply Spotless * Updating the time picker examples to be more copy-pastable * Change in-use tag name back to the current form. * Apply Spotless * Renaming region tags * Renaming region tags * Adding date picker snippets * Apply Spotless * fixing region tags * Adding additional range tags --------- Co-authored-by: jakeroseman * Break long instruction in 2 lines to optimize for DAC * Prevent redrawing twice and running timer when compositions =0 (#304) * Allow Spotless to make commits on a user's behalf (#312) See https://github.com/diffplug/spotless/issues/1242 --------- Co-authored-by: Jamal Eason Co-authored-by: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Co-authored-by: jakeroseman Co-authored-by: Kat Kuan <843428+kkuan2011@users.noreply.github.com> Co-authored-by: Chiara Chiappini Co-authored-by: Chiara Chiappini Co-authored-by: Alex Vanyo Co-authored-by: Tomáš Mlynarič Co-authored-by: Jolanda Verhoef * Latest beta06 updates for Compose (#300) * Do latest 1.7.0-beta06 version updates * Apply Spotless * Code cleanup * Apply Spotless * Fix broken test * Fix tests --------- Co-authored-by: riggaroo * Migrate CompositionLocal snippets to m3 (#321) (#323) Co-authored-by: Ben Trengrove * Update snippets to use material3-adaptive rc01 (#324) * Migrate many snippets to use Material 3 instead of Material 2. (#320) * Do latest 1.7.0-beta06 version updates * Apply Spotless * Code cleanup * Apply Spotless * Fix broken test * Remove M2 usage from many snippets. * Apply Spotless * Remove M2 usage from many snippets. * Remove M2 usage from many snippets. * Revert incorrect commit --------- Co-authored-by: riggaroo * Revert shape changes for now. * Fix text snippets in latest (#326) * Fix text snippets in latest * Apply Spotless * 🤖 Sync main to latest (#327) * Migrate CompositionLocal snippets to m3 (#321) * Migrate Custom design system page to M3 (#325) * Migrate Custom design system page to M3 * Apply Spotless --------- Co-authored-by: riggaroo --------- Co-authored-by: Ben Trengrove Co-authored-by: Rebecca Franks Co-authored-by: riggaroo * Updating DeviceConfigurationOverride snippet comment (#232) (cherry picked from commit a84c80d425b31d72444a4d7157614899ee7df164) * Bump actions/checkout from 3 to 4 (#222) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 2f34f3b1f916f41d7c3b84286b24a9e1d57951f6) * Create dependabot.yml (#218) (cherry picked from commit db5ffc06e07c4830fbc362517680935b1ebd78c6) * Bump stefanzweifel/git-auto-commit-action from 4 to 5 (#221) Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 4 to 5. - [Release notes](https://github.com/stefanzweifel/git-auto-commit-action/releases) - [Changelog](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/CHANGELOG.md) - [Commits](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4...v5) --- updated-dependencies: - dependency-name: stefanzweifel/git-auto-commit-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit d8ef2dd19f25b74bdbbd5e78f96cdfb30be61a3c) * Bump actions/setup-java from 2 to 4 (#220) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 2 to 4. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v2...v4) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit cea0c7d4d7e3157ab751870cce0212f3dff2700a) * Set git config user for sync_main_latest workflow. (#230) * Set git config user for sync_main_latest workflow. * Update PR description. (cherry picked from commit ad9ffb0f36a9aaa35c57690430dca98f97c021d5) * Fix merge * Fix merge * Apply Spotless * Fix merge --------- Co-authored-by: Chris Arriola Co-authored-by: arriolac Co-authored-by: MagicalMeghan <46006059+MagicalMeghan@users.noreply.github.com> Co-authored-by: MagicalMeghan Co-authored-by: compose-devrel-github-bot Co-authored-by: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Co-authored-by: Tomáš Mlynarič Co-authored-by: mlykotom Co-authored-by: riggaroo Co-authored-by: Simona <35065668+simona-anomis@users.noreply.github.com> Co-authored-by: Ian G. Clifton <1033551+IanGClifton@users.noreply.github.com> Co-authored-by: Alex Vanyo Co-authored-by: compose-devrel-github-bot Co-authored-by: Ben Trengrove Co-authored-by: Jamal Eason Co-authored-by: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Co-authored-by: jakeroseman Co-authored-by: Kat Kuan <843428+kkuan2011@users.noreply.github.com> Co-authored-by: Chiara Chiappini Co-authored-by: Chiara Chiappini Co-authored-by: Don Turner Co-authored-by: Don Turner Co-authored-by: Jolanda Verhoef Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../bluetoothle/kotlin/MainActivity.kt | 1 - build.gradle.kts | 2 + compose/recomposehighlighter/build.gradle.kts | 4 +- compose/snippets/build.gradle.kts | 7 +- .../compose/snippets/SnippetsActivity.kt | 8 +- .../SampleListDetailPaneScaffold.kt | 2 - .../SampleNavigationSuiteScaffold.kt | 3 - .../animations/AnimationQuickGuide.kt | 2 - .../snippets/animations/AnimationSnippets.kt | 131 ++-- ...matedVisibilitySharedElementBlurSnippet.kt | 168 +++++ ...AnimatedVisibilitySharedElementSnippets.kt | 232 +++++++ .../BasicSharedElementSnippets.kt | 499 ++++++++++++++ .../CustomizeSharedElementsSnippets.kt | 630 +++++++++++++++++ .../sharedelement/SharedBoundsSnippets.kt | 200 ++++++ .../SharedElementCommonUseCaseSnippets.kt | 101 +++ .../SharedElementsWithNavigationSnippets.kt | 195 ++++++ .../architecture/ArchitectureSnippets.kt | 17 +- .../compose/snippets/components/Card.kt | 4 +- .../compose/snippets/components/Chip.kt | 3 - .../compose/snippets/components/Dialog.kt | 2 - .../designsystems/AppCompatThemeSnippets.kt | 38 -- .../designsystems/CustomDesignSystem.kt | 2 + .../designsystems/Material2Snippets.kt | 6 +- .../designsystems/Material3Snippets.kt | 3 - .../designsystems/MdcThemeSnippets.kt | 38 -- .../compose/snippets/glance/GlanceSnippets.kt | 7 +- .../graphics/AdvancedGraphicsSnippets.kt | 91 ++- .../snippets/graphics/BrushExampleSnippets.kt | 2 - .../snippets/graphics/CanvasSnippets.kt | 6 - .../interop/ComposeWithOtherLibraries.kt | 4 +- .../MigrationCommonScenariosSnippets.kt | 45 +- .../compose/snippets/kotlin/KotlinSnippets.kt | 6 +- .../compose/snippets/landing/LandingScreen.kt | 17 +- .../layouts/AdaptiveLayoutSnippets.kt | 2 - .../layouts/AlignmentLinesSnippets.kt | 4 +- .../snippets/layouts/CommonLayoutExamples.kt | 3 - .../layouts/ConstraintLayoutSnippets.kt | 4 +- .../snippets/layouts/CustomLayoutSnippets.kt | 2 +- .../snippets/layouts/FlowLayoutSnippets.kt | 147 +++- .../snippets/layouts/InsetsSnippets.kt | 3 - .../snippets/layouts/IntrinsicSnippets.kt | 12 +- .../layouts/MaterialLayoutSnippets.kt | 4 +- .../compose/snippets/layouts/PagerSnippets.kt | 10 +- .../snippets/lists/LazyListSnippets.kt | 17 +- .../mentalmodel/ThinkingInComposeSnippets.kt | 10 +- .../snippets/navigation/Destination.kt | 1 + .../snippets/resources/ResourcesSnippets.kt | 8 +- .../sideeffects/SideEffectsSnippets.kt | 2 +- .../snippets/state/SavingUIStateSnippets.kt | 4 +- .../snippets/state/StateOverviewSnippets.kt | 4 +- .../compose/snippets/text/EmojiSnippets.kt | 2 +- .../text/TextDownloadableFontsSnippets.kt | 8 +- .../compose/snippets/text/TextSnippets.kt | 105 ++- .../snippets/touchinput/Interactions.kt | 643 ++++++++++++++++++ .../touchinput/focus/FocusSnippets.kt | 8 +- .../touchinput/gestures/GesturesSnippets.kt | 2 - .../touchinput/pointerinput/TapAndPress.kt | 2 - .../userinteractions/UserInteractions.kt | 138 ++++ .../compose/snippets/ui/theme/Color.kt | 6 + .../src/main/res/drawable/cupcake.jpg | Bin 0 -> 87777 bytes .../snippets/src/main/res/drawable/donut.jpeg | Bin 0 -> 65266 bytes .../src/main/res/drawable/eclair.jpeg | Bin 0 -> 99829 bytes .../snippets/src/main/res/drawable/froyo.jpeg | Bin 0 -> 75308 bytes .../src/main/res/drawable/gingerbread.jpg | Bin 0 -> 148964 bytes .../src/main/res/drawable/honeycomb.jpg | Bin 0 -> 77136 bytes gradle.properties | 19 +- gradle/libs.versions.toml | 70 +- gradle/wrapper/gradle-wrapper.properties | 1 + .../testing/DispatchersOutsideTests.kt | 23 +- .../testing/HomeViewModelTestUsingRule.kt | 1 - .../coroutines/testing/UserStateTest.kt | 3 +- shared/src/main/res/layout/activity_main.xml | 31 - wear/build.gradle.kts | 5 +- 73 files changed, 3312 insertions(+), 468 deletions(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/AnimatedVisibilitySharedElementBlurSnippet.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/AnimatedVisibilitySharedElementSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt delete mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/designsystems/AppCompatThemeSnippets.kt delete mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/designsystems/MdcThemeSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/touchinput/Interactions.kt create mode 100644 compose/snippets/src/main/res/drawable/cupcake.jpg create mode 100644 compose/snippets/src/main/res/drawable/donut.jpeg create mode 100644 compose/snippets/src/main/res/drawable/eclair.jpeg create mode 100644 compose/snippets/src/main/res/drawable/froyo.jpeg create mode 100644 compose/snippets/src/main/res/drawable/gingerbread.jpg create mode 100644 compose/snippets/src/main/res/drawable/honeycomb.jpg delete mode 100644 shared/src/main/res/layout/activity_main.xml diff --git a/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/MainActivity.kt b/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/MainActivity.kt index c79aae135..5555c720d 100644 --- a/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/MainActivity.kt +++ b/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/MainActivity.kt @@ -6,7 +6,6 @@ import android.content.Context import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity -import com.sample.android.bluetoothle.java.MainActivity class MainActivity : AppCompatActivity() { diff --git a/build.gradle.kts b/build.gradle.kts index 547023ae7..22d9028a4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,6 +8,8 @@ plugins { alias(libs.plugins.kapt) apply false alias(libs.plugins.hilt) apply false alias(libs.plugins.kotlin.parcelize) apply false + alias(libs.plugins.compose.compiler) apply false + alias(libs.plugins.kotlin.serialization) apply false } apply("${project.rootDir}/buildscripts/toml-updater-config.gradle") diff --git a/compose/recomposehighlighter/build.gradle.kts b/compose/recomposehighlighter/build.gradle.kts index 1bbdf6ea4..fe8b79aff 100644 --- a/compose/recomposehighlighter/build.gradle.kts +++ b/compose/recomposehighlighter/build.gradle.kts @@ -1,6 +1,7 @@ plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) + alias(libs.plugins.compose.compiler) } android { compileSdk = libs.versions.compileSdk.get().toInt() @@ -40,9 +41,6 @@ android { viewBinding = true } - composeOptions { - kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get() - } } dependencies { val composeBom = platform(libs.androidx.compose.bom) diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index 3930f5611..5d2b661fd 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -20,6 +20,8 @@ plugins { alias(libs.plugins.kapt) alias(libs.plugins.hilt) alias(libs.plugins.kotlin.parcelize) + alias(libs.plugins.compose.compiler) + alias(libs.plugins.kotlin.serialization) } android { @@ -62,10 +64,6 @@ android { viewBinding = true } - composeOptions { - kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get() - } - packaging.resources { // Multiple dependency bring these files in. Exclude them to enable // our test APK to build (has no effect on our AARs) @@ -138,6 +136,7 @@ dependencies { implementation(libs.androidx.navigation.compose) implementation(libs.hilt.android) implementation(libs.androidx.hilt.navigation.compose) + implementation(libs.kotlinx.serialization.json) implementation(libs.androidx.recyclerview) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index aaed49166..3979a110b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -28,9 +28,11 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import com.example.compose.snippets.animations.AnimationExamplesScreen +import com.example.compose.snippets.animations.sharedelement.PlaceholderSizeAnimated_Demo import com.example.compose.snippets.components.AppBarExamples import com.example.compose.snippets.components.BadgeExamples import com.example.compose.snippets.components.ButtonExamples +import com.example.compose.snippets.components.CardExamples import com.example.compose.snippets.components.CheckboxExamples import com.example.compose.snippets.components.ChipExamples import com.example.compose.snippets.components.ComponentsScreen @@ -45,14 +47,13 @@ import com.example.compose.snippets.components.SliderExamples import com.example.compose.snippets.components.SwitchExamples import com.example.compose.snippets.components.TimePickerExamples import com.example.compose.snippets.graphics.ApplyPolygonAsClipImage -import com.example.compose.snippets.graphics.BitmapFromComposableSnippet +import com.example.compose.snippets.graphics.BitmapFromComposableFullSnippet import com.example.compose.snippets.graphics.BrushExamplesScreen import com.example.compose.snippets.images.ImageExamplesScreen import com.example.compose.snippets.landing.LandingScreen import com.example.compose.snippets.navigation.Destination import com.example.compose.snippets.navigation.TopComponentsDestination import com.example.compose.snippets.ui.theme.SnippetsTheme -import com.example.topcomponents.CardExamples class SnippetsActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -76,13 +77,14 @@ class SnippetsActivity : ComponentActivity() { Destination.BrushExamples -> BrushExamplesScreen() Destination.ImageExamples -> ImageExamplesScreen() Destination.AnimationQuickGuideExamples -> AnimationExamplesScreen() - Destination.ScreenshotExample -> BitmapFromComposableSnippet() + Destination.ScreenshotExample -> BitmapFromComposableFullSnippet() Destination.ComponentsExamples -> ComponentsScreen { navController.navigate( it.route ) } Destination.ShapesExamples -> ApplyPolygonAsClipImage() + Destination.SharedElementExamples -> PlaceholderSizeAnimated_Demo() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt index 68c14dfd8..b79f7ee71 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt @@ -35,8 +35,6 @@ import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffold import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffoldRole import androidx.compose.material3.adaptive.navigation.rememberListDetailPaneScaffoldNavigator import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleNavigationSuiteScaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleNavigationSuiteScaffold.kt index f5c461f6c..76006e684 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleNavigationSuiteScaffold.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleNavigationSuiteScaffold.kt @@ -14,8 +14,6 @@ * limitations under the License. */ -@file:OptIn(ExperimentalMaterial3AdaptiveNavigationSuiteApi::class) - package com.example.compose.snippets.adaptivelayouts import androidx.annotation.StringRes @@ -29,7 +27,6 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.NavigationBarItemDefaults import androidx.compose.material3.Text import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo -import androidx.compose.material3.adaptive.navigationsuite.ExperimentalMaterial3AdaptiveNavigationSuiteApi import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteDefaults import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteScaffold import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteScaffoldDefaults diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt index 297f579a4..7c6493578 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt @@ -87,7 +87,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.drawBehind @@ -720,7 +719,6 @@ private fun LoadingScreen() { } } -@OptIn(ExperimentalComposeUiApi::class) @Preview @Composable fun AnimationLayout() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt index 80c53540d..9db1748d1 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt @@ -23,7 +23,6 @@ import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.Crossfade import androidx.compose.animation.EnterExitState -import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.SizeTransform import androidx.compose.animation.animateColor import androidx.compose.animation.animateContentSize @@ -50,6 +49,7 @@ import androidx.compose.animation.core.createChildTransition import androidx.compose.animation.core.infiniteRepeatable import androidx.compose.animation.core.keyframes import androidx.compose.animation.core.rememberInfiniteTransition +import androidx.compose.animation.core.rememberTransition import androidx.compose.animation.core.repeatable import androidx.compose.animation.core.snap import androidx.compose.animation.core.spring @@ -65,7 +65,7 @@ import androidx.compose.animation.graphics.vector.AnimatedImageVector import androidx.compose.animation.shrinkVertically import androidx.compose.animation.slideInVertically import androidx.compose.animation.slideOutVertically -import androidx.compose.animation.with +import androidx.compose.animation.togetherWith import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -80,18 +80,19 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.sizeIn import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.Button -import androidx.compose.material.ExperimentalMaterialApi -import androidx.compose.material.Icon -import androidx.compose.material.Surface -import androidx.compose.material.Text import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Phone +import androidx.compose.material3.Button +import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.State import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableLongStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue @@ -155,7 +156,12 @@ private fun AnimatedVisibilityWithEnterAndExit() { ), exit = slideOutVertically() + shrinkVertically() + fadeOut() ) { - Text("Hello", Modifier.fillMaxWidth().height(200.dp)) + Text( + "Hello", + Modifier + .fillMaxWidth() + .height(200.dp) + ) } // [END android_compose_animations_animated_visibility_enter_exit] } @@ -190,7 +196,6 @@ private fun AnimatedVisibilityMutable() { // [END android_compose_animations_animated_visibility_mutable] } -@OptIn(ExperimentalAnimationApi::class) @Composable @Preview private fun AnimatedVisibilityAnimateEnterExitChildren() { @@ -203,7 +208,11 @@ private fun AnimatedVisibilityAnimateEnterExitChildren() { exit = fadeOut() ) { // Fade in/out the background and the foreground. - Box(Modifier.fillMaxSize().background(Color.DarkGray)) { + Box( + Modifier + .fillMaxSize() + .background(Color.DarkGray) + ) { Box( Modifier .align(Alignment.Center) @@ -222,7 +231,6 @@ private fun AnimatedVisibilityAnimateEnterExitChildren() { // [END android_compose_animations_animated_visibility_animate_enter_exit_children] } -@OptIn(ExperimentalAnimationApi::class) @Preview @Composable private fun AnimatedVisibilityTransition() { @@ -239,7 +247,11 @@ private fun AnimatedVisibilityTransition() { val background by transition.animateColor(label = "color") { state -> if (state == EnterExitState.Visible) Color.Blue else Color.Gray } - Box(modifier = Modifier.size(128.dp).background(background)) + Box( + modifier = Modifier + .size(128.dp) + .background(background) + ) } // [END android_compose_animations_animated_visibility_transition] } @@ -250,26 +262,29 @@ private fun AnimateAsStateSimple() { // [START android_compose_animations_animate_as_state] var enabled by remember { mutableStateOf(true) } - val alpha: Float by animateFloatAsState(if (enabled) 1f else 0.5f) + val alpha: Float by animateFloatAsState(if (enabled) 1f else 0.5f, label = "alpha") Box( - Modifier.fillMaxSize() + Modifier + .fillMaxSize() .graphicsLayer(alpha = alpha) .background(Color.Red) ) // [END android_compose_animations_animate_as_state] } -@OptIn(ExperimentalAnimationApi::class) @Preview @Composable private fun AnimatedContentSimple() { // [START android_compose_animations_animated_content_simple] Row { - var count by remember { mutableStateOf(0) } + var count by remember { mutableIntStateOf(0) } Button(onClick = { count++ }) { Text("Add") } - AnimatedContent(targetState = count) { targetCount -> + AnimatedContent( + targetState = count, + label = "animated content" + ) { targetCount -> // Make sure to use `targetCount`, not `count`. Text(text = "Count: $targetCount") } @@ -277,7 +292,6 @@ private fun AnimatedContentSimple() { // [END android_compose_animations_animated_content_simple] } -@OptIn(ExperimentalAnimationApi::class) @Composable private fun AnimatedContentTransitionSpec(count: Int) { // [START android_compose_animations_animated_content_transition_spec] @@ -288,25 +302,25 @@ private fun AnimatedContentTransitionSpec(count: Int) { if (targetState > initialState) { // If the target number is larger, it slides up and fades in // while the initial (smaller) number slides up and fades out. - slideInVertically { height -> height } + fadeIn() with + slideInVertically { height -> height } + fadeIn() togetherWith slideOutVertically { height -> -height } + fadeOut() } else { // If the target number is smaller, it slides down and fades in // while the initial number slides down and fades out. - slideInVertically { height -> -height } + fadeIn() with + slideInVertically { height -> -height } + fadeIn() togetherWith slideOutVertically { height -> height } + fadeOut() }.using( // Disable clipping since the faded slide-in/out should // be displayed out of bounds. SizeTransform(clip = false) ) - } + }, label = "animated content" ) { targetCount -> Text(text = "$targetCount") } // [END android_compose_animations_animated_content_transition_spec] } -@OptIn(ExperimentalAnimationApi::class, ExperimentalMaterialApi::class) + @Composable private fun AnimatedContentSizeTransform() { // [START android_compose_animations_animated_content_size_transform] @@ -318,7 +332,7 @@ private fun AnimatedContentSizeTransform() { AnimatedContent( targetState = expanded, transitionSpec = { - fadeIn(animationSpec = tween(150, 150)) with + fadeIn(animationSpec = tween(150, 150)) togetherWith fadeOut(animationSpec = tween(150)) using SizeTransform { initialSize, targetSize -> if (targetState) { @@ -335,7 +349,7 @@ private fun AnimatedContentSizeTransform() { } } } - } + }, label = "size transform" ) { targetExpanded -> if (targetExpanded) { Expanded() @@ -352,7 +366,9 @@ private fun AnimateContentSizeSimple() { // [START android_compose_animations_animated_content_size_modifier_simple] var message by remember { mutableStateOf("Hello") } Box( - modifier = Modifier.background(Color.Blue).animateContentSize() + modifier = Modifier + .background(Color.Blue) + .animateContentSize() ) { Text(text = message) } // [END android_compose_animations_animated_content_size_modifier_simple] } @@ -361,7 +377,7 @@ private fun AnimateContentSizeSimple() { private fun CrossfadeSimple() { // [START android_compose_animations_crossfade_simple] var currentPage by remember { mutableStateOf("A") } - Crossfade(targetState = currentPage) { screen -> + Crossfade(targetState = currentPage, label = "cross fade") { screen -> when (screen) { "A" -> Text("Page A") "B" -> Text("Page B") @@ -412,6 +428,7 @@ private object UpdateTransitionEnumState { when { BoxState.Expanded isTransitioningTo BoxState.Collapsed -> spring(stiffness = 50f) + else -> tween(durationMillis = 500) } @@ -431,7 +448,7 @@ private object UpdateTransitionEnumState { // Start in collapsed state and immediately animate to expanded var currentState = remember { MutableTransitionState(BoxState.Collapsed) } currentState.targetState = BoxState.Expanded - val transition = updateTransition(currentState, label = "box state") + val transition = rememberTransition(currentState, label = "box state") // …… // [END android_compose_animations_transitions_state] } @@ -479,7 +496,6 @@ private object UpdateTransitionCreateChildTransition { // [END android_compose_animations_transitions_dialer_example] } -@OptIn(ExperimentalAnimationApi::class, ExperimentalMaterialApi::class) @Composable private fun UpdateTransitionAnimatedVisibility() { // [START android_compose_animations_transitions_animated_visibility] @@ -496,9 +512,13 @@ private fun UpdateTransitionAnimatedVisibility() { onClick = { selected = !selected }, shape = RoundedCornerShape(8.dp), border = BorderStroke(2.dp, borderColor), - elevation = elevation + shadowElevation = elevation ) { - Column(modifier = Modifier.fillMaxWidth().padding(16.dp)) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + ) { Text(text = "Hello, world!") // AnimatedVisibility as a part of the transition. transition.AnimatedVisibility( @@ -569,17 +589,22 @@ private object UpdateTransitionEncapsulating { @Composable private fun RememberInfiniteTransitionSimple() { // [START android_compose_animations_infinite_transition_simple] - val infiniteTransition = rememberInfiniteTransition() + val infiniteTransition = rememberInfiniteTransition(label = "infinite") val color by infiniteTransition.animateColor( initialValue = Color.Red, targetValue = Color.Green, animationSpec = infiniteRepeatable( animation = tween(1000, easing = LinearEasing), repeatMode = RepeatMode.Reverse - ) + ), + label = "color" ) - Box(Modifier.fillMaxSize().background(color)) + Box( + Modifier + .fillMaxSize() + .background(color) + ) // [END android_compose_animations_infinite_transition_simple] } @@ -591,9 +616,14 @@ private fun AnimatableSimple(ok: Boolean) { LaunchedEffect(ok) { color.animateTo(if (ok) Color.Green else Color.Red) } - Box(Modifier.fillMaxSize().background(color.value)) + Box( + Modifier + .fillMaxSize() + .background(color.value) + ) // [END android_compose_animations_animatable_simple] } + @Composable private fun TargetBasedAnimationSimple(someCustomCondition: () -> Boolean) { // [START android_compose_animations_target_based_animation_simple] @@ -605,7 +635,7 @@ private fun TargetBasedAnimationSimple(someCustomCondition: () -> Boolean) { targetValue = 1000f ) } - var playTime by remember { mutableStateOf(0L) } + var playTime by remember { mutableLongStateOf(0L) } LaunchedEffect(anim) { val startTime = withFrameNanos { it } @@ -624,7 +654,8 @@ private fun AnimationSpecTween(enabled: Boolean) { val alpha: Float by animateFloatAsState( targetValue = if (enabled) 1f else 0.5f, // Configure the animation duration and easing. - animationSpec = tween(durationMillis = 300, easing = FastOutSlowInEasing) + animationSpec = tween(durationMillis = 300, easing = FastOutSlowInEasing), + label = "alpha" ) // [END android_compose_animations_spec_tween] } @@ -637,7 +668,8 @@ private fun AnimationSpecSpring() { animationSpec = spring( dampingRatio = Spring.DampingRatioHighBouncy, stiffness = Spring.StiffnessMedium - ) + ), + label = "spring spec" ) // [END android_compose_animations_spec_spring] } @@ -651,7 +683,8 @@ private fun AnimationSpecTween() { durationMillis = 300, delayMillis = 50, easing = LinearOutSlowInEasing - ) + ), + label = "tween delay" ) // [END android_compose_animations_spec_tween_delay] } @@ -663,11 +696,12 @@ private fun AnimationSpecKeyframe() { targetValue = 1f, animationSpec = keyframes { durationMillis = 375 - 0.0f at 0 with LinearOutSlowInEasing // for 0-15 ms - 0.2f at 15 with FastOutLinearInEasing // for 15-75 ms + 0.0f at 0 using LinearOutSlowInEasing // for 0-15 ms + 0.2f at 15 using FastOutLinearInEasing // for 15-75 ms 0.4f at 75 // ms 0.4f at 225 // ms - } + }, + label = "keyframe" ) // [END android_compose_animations_spec_keyframe] } @@ -681,7 +715,8 @@ private fun AnimationSpecRepeatable() { iterations = 3, animation = tween(durationMillis = 300), repeatMode = RepeatMode.Reverse - ) + ), + label = "repeatable spec" ) // [END android_compose_animations_spec_repeatable] } @@ -694,7 +729,8 @@ private fun AnimationSpecInfiniteRepeatable() { animationSpec = infiniteRepeatable( animation = tween(durationMillis = 300), repeatMode = RepeatMode.Reverse - ) + ), + label = "infinite repeatable" ) // [END android_compose_animations_spec_infinite_repeatable] } @@ -704,7 +740,8 @@ private fun AnimationSpecSnap() { // [START android_compose_animations_spec_snap] val value by animateFloatAsState( targetValue = 1f, - animationSpec = snap(delayMillis = 50) + animationSpec = snap(delayMillis = 50), + label = "snap spec" ) // [END android_compose_animations_spec_snap] } @@ -720,7 +757,8 @@ private object Easing { animationSpec = tween( durationMillis = 300, easing = CustomEasing - ) + ), + label = "custom easing" ) // …… } @@ -750,7 +788,8 @@ private object AnimationVectorCustomType { convertFromVector = { vector: AnimationVector2D -> MySize(vector.v1.dp, vector.v2.dp) } - ) + ), + label = "size" ) } // [END android_compose_animations_vector_convertor_custom_type] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/AnimatedVisibilitySharedElementBlurSnippet.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/AnimatedVisibilitySharedElementBlurSnippet.kt new file mode 100644 index 000000000..92bee9098 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/AnimatedVisibilitySharedElementBlurSnippet.kt @@ -0,0 +1,168 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.BoundsTransform +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawWithContent +import androidx.compose.ui.graphics.BlurEffect +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.TileMode +import androidx.compose.ui.graphics.layer.GraphicsLayer +import androidx.compose.ui.graphics.layer.drawLayer +import androidx.compose.ui.graphics.rememberGraphicsLayer +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.example.compose.snippets.R + +private val listSnacks = listOf( + Snack("Cupcake", "", R.drawable.cupcake), + Snack("Donut", "", R.drawable.donut), + Snack("Eclair", "", R.drawable.eclair), + Snack("Froyo", "", R.drawable.froyo), + Snack("Gingerbread", "", R.drawable.gingerbread), + Snack("Honeycomb", "", R.drawable.honeycomb), +) + +private fun animationSpec() = tween(durationMillis = 500) +private val boundsTransition = BoundsTransform { _, _ -> animationSpec() } +private val shapeForSharedElement = RoundedCornerShape(16.dp) + +@OptIn(ExperimentalSharedTransitionApi::class) +@Preview +@Composable +private fun AnimatedVisibilitySharedElementBlurLayer() { + var selectedSnack by remember { mutableStateOf(null) } + val graphicsLayer = rememberGraphicsLayer() + val animateBlurRadius = animateFloatAsState( + targetValue = if (selectedSnack != null) 20f else 0f, + label = "blur radius", + animationSpec = animationSpec() + ) + + SharedTransitionLayout(modifier = Modifier.fillMaxSize()) { + LazyColumn( + modifier = Modifier + .fillMaxSize() + .background(Color.LightGray.copy(alpha = 0.5f)) + .blurLayer(graphicsLayer, animateBlurRadius.value) + .padding(16.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + itemsIndexed(listSnacks, key = { index, snack -> snack.name }) { index, snack -> + SnackItem( + snack = snack, + onClick = { + selectedSnack = snack + }, + visible = selectedSnack != snack, + modifier = Modifier.animateItem( + placementSpec = animationSpec(), + fadeOutSpec = animationSpec(), + fadeInSpec = animationSpec() + ) + ) + } + } + + SnackEditDetails( + snack = selectedSnack, + onConfirmClick = { + selectedSnack = null + } + ) + } +} + +fun Modifier.blurLayer(layer: GraphicsLayer, radius: Float): Modifier { + return if (radius == 0f) this else this.drawWithContent { + layer.apply { + record { + this@drawWithContent.drawContent() + } + // will apply a blur on API 31+ + this.renderEffect = BlurEffect(radius, radius, TileMode.Decal) + } + drawLayer(layer) + } +} +@Composable +fun SharedTransitionScope.SnackItem( + snack: Snack, + visible: Boolean, + onClick: () -> Unit, + modifier: Modifier = Modifier +) { + AnimatedVisibility( + modifier = modifier, + visible = visible, + enter = fadeIn(animationSpec = animationSpec()) + scaleIn( + animationSpec() + ), + exit = fadeOut(animationSpec = animationSpec()) + scaleOut( + animationSpec() + ) + ) { + Box( + modifier = Modifier + .sharedBounds( + sharedContentState = rememberSharedContentState(key = "${snack.name}-bounds"), + animatedVisibilityScope = this, + boundsTransform = boundsTransition, + clipInOverlayDuringTransition = OverlayClip(shapeForSharedElement) + ) + .background(Color.White, shapeForSharedElement) + .clip(shapeForSharedElement) + ) { + SnackContents( + snack = snack, + modifier = Modifier.sharedElement( + state = rememberSharedContentState(key = snack.name), + animatedVisibilityScope = this@AnimatedVisibility, + boundsTransform = boundsTransition, + ), + onClick = onClick + ) + } + } +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/AnimatedVisibilitySharedElementSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/AnimatedVisibilitySharedElementSnippets.kt new file mode 100644 index 000000000..955dbe460 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/AnimatedVisibilitySharedElementSnippets.kt @@ -0,0 +1,232 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalSharedTransitionApi::class, ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.animation.togetherWith +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.example.compose.snippets.R + +private val listSnacks = listOf( + Snack("Cupcake", "", R.drawable.cupcake), + Snack("Donut", "", R.drawable.donut), + Snack("Eclair", "", R.drawable.eclair), + Snack("Froyo", "", R.drawable.froyo), + Snack("Gingerbread", "", R.drawable.gingerbread), + Snack("Honeycomb", "", R.drawable.honeycomb), +) + +private val shapeForSharedElement = RoundedCornerShape(16.dp) + +@OptIn(ExperimentalSharedTransitionApi::class) +@Preview +@Composable +private fun AnimatedVisibilitySharedElementShortenedExample() { + // [START android_compose_shared_elements_animated_visibility] + var selectedSnack by remember { mutableStateOf(null) } + + SharedTransitionLayout(modifier = Modifier.fillMaxSize()) { + LazyColumn( + // [START_EXCLUDE] + modifier = Modifier + .fillMaxSize() + .background(Color.LightGray.copy(alpha = 0.5f)) + .padding(16.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + // [END_EXCLUDE] + ) { + items(listSnacks) { snack -> + AnimatedVisibility( + visible = snack != selectedSnack, + enter = fadeIn() + scaleIn(), + exit = fadeOut() + scaleOut(), + modifier = Modifier.animateItem() + ) { + Box( + modifier = Modifier + .sharedBounds( + sharedContentState = rememberSharedContentState(key = "${snack.name}-bounds"), + // Using the scope provided by AnimatedVisibility + animatedVisibilityScope = this, + clipInOverlayDuringTransition = OverlayClip(shapeForSharedElement) + ) + .background(Color.White, shapeForSharedElement) + .clip(shapeForSharedElement) + ) { + SnackContents( + snack = snack, + modifier = Modifier.sharedElement( + state = rememberSharedContentState(key = snack.name), + animatedVisibilityScope = this@AnimatedVisibility + ), + onClick = { + selectedSnack = snack + } + ) + } + } + } + } + // Contains matching AnimatedContent with sharedBounds modifiers. + SnackEditDetails( + snack = selectedSnack, + onConfirmClick = { + selectedSnack = null + } + ) + } + // [END android_compose_shared_elements_animated_visibility] +} + +@Composable +fun SharedTransitionScope.SnackEditDetails( + snack: Snack?, + modifier: Modifier = Modifier, + onConfirmClick: () -> Unit +) { + AnimatedContent( + modifier = modifier, + targetState = snack, + transitionSpec = { + fadeIn() togetherWith fadeOut() + }, + label = "SnackEditDetails" + ) { targetSnack -> + Box( + modifier = Modifier.fillMaxSize(), + contentAlignment = Alignment.Center + ) { + if (targetSnack != null) { + Box( + modifier = Modifier + .fillMaxSize() + .clickable { + onConfirmClick() + } + .background(Color.Black.copy(alpha = 0.5f)) + ) + Column( + modifier = Modifier + .padding(horizontal = 16.dp) + .sharedBounds( + sharedContentState = rememberSharedContentState(key = "${targetSnack.name}-bounds"), + animatedVisibilityScope = this@AnimatedContent, + clipInOverlayDuringTransition = OverlayClip(shapeForSharedElement) + ) + .background(Color.White, shapeForSharedElement) + .clip(shapeForSharedElement) + ) { + + SnackContents( + snack = targetSnack, + modifier = Modifier.sharedElement( + state = rememberSharedContentState(key = targetSnack.name), + animatedVisibilityScope = this@AnimatedContent, + ), + onClick = { + onConfirmClick() + } + ) + Row( + Modifier + .fillMaxWidth() + .padding(bottom = 8.dp, end = 8.dp), + horizontalArrangement = Arrangement.End + ) { + TextButton(onClick = { onConfirmClick() }) { + Text(text = "Save changes") + } + } + } + } + } + } +} + +@Composable +fun SnackContents( + snack: Snack, + modifier: Modifier = Modifier, + onClick: () -> Unit +) { + Column( + modifier = modifier + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { + onClick() + } + ) { + Image( + painter = painterResource(id = snack.image), + modifier = Modifier + .fillMaxWidth() + .aspectRatio(20f / 9f), + contentScale = ContentScale.Crop, + contentDescription = null + ) + Text( + text = snack.name, + modifier = Modifier + .wrapContentWidth() + .padding(8.dp), + style = MaterialTheme.typography.titleSmall + ) + } +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt new file mode 100644 index 000000000..c246a8098 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt @@ -0,0 +1,499 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.AnimatedVisibilityScope +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.compositionLocalOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.compose.snippets.R +import com.example.compose.snippets.ui.theme.LavenderLight +import com.example.compose.snippets.ui.theme.RoseLight + +private class SharedElementBasicUsage2 { + @Preview + @Composable + private fun SharedElementApp() { + // [START android_compose_animations_shared_element_step1] + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } + } + } + // [END android_compose_animations_shared_element_step1] + } + + @Composable + private fun MainContent( + onShowDetails: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + Row( + // [START_EXCLUDE] + modifier = Modifier + .padding(8.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + // [START_EXCLUDE] + Text("Cupcake", fontSize = 21.sp) + // [END_EXCLUDE] + } + } + + @Composable + private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + Column( + // [START_EXCLUDE] + modifier = Modifier + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + // [START_EXCLUDE] + Text("Cupcake", fontSize = 28.sp) + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + // [END_EXCLUDE] + } + } +} + +private class SharedElementBasicUsage3 { + + @Preview + @Composable + private fun SharedElementApp() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } + } + } + } + + // [START android_compose_animations_shared_element_step2] + @Composable + private fun MainContent( + onShowDetails: () -> Unit, + modifier: Modifier = Modifier, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + Row( + // [START_EXCLUDE] + modifier = Modifier + .padding(8.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + with(sharedTransitionScope) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope + ) + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + // [START_EXCLUDE] + Text( + "Cupcake", fontSize = 21.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + // [END_EXCLUDE] + } + } + } + + @Composable + private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + Column( + // [START_EXCLUDE] + modifier = Modifier + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + with(sharedTransitionScope) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope + ) + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + // [START_EXCLUDE] + Text( + "Cupcake", fontSize = 28.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + // [END_EXCLUDE] + } + } + } + // [END android_compose_animations_shared_element_step2] +} + +@Preview +@Composable +private fun SharedElement_ManualVisibleControl() { + // [START android_compose_shared_element_manual_control] + var selectFirst by remember { mutableStateOf(true) } + val key = remember { Any() } + SharedTransitionLayout( + Modifier + .fillMaxSize() + .padding(10.dp) + .clickable { + selectFirst = !selectFirst + } + ) { + Box( + Modifier + .sharedElementWithCallerManagedVisibility( + rememberSharedContentState(key = key), + !selectFirst + ) + .background(Color.Red) + .size(100.dp) + ) { + Text(if (!selectFirst) "false" else "true", color = Color.White) + } + Box( + Modifier + .offset(180.dp, 180.dp) + .sharedElementWithCallerManagedVisibility( + rememberSharedContentState( + key = key, + ), + selectFirst + ) + .alpha(0.5f) + .background(Color.Blue) + .size(180.dp) + ) { + Text(if (selectFirst) "false" else "true", color = Color.White) + } + } + // [END android_compose_shared_element_manual_control] +} + +@Preview +@Composable +private fun UnmatchedBoundsExample() { + // [START android_compose_animation_shared_element_bounds_unmatched] + var selectFirst by remember { mutableStateOf(true) } + val key = remember { Any() } + SharedTransitionLayout( + Modifier + .fillMaxSize() + .padding(10.dp) + .clickable { + selectFirst = !selectFirst + } + ) { + AnimatedContent(targetState = selectFirst, label = "AnimatedContent") { targetState -> + if (targetState) { + Box( + Modifier + .padding(12.dp) + .sharedBounds( + rememberSharedContentState(key = key), + animatedVisibilityScope = this@AnimatedContent + ) + .border(2.dp, Color.Red) + ) { + Text( + "Hello", + fontSize = 20.sp + ) + } + } else { + Box( + Modifier + .offset(180.dp, 180.dp) + .sharedBounds( + rememberSharedContentState( + key = key, + ), + animatedVisibilityScope = this@AnimatedContent + ) + .border(2.dp, Color.Red) + // This padding is placed after sharedBounds, but it doesn't match the + // other shared elements modifier order, resulting in visual jumps + .padding(12.dp) + + ) { + Text( + "Hello", + fontSize = 36.sp + ) + } + } + } + } + // [END android_compose_animation_shared_element_bounds_unmatched] +} + +private object UniqueKeySnippet { + // [START android_compose_shared_elements_unique_key] + data class SnackSharedElementKey( + val snackId: Long, + val origin: String, + val type: SnackSharedElementType + ) + + enum class SnackSharedElementType { + Bounds, + Image, + Title, + Tagline, + Background + } + + @Composable + fun SharedElementUniqueKey() { + // [START_EXCLUDE] + SharedTransitionLayout { + AnimatedVisibility(visible = true) { + // [END_EXCLUDE] + Box( + modifier = Modifier + .sharedElement( + rememberSharedContentState( + key = SnackSharedElementKey( + snackId = 1, + origin = "latest", + type = SnackSharedElementType.Image + ) + ), + animatedVisibilityScope = this@AnimatedVisibility + ) + ) + // [START_EXCLUDE] + } + } + // [END_EXCLUDE] + } + // [END android_compose_shared_elements_unique_key] +} + +// [START android_compose_shared_element_scope] +val LocalNavAnimatedVisibilityScope = compositionLocalOf { null } +val LocalSharedTransitionScope = compositionLocalOf { null } + +@Composable +private fun SharedElementScope_CompositionLocal() { + // An example of how to use composition locals to pass around the shared transition scope, far down your UI tree. + // [START_EXCLUDE] + val state = remember { + mutableStateOf(false) + } + // [END_EXCLUDE] + SharedTransitionLayout { + CompositionLocalProvider( + LocalSharedTransitionScope provides this + ) { + // This could also be your top-level NavHost as this provides an AnimatedContentScope + AnimatedContent(state, label = "Top level AnimatedContent") { targetState -> + CompositionLocalProvider(LocalNavAnimatedVisibilityScope provides this) { + // Now we can access the scopes in any nested composables as follows: + val sharedTransitionScope = LocalSharedTransitionScope.current + ?: throw IllegalStateException("No SharedElementScope found") + val animatedVisibilityScope = LocalNavAnimatedVisibilityScope.current + ?: throw IllegalStateException("No AnimatedVisibility found") + } + // [START_EXCLUDE] + if (targetState.value) { + // do something + } + // [END_EXCLUDE] + } + } + } +} +// [END android_compose_shared_element_scope] + +private object SharedElementScope_Extensions { + // [START android_compose_shared_element_parameters] + @Composable + fun MainContent( + animatedVisibilityScope: AnimatedVisibilityScope, + sharedTransitionScope: SharedTransitionScope + ) { + } + + @Composable + fun Details( + animatedVisibilityScope: AnimatedVisibilityScope, + sharedTransitionScope: SharedTransitionScope + ) { + } + // [END android_compose_shared_element_parameters] +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt new file mode 100644 index 000000000..3e60c10e8 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt @@ -0,0 +1,630 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.AnimatedVisibilityScope +import androidx.compose.animation.BoundsTransform +import androidx.compose.animation.EnterTransition +import androidx.compose.animation.ExitTransition +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.animation.core.ArcMode +import androidx.compose.animation.core.ExperimentalAnimationSpecApi +import androidx.compose.animation.core.FastOutSlowInEasing +import androidx.compose.animation.core.keyframes +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.slideInVertically +import androidx.compose.animation.slideOutVertically +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.horizontalScroll +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.requiredHeightIn +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Create +import androidx.compose.material.icons.outlined.Favorite +import androidx.compose.material.icons.outlined.Share +import androidx.compose.material3.Icon +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavType +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import androidx.navigation.navArgument +import com.example.compose.snippets.R +import com.example.compose.snippets.ui.theme.LavenderLight +import com.example.compose.snippets.ui.theme.RoseLight + +@Preview +@Composable +fun SharedElementApp_BoundsTransformExample() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } + } + } +} + +@OptIn(ExperimentalAnimationSpecApi::class) +@Composable +private fun MainContent( + onShowDetails: () -> Unit, + modifier: Modifier = Modifier, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope +) { + with(sharedTransitionScope) { + Box(modifier = Modifier.fillMaxSize()) { + Row( + modifier = Modifier + .padding(8.dp) + .fillMaxWidth() + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn( + tween( + boundsAnimationDurationMillis, + easing = FastOutSlowInEasing + ) + ), + exit = fadeOut( + tween( + boundsAnimationDurationMillis, + easing = FastOutSlowInEasing + ) + ), + boundsTransform = boundsTransform + ) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { + onShowDetails() + } + .padding(8.dp) + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope, + boundsTransform = boundsTransform + ) + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + val textBoundsTransform = BoundsTransform { initialBounds, targetBounds -> + keyframes { + durationMillis = boundsAnimationDurationMillis + initialBounds at 0 using ArcMode.ArcBelow using FastOutSlowInEasing + targetBounds at boundsAnimationDurationMillis + } + } + Text( + "Cupcake", fontSize = 21.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope, + boundsTransform = textBoundsTransform + ) + ) + } + } + } +} + +@OptIn(ExperimentalAnimationSpecApi::class) +@Composable +private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope +) { + with(sharedTransitionScope) { + Box(modifier = Modifier.fillMaxSize()) { + Column( + modifier = Modifier + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn( + tween( + durationMillis = boundsAnimationDurationMillis, + easing = FastOutSlowInEasing + ) + ), + exit = fadeOut( + tween( + durationMillis = boundsAnimationDurationMillis, + easing = FastOutSlowInEasing + ) + ), + boundsTransform = boundsTransform + ) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { + onBack() + } + .padding(8.dp) + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope, + boundsTransform = boundsTransform + ) + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + // [START android_compose_shared_element_text_bounds_transform] + val textBoundsTransform = BoundsTransform { initialBounds, targetBounds -> + keyframes { + durationMillis = boundsAnimationDurationMillis + initialBounds at 0 using ArcMode.ArcBelow using FastOutSlowInEasing + targetBounds at boundsAnimationDurationMillis + } + } + Text( + "Cupcake", fontSize = 28.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope, + boundsTransform = textBoundsTransform + ) + ) + // [END android_compose_shared_element_text_bounds_transform] + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus", + modifier = Modifier.skipToLookaheadSize() + ) + } + } + } +} + +private val boundsTransform = BoundsTransform { _: Rect, _: Rect -> + tween(durationMillis = boundsAnimationDurationMillis, easing = FastOutSlowInEasing) +} +private const val boundsAnimationDurationMillis = 500 + +@Preview +@Composable +private fun SharedElement_Clipping() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + Row( + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = this@AnimatedContent + ) + .background(Color.Green.copy(alpha = 0.5f)) + .padding(8.dp) + .clickable { + showDetails = true + } + ) { + // [START android_compose_animations_shared_element_clipping] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(100.dp) + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = this@AnimatedContent + ) + .clip(RoundedCornerShape(16.dp)), + contentScale = ContentScale.Crop + ) + // [END android_compose_animations_shared_element_clipping] + Text( + "Lorem ipsum dolor sit amet.", fontSize = 21.sp, + modifier = Modifier.sharedElement( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = this@AnimatedContent, + + ) + ) + } + } else { + Column( + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = this@AnimatedContent + ) + .background(Color.Green.copy(alpha = 0.7f)) + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .clickable { + showDetails = false + } + + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(200.dp) + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = this@AnimatedContent + ) + .clip(RoundedCornerShape(16.dp)), + contentScale = ContentScale.Crop + ) + Text( + "Lorem ipsum dolor sit amet.", fontSize = 21.sp, + modifier = Modifier.sharedElement( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = this@AnimatedContent + ) + ) + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + } + } + } + } +} + +@Composable +private fun JetsnackBottomBar(modifier: Modifier) { +} + +@Composable +private fun EnterExitJetsnack() { + SharedTransitionLayout { + AnimatedVisibility(visible = true) { + // [START android_compose_shared_element_enter_exit] + JetsnackBottomBar( + modifier = Modifier + .renderInSharedTransitionScopeOverlay( + zIndexInOverlay = 1f, + ) + .animateEnterExit( + enter = fadeIn() + slideInVertically { + it + }, + exit = fadeOut() + slideOutVertically { + it + } + ) + ) + // [END android_compose_shared_element_enter_exit] + } + } +} + +@Preview +@Composable +private fun SharedElement_SkipLookaheadSize() { + // Nested shared bounds sample. + val selectionColor = Color(0xff3367ba) + var expanded by remember { mutableStateOf(true) } + SharedTransitionLayout( + Modifier + .fillMaxSize() + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { + expanded = !expanded + } + .background(Color(0x88000000)) + ) { + AnimatedVisibility( + visible = expanded, + enter = EnterTransition.None, + exit = ExitTransition.None + ) { + Box(modifier = Modifier.fillMaxSize()) { + Surface( + Modifier + .align(Alignment.BottomCenter) + .padding(20.dp) + .sharedBounds( + rememberSharedContentState(key = "container"), + this@AnimatedVisibility + ) + .requiredHeightIn(max = 60.dp), + shape = RoundedCornerShape(50), + ) { + Row( + Modifier + .padding(10.dp) + // By using Modifier.skipToLookaheadSize(), we are telling the layout + // system to layout the children of this node as if the animations had + // all finished. This avoid re-laying out the Row with animated width, + // which is _sometimes_ desirable. Try removing this modifier and + // observe the effect. + .skipToLookaheadSize() + ) { + Icon( + Icons.Outlined.Share, + contentDescription = "Share", + modifier = Modifier.padding( + top = 10.dp, + bottom = 10.dp, + start = 10.dp, + end = 20.dp + ) + ) + Icon( + Icons.Outlined.Favorite, + contentDescription = "Favorite", + modifier = Modifier.padding( + top = 10.dp, + bottom = 10.dp, + start = 10.dp, + end = 20.dp + ) + ) + Icon( + Icons.Outlined.Create, + contentDescription = "Create", + tint = Color.White, + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "icon_background"), + this@AnimatedVisibility + ) + .background(selectionColor, RoundedCornerShape(50)) + .padding( + top = 10.dp, + bottom = 10.dp, + start = 20.dp, + end = 20.dp + ) + .sharedElement( + rememberSharedContentState(key = "icon"), + this@AnimatedVisibility + ) + ) + } + } + } + } + AnimatedVisibility( + visible = !expanded, + enter = EnterTransition.None, + exit = ExitTransition.None + ) { + Box(modifier = Modifier.fillMaxSize()) { + Surface( + Modifier + .align(Alignment.BottomEnd) + .padding(30.dp) + .sharedBounds( + rememberSharedContentState(key = "container"), + this@AnimatedVisibility, + enter = EnterTransition.None, + ) + .sharedBounds( + rememberSharedContentState(key = "icon_background"), + this@AnimatedVisibility, + enter = EnterTransition.None, + exit = ExitTransition.None + ), + shape = RoundedCornerShape(30.dp), + color = selectionColor + ) { + Icon( + Icons.Outlined.Create, + contentDescription = "Create", + tint = Color.White, + modifier = Modifier + .padding(30.dp) + .size(40.dp) + .sharedElement( + rememberSharedContentState(key = "icon"), + this@AnimatedVisibility + ) + ) + } + } + } + } +} + +private val listSnacks = listOf( + Snack("Cupcake", "", R.drawable.cupcake), + Snack("Donut", "", R.drawable.donut), + Snack("Eclair", "", R.drawable.eclair), + Snack("Froyo", "", R.drawable.froyo), + Snack("Gingerbread", "", R.drawable.gingerbread), + Snack("Honeycomb", "", R.drawable.honeycomb), +) + +@Preview +@Composable +fun PlaceholderSizeAnimated_Demo() { + // This demo shows how other items in a layout can respond to shared elements changing in size. + // [START android_compose_shared_element_placeholder_size] + SharedTransitionLayout { + + val navController = rememberNavController() + NavHost( + navController = navController, + startDestination = "home" + ) { + composable("home", enterTransition = { fadeIn() }, exitTransition = { fadeOut() }) { + Column(modifier = Modifier.fillMaxSize()) { + Row(modifier = Modifier.horizontalScroll(rememberScrollState())) { + (listSnacks).forEachIndexed { index, snack -> + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .padding(8.dp) + .sharedBounds( + rememberSharedContentState(key = "image-${snack.name}"), + animatedVisibilityScope = this@composable, + placeHolderSize = SharedTransitionScope.PlaceHolderSize.animatedSize + ) + .clickable { + navController.navigate("details/$index") + } + .height(180.dp) + .clip(RoundedCornerShape(8.dp)) + .aspectRatio(9f / 16f) + + ) + } + } + Text("Nearby snacks") + Row(modifier = Modifier.horizontalScroll(rememberScrollState())) { + (listSnacks).forEach { snack -> + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .height(200.dp) + .aspectRatio(16f / 9f) + .padding(8.dp) + ) + } + } + } + } + composable( + "details/{id}", + arguments = listOf(navArgument("id") { type = NavType.IntType }), + enterTransition = { fadeIn() }, exitTransition = { fadeOut() } + ) { backStackEntry -> + val id = backStackEntry.arguments?.getInt("id") + val snack = listSnacks[id!!] + Column( + Modifier + .fillMaxSize() + .clickable { + navController.navigateUp() + } + ) { + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "image-${snack.name}"), + animatedVisibilityScope = this@composable, + placeHolderSize = SharedTransitionScope.PlaceHolderSize.animatedSize + ) + .clip(RoundedCornerShape(8.dp)) + .fillMaxWidth() + .aspectRatio(9f / 16f) + ) + } + } + } + } +// [END android_compose_shared_element_placeholder_size] +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt new file mode 100644 index 000000000..3878fa6ad --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt @@ -0,0 +1,200 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibilityScope +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.compose.snippets.R +import com.example.compose.snippets.ui.theme.LavenderLight +import com.example.compose.snippets.ui.theme.RoseLight + +@Preview +@Composable +fun SharedBoundsDemo() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } + } + } +} + +// [START android_compose_animations_shared_element_shared_bounds] +@Composable +private fun MainContent( + onShowDetails: () -> Unit, + modifier: Modifier = Modifier, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope +) { + with(sharedTransitionScope) { + Row( + modifier = Modifier + .padding(8.dp) + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn(), + exit = fadeOut(), + resizeMode = SharedTransitionScope.ResizeMode.ScaleToBounds() + ) + // [START_EXCLUDE] + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + // [START_EXCLUDE] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope + ) + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 21.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + // [END_EXCLUDE] + } + } +} + +@Composable +private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope +) { + with(sharedTransitionScope) { + Column( + modifier = Modifier + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn(), + exit = fadeOut(), + resizeMode = SharedTransitionScope.ResizeMode.ScaleToBounds() + ) + // [START_EXCLUDE] + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + + ) { + // [START_EXCLUDE] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope + ) + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 28.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + // [END_EXCLUDE] + } + } +} +// [END android_compose_animations_shared_element_shared_bounds] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt new file mode 100644 index 000000000..944122d1d --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt @@ -0,0 +1,101 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.annotation.DrawableRes +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalInspectionMode +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import coil.compose.AsyncImage +import coil.request.ImageRequest + +@Preview +@Composable +private fun SharedAsyncImage() { + SharedTransitionLayout { + AnimatedVisibility(visible = true) { + // [START android_compose_shared_element_async_image_tip] + AsyncImage( + model = ImageRequest.Builder(LocalContext.current) + .data("your-image-url") + .crossfade(true) + .placeholderMemoryCacheKey("image-key") // same key as shared element key + .memoryCacheKey("image-key") // same key as shared element key + .build(), + placeholder = null, + contentDescription = null, + modifier = Modifier + .size(120.dp) + .sharedBounds( + rememberSharedContentState( + key = "image-key" + ), + animatedVisibilityScope = this + ) + ) + // [END android_compose_shared_element_async_image_tip] + } + } +} + +@Composable +fun debugPlaceholder(@DrawableRes debugPreview: Int) = + if (LocalInspectionMode.current) { + painterResource(id = debugPreview) + } else { + null + } + +@Preview +@Composable +private fun SharedElementTypicalUseText() { + SharedTransitionLayout { + AnimatedVisibility(visible = true) { + // [START android_compose_shared_element_text_tip] + Text( + text = "This is an example of how to share text", + modifier = Modifier + .wrapContentWidth() + .sharedBounds( + rememberSharedContentState( + key = "shared Text" + ), + animatedVisibilityScope = this, + enter = fadeIn(), + exit = fadeOut(), + resizeMode = SharedTransitionScope.ResizeMode.ScaleToBounds() + ) + ) + // [END android_compose_shared_element_text_tip] + } + } +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt new file mode 100644 index 000000000..da1d178fb --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt @@ -0,0 +1,195 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.annotation.DrawableRes +import androidx.compose.animation.AnimatedContentScope +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.foundation.Image +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController +import androidx.navigation.NavType +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import androidx.navigation.navArgument +import com.example.compose.snippets.R + +private val listSnacks = listOf( + Snack("Cupcake", "", R.drawable.cupcake), + Snack("Donut", "", R.drawable.donut), + Snack("Eclair", "", R.drawable.eclair), + Snack("Froyo", "", R.drawable.froyo), + Snack("Gingerbread", "", R.drawable.gingerbread), + Snack("Honeycomb", "", R.drawable.honeycomb), +) + +// [START android_compose_shared_element_predictive_back] +@Preview +@Composable +fun SharedElement_PredictiveBack() { + SharedTransitionLayout { + val navController = rememberNavController() + NavHost( + navController = navController, + startDestination = "home" + ) { + composable("home") { + HomeScreen( + navController, + this@SharedTransitionLayout, + this@composable + ) + } + composable( + "details/{item}", + arguments = listOf(navArgument("item") { type = NavType.IntType }) + ) { backStackEntry -> + val id = backStackEntry.arguments?.getInt("item") + val snack = listSnacks[id!!] + DetailsScreen( + navController, + id, + snack, + this@SharedTransitionLayout, + this@composable + ) + } + } + } +} + +@Composable +private fun DetailsScreen( + navController: NavHostController, + id: Int, + snack: Snack, + sharedTransitionScope: SharedTransitionScope, + animatedContentScope: AnimatedContentScope +) { + with(sharedTransitionScope) { + Column( + Modifier + .fillMaxSize() + .clickable { + navController.navigate("home") + } + ) { + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .sharedElement( + sharedTransitionScope.rememberSharedContentState(key = "image-$id"), + animatedVisibilityScope = animatedContentScope + ) + .aspectRatio(1f) + .fillMaxWidth() + ) + Text( + snack.name, fontSize = 18.sp, + modifier = + Modifier + .sharedElement( + sharedTransitionScope.rememberSharedContentState(key = "text-$id"), + animatedVisibilityScope = animatedContentScope + ) + .fillMaxWidth() + ) + } + } +} + +@Composable +private fun HomeScreen( + navController: NavHostController, + sharedTransitionScope: SharedTransitionScope, + animatedContentScope: AnimatedContentScope +) { + LazyColumn( + modifier = Modifier + .fillMaxSize() + .padding(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + itemsIndexed(listSnacks) { index, item -> + Row( + Modifier.clickable { + navController.navigate("details/$index") + } + ) { + Spacer(modifier = Modifier.width(8.dp)) + with(sharedTransitionScope) { + Image( + painterResource(id = item.image), + contentDescription = item.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .sharedElement( + sharedTransitionScope.rememberSharedContentState(key = "image-$index"), + animatedVisibilityScope = animatedContentScope + ) + .size(100.dp) + ) + Spacer(modifier = Modifier.width(8.dp)) + Text( + item.name, fontSize = 18.sp, + modifier = Modifier + .align(Alignment.CenterVertically) + .sharedElement( + sharedTransitionScope.rememberSharedContentState(key = "text-$index"), + animatedVisibilityScope = animatedContentScope, + ) + ) + } + } + } + } +} + +data class Snack( + val name: String, + val description: String, + @DrawableRes val image: Int +) +// [END android_compose_shared_element_predictive_back] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/architecture/ArchitectureSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/architecture/ArchitectureSnippets.kt index b22421ff5..3f9f41c3a 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/architecture/ArchitectureSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/architecture/ArchitectureSnippets.kt @@ -18,13 +18,14 @@ package com.example.compose.snippets.architecture import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.wrapContentSize -import androidx.compose.material.Icon -import androidx.compose.material.IconButton -import androidx.compose.material.OutlinedTextField -import androidx.compose.material.Text -import androidx.compose.material.TopAppBar import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.State import androidx.compose.runtime.getValue @@ -70,7 +71,7 @@ private object ArchitectureSnippets2 { private object ArchitectureSnippets3 { val localizedString = "" - + @OptIn(ExperimentalMaterial3Api::class) // [START android_compose_architecture_architecture3] @Composable fun MyAppTopAppBar(topAppBarText: String, onBackPressed: () -> Unit) { @@ -87,7 +88,7 @@ private object ArchitectureSnippets3 { navigationIcon = { IconButton(onClick = onBackPressed) { Icon( - Icons.Filled.ArrowBack, + Icons.AutoMirrored.Filled.ArrowBack, contentDescription = localizedString ) } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Card.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Card.kt index 1259685ef..1b755819b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/Card.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Card.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.example.topcomponents +package com.example.compose.snippets.components import android.util.Log import androidx.compose.foundation.BorderStroke @@ -27,7 +27,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.ElevatedCard -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedCard import androidx.compose.material3.Text @@ -55,7 +54,6 @@ fun CardExamples() { } } -@OptIn(ExperimentalMaterial3Api::class) // [START android_compose_components_customcard] @Composable fun CustomCardExample(event: () -> Unit) { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Chip.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Chip.kt index 0737ddc8b..36533db75 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/Chip.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Chip.kt @@ -29,7 +29,6 @@ import androidx.compose.material.icons.filled.Person import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.AssistChip import androidx.compose.material3.AssistChipDefaults -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FilterChip import androidx.compose.material3.FilterChipDefaults import androidx.compose.material3.Icon @@ -86,7 +85,6 @@ fun AssistChipExample() { } // [END android_compose_components_assistchip] -@OptIn(ExperimentalMaterial3Api::class) @Preview // [START android_compose_components_filterchip] @Composable @@ -116,7 +114,6 @@ fun FilterChipExample() { // You could set this up similarly to the filter chip above and have it toggleable, but this is // an example of a chip that can dismiss with a click. -@OptIn(ExperimentalMaterial3Api::class) // [START android_compose_components_inputchip] @Composable fun InputChipExample( diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Dialog.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Dialog.kt index b2ab9b723..beb0356b9 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/Dialog.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Dialog.kt @@ -32,7 +32,6 @@ import androidx.compose.material.icons.filled.Info import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.Card -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface @@ -220,7 +219,6 @@ fun DialogWithImage( // [END android_compose_components_dialogwithimage] // [START android_compose_components_alertdialog] -@OptIn(ExperimentalMaterial3Api::class) @Composable fun AlertDialogExample( onDismissRequest: () -> Unit, diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/AppCompatThemeSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/AppCompatThemeSnippets.kt deleted file mode 100644 index 56cf8e370..000000000 --- a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/AppCompatThemeSnippets.kt +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.compose.snippets.designsystems - -import android.os.Bundle -import androidx.activity.compose.setContent -import androidx.appcompat.app.AppCompatActivity -// [START android_compose_designsystems_interop_appcompattheme] -import com.google.accompanist.themeadapter.appcompat.AppCompatTheme - -class AppCompatThemeExample : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContent { - // Colors and typography have been read from the - // View-based theme used in this Activity - // Shapes are the default for M2 as this didn't exist in M1 - AppCompatTheme { - // Your app-level composable here - } - } - } -} -// [END android_compose_designsystems_interop_appcompattheme] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/CustomDesignSystem.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/CustomDesignSystem.kt index fd864ac3d..8b42ab1b8 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/CustomDesignSystem.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/CustomDesignSystem.kt @@ -41,6 +41,7 @@ import androidx.compose.ui.unit.sp private object CustomDesignSystemExtend { // [START android_compose_designsystems_custom_extend] + // Use with MaterialTheme.colorScheme.snackbarAction val ColorScheme.snackbarAction: Color @Composable @@ -326,6 +327,7 @@ object FullyCustomDesignSystem { .compositeOver(CustomTheme.colors.component), disabledContentColor = CustomTheme.colors.content .copy(alpha = 0.38f) + ), shape = ButtonShape, elevation = ButtonDefaults.elevatedButtonElevation( diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material2Snippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material2Snippets.kt index f70cd4155..e838a1b7f 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material2Snippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material2Snippets.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -@file:Suppress("unused") +@file:Suppress("unused", "DEPRECATION_ERROR", "UsingMaterialAndMaterial3Libraries") package com.example.compose.snippets.designsystems @@ -38,7 +38,7 @@ import androidx.compose.material.Typography import androidx.compose.material.contentColorFor import androidx.compose.material.darkColors import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.lightColors import androidx.compose.material.primarySurface import androidx.compose.material.ripple.LocalRippleTheme @@ -158,7 +158,7 @@ fun ColorUsage() { CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.disabled) { Icon( // [START_EXCLUDE] - Icons.Filled.ArrowBack, + Icons.AutoMirrored.Filled.ArrowBack, contentDescription = null // [END_EXCLUDE] ) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt index 18f1ceb94..5d5d72d37 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt @@ -30,7 +30,6 @@ import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon @@ -53,7 +52,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.RectangleShape @@ -72,7 +70,6 @@ import com.example.compose.snippets.ui.theme.Typography private object Material3Snippets { // [START android_compose_material3_experimental_annotation] // import androidx.compose.material3.ExperimentalMaterial3Api - @OptIn(ExperimentalMaterial3Api::class) @Composable fun AppComposable() { // M3 composables diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/MdcThemeSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/MdcThemeSnippets.kt deleted file mode 100644 index 514b9af03..000000000 --- a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/MdcThemeSnippets.kt +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.compose.snippets.designsystems - -import android.os.Bundle -import androidx.activity.compose.setContent -import androidx.appcompat.app.AppCompatActivity -// [START android_compose_designsystems_interop_mdctheme] -import com.google.accompanist.themeadapter.material.MdcTheme - -class MdcThemeExample : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - // Use MdcTheme instead of M2 MaterialTheme - // Colors, typography, and shapes have been read from the - // View-based theme used in this Activity - setContent { - MdcTheme { - // Your app-level composable here - } - } - } -} -// [END android_compose_designsystems_interop_mdctheme] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt index aaea6a62b..e1300358b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt @@ -149,17 +149,14 @@ private object CreateUI { provideContent { // create your AppWidget here - GlanceTheme { - MyContent() - } + MyContent() } } @Composable private fun MyContent() { Column( - modifier = GlanceModifier.fillMaxSize() - .background(GlanceTheme.colors.background), + modifier = GlanceModifier.fillMaxSize(), verticalAlignment = Alignment.Top, horizontalAlignment = Alignment.CenterHorizontally ) { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt index 900f38da6..bc16c96a5 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt @@ -21,7 +21,6 @@ import android.content.Context import android.content.Intent import android.content.Intent.createChooser import android.graphics.Bitmap -import android.graphics.Picture import android.media.MediaScannerConnection import android.net.Uri import android.os.Build @@ -29,7 +28,9 @@ import android.os.Environment import android.provider.MediaStore import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize @@ -44,18 +45,17 @@ import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarResult import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawWithCache +import androidx.compose.ui.draw.drawWithContent import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.drawscope.draw -import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.graphics.nativeCanvas +import androidx.compose.ui.graphics.asAndroidBitmap +import androidx.compose.ui.graphics.layer.drawLayer +import androidx.compose.ui.graphics.rememberGraphicsLayer import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource @@ -87,14 +87,44 @@ import kotlinx.coroutines.suspendCancellableCoroutine * limitations under the License. */ +@Preview +@Composable +private fun CreateBitmapFromGraphicsLayer() { + // [START android_compose_graphics_layer_bitmap_basics] + val coroutineScope = rememberCoroutineScope() + val graphicsLayer = rememberGraphicsLayer() + Box( + modifier = Modifier + .drawWithContent { + // call record to capture the content in the graphics layer + graphicsLayer.record { + // draw the contents of the composable into the graphics layer + this@drawWithContent.drawContent() + } + // draw the graphics layer on the visible canvas + drawLayer(graphicsLayer) + } + .clickable { + coroutineScope.launch { + val bitmap = graphicsLayer.toImageBitmap() + // do something with the newly acquired bitmap + } + } + .background(Color.White) + ) { + Text("Hello Android", fontSize = 26.sp) + } + // [END android_compose_graphics_layer_bitmap_basics] +} + @OptIn(ExperimentalPermissionsApi::class) @Preview @Composable -fun BitmapFromComposableSnippet() { +fun BitmapFromComposableFullSnippet() { val context = LocalContext.current val coroutineScope = rememberCoroutineScope() val snackbarHostState = remember { SnackbarHostState() } - val picture = remember { Picture() } + val graphicsLayer = rememberGraphicsLayer() val writeStorageAccessState = rememberMultiplePermissionsState( if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -104,14 +134,15 @@ fun BitmapFromComposableSnippet() { listOf(Manifest.permission.WRITE_EXTERNAL_STORAGE) } ) + // This logic should live in your ViewModel - trigger a side effect to invoke URI sharing. // checks permissions granted, and then saves the bitmap from a Picture that is already capturing content // and shares it with the default share sheet. fun shareBitmapFromComposable() { if (writeStorageAccessState.allPermissionsGranted) { coroutineScope.launch { - val bitmap = createBitmapFromPicture(picture) - val uri = bitmap.saveToDisk(context) + val bitmap = graphicsLayer.toImageBitmap() + val uri = bitmap.asAndroidBitmap().saveToDisk(context) shareBitmap(context, uri) } } else if (writeStorageAccessState.shouldShowRationale) { @@ -140,39 +171,22 @@ fun BitmapFromComposableSnippet() { } } ) { padding -> - // [START android_compose_draw_into_bitmap] Column( modifier = Modifier .padding(padding) .fillMaxSize() .drawWithCache { - // Example that shows how to redirect rendering to an Android Picture and then - // draw the picture into the original destination - val width = this.size.width.toInt() - val height = this.size.height.toInt() - onDrawWithContent { - val pictureCanvas = - androidx.compose.ui.graphics.Canvas( - picture.beginRecording( - width, - height - ) - ) - // requires at least 1.6.0-alpha01+ - draw(this, this.layoutDirection, pictureCanvas, this.size) { + graphicsLayer.record { this@onDrawWithContent.drawContent() } - picture.endRecording() - - drawIntoCanvas { canvas -> canvas.nativeCanvas.drawPicture(picture) } + drawLayer(graphicsLayer) } } ) { ScreenContentToCapture() } - // [END android_compose_draw_into_bitmap] } } @@ -207,25 +221,6 @@ private fun ScreenContentToCapture() { } } -private fun createBitmapFromPicture(picture: Picture): Bitmap { - // [START android_compose_draw_into_bitmap_convert_picture] - val bitmap = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - Bitmap.createBitmap(picture) - } else { - val bitmap = Bitmap.createBitmap( - picture.width, - picture.height, - Bitmap.Config.ARGB_8888 - ) - val canvas = android.graphics.Canvas(bitmap) - canvas.drawColor(android.graphics.Color.WHITE) - canvas.drawPicture(picture) - bitmap - } - // [END android_compose_draw_into_bitmap_convert_picture] - return bitmap -} - private suspend fun Bitmap.saveToDisk(context: Context): Uri { val file = File( Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/BrushExampleSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/BrushExampleSnippets.kt index 0aaf13b93..23a6a58ee 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/BrushExampleSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/BrushExampleSnippets.kt @@ -51,7 +51,6 @@ import androidx.compose.ui.graphics.TileMode import androidx.compose.ui.graphics.drawscope.inset import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.imageResource -import androidx.compose.ui.text.ExperimentalTextApi import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview @@ -244,7 +243,6 @@ fun GraphicsBrushSizeRecreationExample() { // [END android_compose_graphics_brush_recreation] } -@OptIn(ExperimentalTextApi::class) @Preview @Composable fun GraphicsImageBrush() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/CanvasSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/CanvasSnippets.kt index 74e1a4d39..4b53db6e6 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/CanvasSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/CanvasSnippets.kt @@ -16,7 +16,6 @@ package com.example.compose.snippets.graphics -import android.graphics.Canvas import android.graphics.drawable.ShapeDrawable import android.graphics.drawable.shapes.OvalShape import androidx.compose.animation.core.Animatable @@ -48,7 +47,6 @@ import androidx.compose.ui.graphics.drawscope.withTransform import androidx.compose.ui.graphics.nativeCanvas import androidx.compose.ui.res.imageResource import androidx.compose.ui.text.AnnotatedString -import androidx.compose.ui.text.ExperimentalTextApi import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.drawText import androidx.compose.ui.text.rememberTextMeasurer @@ -59,7 +57,6 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.toSize import com.example.compose.snippets.R -import java.util.Collections.rotate /* * Copyright 2022 The Android Open Source Project @@ -192,7 +189,6 @@ fun CanvasMultipleTransformations() { // [END android_compose_graphics_canvas_multiple_transforms] } -@OptIn(ExperimentalTextApi::class) @Preview @Composable fun CanvasDrawText() { @@ -238,7 +234,6 @@ fun CanvasDrawPath() { // [END android_compose_graphics_canvas_draw_path] } -@OptIn(ExperimentalTextApi::class) @Preview @Composable fun CanvasMeasureText() { @@ -268,7 +263,6 @@ fun CanvasMeasureText() { // [END android_compose_graphics_canvas_draw_text_measure] } -@OptIn(ExperimentalTextApi::class) @Preview @Composable fun CanvasMeasureTextOverflow() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/interop/ComposeWithOtherLibraries.kt b/compose/snippets/src/main/java/com/example/compose/snippets/interop/ComposeWithOtherLibraries.kt index 3fc79a661..fe5320680 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/interop/ComposeWithOtherLibraries.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/interop/ComposeWithOtherLibraries.kt @@ -26,8 +26,8 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.material.Button -import androidx.compose.material.Text +import androidx.compose.material3.Button +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.State import androidx.compose.runtime.getValue diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/interop/MigrationCommonScenariosSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/interop/MigrationCommonScenariosSnippets.kt index 6b146981c..59ac0129d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/interop/MigrationCommonScenariosSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/interop/MigrationCommonScenariosSnippets.kt @@ -36,10 +36,10 @@ import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Image -import androidx.compose.material3.Divider import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.FloatingActionButton +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.ModalDrawerSheet import androidx.compose.material3.ModalNavigationDrawer @@ -64,10 +64,12 @@ import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController +import androidx.navigation.toRoute import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import kotlinx.coroutines.launch +import kotlinx.serialization.Serializable class RVActivity : ComponentActivity() { private lateinit var composeView: ComposeView @@ -104,13 +106,13 @@ class RVActivity : ComponentActivity() { } @Composable - fun commonUseCase2(data: List) { + fun CommonUseCase2(data: List) { // [START android_compose_interop_migration_common_scenarios_recyclerview_common_use_case_2] LazyColumn(Modifier.fillMaxSize()) { itemsIndexed(data) { index, d -> ListItem(d) if (index != data.size - 1) { - Divider() + HorizontalDivider() } } } @@ -141,6 +143,13 @@ class SampleActivity : ComponentActivity() { } // [END android_compose_interop_migration_common_scenarios_navigation_step_2] +// [START android_compose_interop_migration_common_scenarios_navigation_step_2_1] +@Serializable data object First +@Serializable data class Second(val id: String) +@Serializable data object Third + +// [END android_compose_interop_migration_common_scenarios_navigation_step_2_1] + private object MigrationCommonScenariosNavigationStep3 { // [START android_compose_interop_migration_common_scenarios_navigation_step_3] @Composable @@ -164,7 +173,7 @@ private object MigrationCommonScenariosNavigationStep4 { fun SampleNavHost( navController: NavHostController ) { - NavHost(navController = navController, startDestination = "first") { + NavHost(navController = navController, startDestination = First) { // ... } } @@ -191,11 +200,11 @@ class FirstFragment : Fragment() { fun SampleNavHost( navController: NavHostController ) { - NavHost(navController = navController, startDestination = "first") { - composable("first") { + NavHost(navController = navController, startDestination = First) { + composable { FirstScreen(/* ... */) // EXTRACT TO HERE } - composable("second") { + composable { SecondScreen(/* ... */) } // ... @@ -220,20 +229,22 @@ private object MigrationCommonScenariosNavigationStep7 { fun SampleNavHost( navController: NavHostController ) { - NavHost(navController = navController, startDestination = "first") { - composable("first") { + NavHost(navController = navController, startDestination = First) { + composable { FirstScreen( onButtonClick = { // findNavController().navigate(firstScreenToSecondScreenAction) - navController.navigate("second_screen_route") + navController.navigate(Second(id = "ABC")) } ) } - composable("second") { + composable { backStackEntry -> + val secondRoute = backStackEntry.toRoute() SecondScreen( + id = secondRoute.id, onIconClick = { // findNavController().navigate(secondScreenToThirdScreenAction) - navController.navigate("third_screen_route") + navController.navigate(Third) } ) } @@ -260,7 +271,6 @@ class CoordinatorLayoutActivity : ComponentActivity() { // [END android_compose_interop_migration_common_scenarios_coordinatorlayout_step2] } - @OptIn(ExperimentalFoundationApi::class) private fun step3() { // [START android_compose_interop_migration_common_scenarios_coordinatorlayout_step3] composeView.setContent { @@ -315,7 +325,7 @@ class CoordinatorLayoutActivity : ComponentActivity() { @OptIn(ExperimentalMaterial3Api::class) @Composable - private fun commonUseCaseToolbars() { + private fun CommonUseCaseToolbars() { // [START android_compose_interop_migration_common_scenarios_coordinatorlayout_toolbars] // 1. Create the TopAppBarScrollBehavior val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior() @@ -344,13 +354,13 @@ class CoordinatorLayoutActivity : ComponentActivity() { } @Composable - private fun commonUseCaseDrawers() { + private fun CommonUseCaseDrawers() { // [START android_compose_interop_migration_common_scenarios_coordinatorlayout_drawers] ModalNavigationDrawer( drawerContent = { ModalDrawerSheet { Text("Drawer title", modifier = Modifier.padding(16.dp)) - Divider() + HorizontalDivider() NavigationDrawerItem( label = { Text(text = "Drawer Item") }, selected = false, @@ -371,7 +381,7 @@ class CoordinatorLayoutActivity : ComponentActivity() { } @Composable - private fun commonUseCaseSnackbars() { + private fun CommonUseCaseSnackbars() { // [START android_compose_interop_migration_common_scenarios_coordinatorlayout_snackbars] val scope = rememberCoroutineScope() val snackbarHostState = remember { SnackbarHostState() } @@ -410,6 +420,7 @@ fun SampleApp() { @Composable fun SecondScreen( + id: String = "", onIconClick: () -> Unit = {}, ) { } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/kotlin/KotlinSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/kotlin/KotlinSnippets.kt index 9edd96be3..12c5618b4 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/kotlin/KotlinSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/kotlin/KotlinSnippets.kt @@ -34,8 +34,8 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.Button -import androidx.compose.material.Text +import androidx.compose.material3.Button +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -43,7 +43,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.focus.FocusRequester.Companion.createRefs @@ -220,7 +219,6 @@ fun destructuring() { // [END android_compose_kotlin_destructuring] } -@OptIn(ExperimentalComposeUiApi::class) @Composable fun DestructuringCompose() { // [START android_compose_kotlin_destructuring_compose] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt b/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt index 6b7c1a874..79083bd3b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt @@ -16,14 +16,17 @@ package com.example.compose.snippets.landing +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material3.Button +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -65,12 +68,11 @@ fun LandingScreen( fun NavigationItems(navigate: (Destination) -> Unit) { LazyColumn( modifier = Modifier - .padding(16.dp) .fillMaxSize(), verticalArrangement = Arrangement.spacedBy(8.dp), horizontalAlignment = Alignment.CenterHorizontally, ) { - items(Destination.values().toList()) { destination -> + items(Destination.entries) { destination -> NavigationItem(destination) { navigate( destination @@ -82,9 +84,14 @@ fun NavigationItems(navigate: (Destination) -> Unit) { @Composable fun NavigationItem(destination: Destination, onClick: () -> Unit) { - Button( - onClick = { onClick() } + Box( + modifier = Modifier + .heightIn(min = 48.dp) + .clickable { + onClick() + } ) { Text(destination.title) + HorizontalDivider(modifier = Modifier.align(Alignment.BottomCenter)) } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AdaptiveLayoutSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AdaptiveLayoutSnippets.kt index c66253cd6..7980eae05 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AdaptiveLayoutSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AdaptiveLayoutSnippets.kt @@ -21,7 +21,6 @@ package com.example.compose.snippets.layouts import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row -import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -48,7 +47,6 @@ import androidx.window.core.layout.WindowSizeClass * limitations under the License. */ // [START android_compose_adaptive_layouts_basic] -@OptIn(ExperimentalMaterial3AdaptiveApi::class) @Composable fun MyApp( windowSizeClass: WindowSizeClass = currentWindowAdaptiveInfo().windowSizeClass diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AlignmentLinesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AlignmentLinesSnippets.kt index e312de9b9..8946384b1 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AlignmentLinesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AlignmentLinesSnippets.kt @@ -35,8 +35,8 @@ package com.example.compose.snippets.layouts import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Text +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CommonLayoutExamples.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CommonLayoutExamples.kt index fd3b257bd..98f5b03af 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CommonLayoutExamples.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CommonLayoutExamples.kt @@ -19,7 +19,6 @@ package com.example.compose.snippets.layouts import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.aspectRatio @@ -53,7 +52,6 @@ import kotlin.random.Random * See the License for the specific language governing permissions and * limitations under the License. */ -@OptIn(ExperimentalLayoutApi::class) @Composable @Preview fun Layout_Graph_Vertical() { @@ -80,7 +78,6 @@ fun Layout_Graph_Vertical() { // [END android_compose_layout_vertical_graph] } -@OptIn(ExperimentalLayoutApi::class) @Composable @Preview fun Layout_Graph_Horizontal() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/ConstraintLayoutSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/ConstraintLayoutSnippets.kt index fe2106a93..d9763de19 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/ConstraintLayoutSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/ConstraintLayoutSnippets.kt @@ -19,8 +19,8 @@ package com.example.compose.snippets.layouts import androidx.compose.foundation.layout.BoxWithConstraints -import androidx.compose.material.Button -import androidx.compose.material.Text +import androidx.compose.material3.Button +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.Dp diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CustomLayoutSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CustomLayoutSnippets.kt index 72c6cb0af..a92c0c2d8 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CustomLayoutSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CustomLayoutSnippets.kt @@ -34,7 +34,7 @@ package com.example.compose.snippets.layouts * limitations under the License. */ import androidx.compose.foundation.layout.padding -import androidx.compose.material.Text +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.layout.AlignmentLine diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/FlowLayoutSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/FlowLayoutSnippets.kt index 941ae99df..164dd3ea4 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/FlowLayoutSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/FlowLayoutSnippets.kt @@ -21,25 +21,40 @@ import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.ContextualFlowRow +import androidx.compose.foundation.layout.ContextualFlowRowOverflow +import androidx.compose.foundation.layout.ContextualFlowRowOverflowScope import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowColumn import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.safeDrawingPadding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.Chip +import androidx.compose.foundation.verticalScroll import androidx.compose.material.ExperimentalMaterialApi -import androidx.compose.material.Text +import androidx.compose.material3.FilterChip +import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp import com.example.compose.snippets.util.MaterialColors @Preview @@ -262,15 +277,17 @@ private fun FlowItems() { @OptIn(ExperimentalMaterialApi::class) @Composable -fun ChipItem(text: String) { - Chip( +fun ChipItem(text: String, onClick: () -> Unit = {}) { + FilterChip( modifier = Modifier.padding(end = 4.dp), - onClick = {}, + onClick = onClick, leadingIcon = {}, - border = BorderStroke(1.dp, Color(0xFF3B3A3C)) - ) { - Text(text) - } + border = BorderStroke(1.dp, Color(0xFF3B3A3C)), + label = { + Text(text) + }, + selected = false + ) } @Composable @@ -426,9 +443,115 @@ fun FlowLayout_FractionalSizing() { ) { val itemModifier = Modifier .clip(RoundedCornerShape(8.dp)) - Box(modifier = itemModifier.height(200.dp).width(60.dp).background(Color.Red)) - Box(modifier = itemModifier.height(200.dp).fillMaxWidth(0.7f).background(Color.Blue)) - Box(modifier = itemModifier.height(200.dp).weight(1f).background(Color.Magenta)) + Box( + modifier = itemModifier + .height(200.dp) + .width(60.dp) + .background(Color.Red) + ) + Box( + modifier = itemModifier + .height(200.dp) + .fillMaxWidth(0.7f) + .background(Color.Blue) + ) + Box( + modifier = itemModifier + .height(200.dp) + .weight(1f) + .background(Color.Magenta) + ) } // [END android_compose_flow_layout_fractional_sizing] } + +@OptIn(ExperimentalLayoutApi::class) +@Preview +@Composable +fun ContextualFlowLayoutExample() { + // [START android_compose_layouts_contextual_flow] + val totalCount = 40 + var maxLines by remember { + mutableStateOf(2) + } + + val moreOrCollapseIndicator = @Composable { scope: ContextualFlowRowOverflowScope -> + val remainingItems = totalCount - scope.shownItemCount + ChipItem(if (remainingItems == 0) "Less" else "+$remainingItems", onClick = { + if (remainingItems == 0) { + maxLines = 2 + } else { + maxLines += 5 + } + }) + } + ContextualFlowRow( + modifier = Modifier + .safeDrawingPadding() + .fillMaxWidth(1f) + .padding(16.dp) + .wrapContentHeight(align = Alignment.Top) + .verticalScroll(rememberScrollState()), + verticalArrangement = Arrangement.spacedBy(4.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + maxLines = maxLines, + overflow = ContextualFlowRowOverflow.expandOrCollapseIndicator( + minRowsToShowCollapse = 4, + expandIndicator = moreOrCollapseIndicator, + collapseIndicator = moreOrCollapseIndicator + ), + itemCount = totalCount + ) { index -> + ChipItem("Item $index") + } + // [END android_compose_layouts_contextual_flow] +} + +@OptIn(ExperimentalLayoutApi::class) +@Preview +@Composable +fun FillMaxColumnWidth() { + // [START android_compose_flow_layouts_fill_max_column_width] + FlowColumn( + Modifier + .padding(20.dp) + .fillMaxHeight() + .fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + maxItemsInEachColumn = 5, + ) { + repeat(listDesserts.size) { + Box( + Modifier + .fillMaxColumnWidth() + .border(1.dp, Color.DarkGray, RoundedCornerShape(8.dp)) + .padding(8.dp) + ) { + + Text( + text = listDesserts[it], + fontSize = 18.sp, + modifier = Modifier.padding(3.dp) + ) + } + } + } + // [END android_compose_flow_layouts_fill_max_column_width] +} +private val listDesserts = listOf( + "Apple", + "Banana", + "Cupcake", + "Donut", + "Eclair", + "Froyo", + "Gingerbread", + "Honeycomb", + "Ice Cream Sandwich", + "Jellybean", + "KitKat", + "Lollipop", + "Marshmallow", + "Nougat", +) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/InsetsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/InsetsSnippets.kt index 2bbf276b8..4599fd392 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/InsetsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/InsetsSnippets.kt @@ -25,7 +25,6 @@ import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.WindowInsets @@ -115,7 +114,6 @@ fun ConsumedFromSiblingsSnippet() { @Composable fun ConsumedFromPaddingSnippet() { // [START android_compose_insets_consumed_from_padding] - @OptIn(ExperimentalLayoutApi::class) Column(Modifier.padding(16.dp).consumeWindowInsets(PaddingValues(16.dp))) { // content Spacer(Modifier.windowInsetsBottomHeight(WindowInsets.ime)) @@ -123,7 +121,6 @@ fun ConsumedFromPaddingSnippet() { // [END android_compose_insets_consumed_from_padding] } -@OptIn(ExperimentalLayoutApi::class) @Preview @Composable fun M3SupportScaffoldSnippet() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/IntrinsicSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/IntrinsicSnippets.kt index 012f09e59..9bc39b292 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/IntrinsicSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/IntrinsicSnippets.kt @@ -39,10 +39,10 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentWidth -import androidx.compose.material.Divider -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Surface -import androidx.compose.material.Text +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -71,7 +71,7 @@ private object IntrinsicsSnippet1 { .wrapContentWidth(Alignment.Start), text = text1 ) - Divider( + HorizontalDivider( color = Color.Black, modifier = Modifier.fillMaxHeight().width(1.dp) ) @@ -111,7 +111,7 @@ private object IntrinsicsSnippet2 { .wrapContentWidth(Alignment.Start), text = text1 ) - Divider( + HorizontalDivider( color = Color.Black, modifier = Modifier.fillMaxHeight().width(1.dp) ) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/MaterialLayoutSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/MaterialLayoutSnippets.kt index 9c7f9d4d3..b027c6eae 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/MaterialLayoutSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/MaterialLayoutSnippets.kt @@ -28,12 +28,12 @@ import androidx.compose.material.icons.filled.Image import androidx.compose.material3.BottomAppBar import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.Divider import androidx.compose.material3.DrawerValue import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.FabPosition import androidx.compose.material3.FloatingActionButton +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalBottomSheet @@ -291,7 +291,7 @@ fun DrawerDemo() { drawerContent = { ModalDrawerSheet { Text("Drawer title", modifier = Modifier.padding(16.dp)) - Divider() + HorizontalDivider() NavigationDrawerItem( label = { Text(text = "Drawer Item") }, selected = false, diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt index f65c96e6d..ec8e84cbf 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt @@ -14,15 +14,11 @@ * limitations under the License. */ -@file:OptIn( - ExperimentalFoundationApi::class -) @file:Suppress("unused") package com.example.compose.snippets.layouts import android.util.Log -import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -123,7 +119,6 @@ fun VerticalPagerSample() { // [END android_compose_layouts_pager_vertical_basic] } -@OptIn(ExperimentalFoundationApi::class) @Preview @Composable fun PagerScrollToItem() { @@ -214,7 +209,6 @@ fun PageChangesSample() { // [END android_compose_layouts_pager_notify_page_changes] } -@OptIn(ExperimentalFoundationApi::class) @Composable @Preview fun PagerWithTabsExample() { @@ -358,7 +352,6 @@ fun PagerWithTabs() { } // [END android_compose_layouts_pager_with_tabs] } -@OptIn(ExperimentalFoundationApi::class) @Preview @Composable fun PagerIndicator() { @@ -410,7 +403,6 @@ private val threePagesPerViewport = object : PageSize { } // [END android_compose_pager_custom_page_size] -@OptIn(ExperimentalFoundationApi::class) @Preview @Composable private fun CustomSnapDistance() { @@ -426,7 +418,7 @@ private fun CustomSnapDistance() { HorizontalPager( state = pagerState, pageSize = PageSize.Fixed(200.dp), - beyondBoundsPageCount = 10, + beyondViewportPageCount = 10, flingBehavior = fling ) { PagerSampleItem(page = it) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index e1107eba7..c8864f129 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -19,7 +19,8 @@ package com.example.compose.snippets.lists import androidx.compose.animation.AnimatedVisibility -import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.animation.core.Spring +import androidx.compose.animation.core.spring import androidx.compose.animation.core.tween import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.horizontalScroll @@ -263,7 +264,6 @@ private object ListsSnippetsReactingScrollPosition1 { private object ListsSnippetsReactingScrollPosition2 { // [START android_compose_layouts_lazy_column_scroll_to_top] - @OptIn(ExperimentalAnimationApi::class) @Composable fun MessageList(messages: List) { Box { @@ -425,7 +425,6 @@ private fun LazyColumnRememberSaveable() { // [END android_compose_layouts_lazy_column_any_key_saveable] } -@OptIn(ExperimentalFoundationApi::class) @Composable private fun LazyItemAnimations() { val books = remember { @@ -433,8 +432,9 @@ private fun LazyItemAnimations() { } // [START android_compose_layouts_lazy_column_item_animation] LazyColumn { + // It is important to provide a key to each item to ensure animateItem() works as expected. items(books, key = { it.id }) { - Row(Modifier.animateItemPlacement()) { + Row(Modifier.animateItem()) { // ... } } @@ -442,7 +442,6 @@ private fun LazyItemAnimations() { // [END android_compose_layouts_lazy_column_item_animation] } -@OptIn(ExperimentalFoundationApi::class) @Composable private fun LazyItemAnimationWithSpec() { val books = remember { @@ -452,8 +451,10 @@ private fun LazyItemAnimationWithSpec() { LazyColumn { items(books, key = { it.id }) { Row( - Modifier.animateItemPlacement( - tween(durationMillis = 250) + Modifier.animateItem( + fadeInSpec = tween(durationMillis = 250), + fadeOutSpec = tween(durationMillis = 100), + placementSpec = spring(stiffness = Spring.StiffnessLow, dampingRatio = Spring.DampingRatioMediumBouncy) ) ) { // ... @@ -630,7 +631,6 @@ private fun ContentTypeExample() { } @Preview -@OptIn(ExperimentalFoundationApi::class) @Composable fun LazyStaggeredGridSnippet() { // [START android_compose_layouts_lazy_staggered_grid_adaptive] @@ -653,7 +653,6 @@ fun LazyStaggeredGridSnippet() { // [END android_compose_layouts_lazy_staggered_grid_adaptive] } @Preview -@OptIn(ExperimentalFoundationApi::class) @Composable fun LazyStaggeredGridSnippetFixed() { // [START android_compose_layouts_lazy_staggered_grid_fixed] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/mentalmodel/ThinkingInComposeSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/mentalmodel/ThinkingInComposeSnippets.kt index 3cc21a966..eb4e4daca 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/mentalmodel/ThinkingInComposeSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/mentalmodel/ThinkingInComposeSnippets.kt @@ -24,11 +24,11 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.Button -import androidx.compose.material.Checkbox -import androidx.compose.material.Divider -import androidx.compose.material.Text +import androidx.compose.material3.Button +import androidx.compose.material3.Checkbox +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier @@ -137,7 +137,7 @@ fun NamePicker( Column { // this will recompose when [header] changes, but not when [names] changes Text(header, style = MaterialTheme.typography.bodyLarge) - Divider() + HorizontalDivider() // LazyColumn is the Compose version of a RecyclerView. // The lambda passed to items() is similar to a RecyclerView.ViewHolder. diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index 9007ba4df..9e7110503 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -23,6 +23,7 @@ enum class Destination(val route: String, val title: String) { ComponentsExamples("topComponents", "Top Compose Components"), ScreenshotExample("screenshotExample", "Screenshot Examples"), ShapesExamples("shapesExamples", "Shapes Examples"), + SharedElementExamples("sharedElement", "Shared elements") } // Enum class for compose components navigation screen. diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/resources/ResourcesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/resources/ResourcesSnippets.kt index b6b225a0c..0a2f34a56 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/resources/ResourcesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/resources/ResourcesSnippets.kt @@ -23,18 +23,17 @@ import androidx.compose.animation.graphics.res.animatedVectorResource import androidx.compose.animation.graphics.res.rememberAnimatedVectorPainter import androidx.compose.animation.graphics.vector.AnimatedImageVector import androidx.compose.foundation.layout.padding -import androidx.compose.material.Divider -import androidx.compose.material.Icon -import androidx.compose.material.Text import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Menu +import androidx.compose.material3.Divider +import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text import androidx.compose.material3.Typography import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.dimensionResource @@ -47,7 +46,6 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import com.example.compose.snippets.R -@OptIn(ExperimentalComposeUiApi::class) @Composable fun Strings() { // [START android_compose_resources_strings] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt index c68791a0f..976d7ac73 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt @@ -43,10 +43,10 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalLifecycleOwner import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.compose.LocalLifecycleOwner import com.example.compose.snippets.interop.FirebaseAnalytics import com.example.compose.snippets.interop.User import com.example.compose.snippets.kotlin.Message diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/state/SavingUIStateSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/state/SavingUIStateSnippets.kt index cfd35591f..cc35c128d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/state/SavingUIStateSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/state/SavingUIStateSnippets.kt @@ -20,8 +20,8 @@ package com.example.compose.snippets.state import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.text.ClickableText -import androidx.compose.material.Text -import androidx.compose.material.TextField +import androidx.compose.material3.Text +import androidx.compose.material3.TextField import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/state/StateOverviewSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/state/StateOverviewSnippets.kt index 503732ade..5ac1e71b4 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/state/StateOverviewSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/state/StateOverviewSnippets.kt @@ -16,6 +16,8 @@ @file:Suppress("unused") +package com.example.compose.snippets.state + import android.content.res.Resources import android.graphics.BitmapShader import android.graphics.Shader @@ -244,7 +246,7 @@ private fun RememberKeysSnippet3() { } /** - * Add fake Parcelize and Parcelable to avoid adding dependency on + * Add fake com.example.compose.snippets.state.Parcelize and com.example.compose.snippets.state.Parcelable to avoid adding dependency on * kotlin-parcelize just for snippets */ private annotation class Parcelize diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/EmojiSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/EmojiSnippets.kt index eb0495caf..7a32ed36c 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/EmojiSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/EmojiSnippets.kt @@ -24,7 +24,7 @@ import androidx.activity.ComponentActivity import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.AppCompatTextView import androidx.compose.foundation.layout.Column -import androidx.compose.material.Text +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.text.EmojiSupportMatch diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextDownloadableFontsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextDownloadableFontsSnippets.kt index 95b69e9cb..4eaffb648 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextDownloadableFontsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextDownloadableFontsSnippets.kt @@ -20,8 +20,8 @@ package com.example.compose.snippets.text import android.util.Log import androidx.compose.foundation.layout.Column -import androidx.compose.material.Text import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text import androidx.compose.material3.Typography import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider @@ -118,16 +118,16 @@ fun DownloadableFontsText() { private object TextDownloadableFontsSnippet4 { // [START android_compose_text_typography_definition] val MyTypography = Typography( - labelMedium = TextStyle( + bodyMedium = TextStyle( fontFamily = fontFamily, fontWeight = FontWeight.Normal, fontSize = 12.sp/*...*/ ), - labelLarge = TextStyle( + bodyLarge = TextStyle( fontFamily = fontFamily, fontWeight = FontWeight.Bold, letterSpacing = 2.sp, /*...*/ ), - displayMedium = TextStyle( + headlineMedium = TextStyle( fontFamily = fontFamily, fontWeight = FontWeight.SemiBold/*...*/ ), /*...*/ diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index dd5cf5a69..57e521cf3 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -18,9 +18,7 @@ package com.example.compose.snippets.text -import android.util.Log import androidx.compose.foundation.BorderStroke -import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.basicMarquee import androidx.compose.foundation.border @@ -31,7 +29,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.foundation.text.ClickableText import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.selection.DisableSelection import androidx.compose.foundation.text.selection.SelectionContainer @@ -53,11 +50,13 @@ import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color.Companion.Cyan import androidx.compose.ui.graphics.Shadow +import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.LinkAnnotation import androidx.compose.ui.text.ParagraphStyle import androidx.compose.ui.text.PlatformTextStyle import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.TextLinkStyles import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.Font @@ -71,6 +70,7 @@ import androidx.compose.ui.text.style.LineBreak import androidx.compose.ui.text.style.LineHeightStyle import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.text.withLink import androidx.compose.ui.text.withStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -417,54 +417,6 @@ private object TextPartiallySelectableSnippet { // [END android_compose_text_partial_selection] } -private object TextClickableSnippet { - // [START android_compose_text_clickable] - @Composable - fun SimpleClickableText() { - ClickableText(text = AnnotatedString("Click Me"), onClick = { offset -> - Log.d("ClickableText", "$offset -th character is clicked.") - }) - } - // [END android_compose_text_clickable] -} - -private object TextClickableAnnotatedSnippet { - // [START android_compose_text_clickable_annotated] - @Composable - fun AnnotatedClickableText() { - val annotatedText = buildAnnotatedString { - append("Click ") - - // We attach this *URL* annotation to the following content - // until `pop()` is called - pushStringAnnotation( - tag = "URL", annotation = "https://developer.android.com/" - ) - withStyle( - style = SpanStyle( - color = Color.Blue, fontWeight = FontWeight.Bold - ) - ) { - append("here") - } - - pop() - } - - ClickableText(text = annotatedText, onClick = { offset -> - // We check if there is an *URL* annotation attached to the text - // at the clicked position - annotatedText.getStringAnnotations( - tag = "URL", start = offset, end = offset - ).firstOrNull()?.let { annotation -> - // If yes, we log its value - Log.d("Clicked URL", annotation.item) - } - }) - } - // [END android_compose_text_clickable_annotated] -} - private object TextTextFieldSnippet { // [START android_compose_text_textfield_filled] @Composable @@ -591,6 +543,50 @@ private object TextEffectiveStateManagement2 { // [END android_compose_text_state_management] } +// [START android_compose_text_link_1] +@Composable +fun AnnotatedStringWithLinkSample() { + // Display a link in the text + Text( + buildAnnotatedString { + append("Build better apps faster with ") + withLink( + LinkAnnotation.Url( + "https://developer.android.com/jetpack/compose", + TextLinkStyles(style = SpanStyle(color = Color.Blue)) + ) + ) { + append("Jetpack Compose") + } + } + ) +} +// [END android_compose_text_link_1] + +// [START android_compose_text_link_2] +@Composable +fun AnnotatedStringWithListenerSample() { + // Display a link in the text and log metrics whenever user clicks on it. In that case we handle + // the link using openUri method of the LocalUriHandler + val uriHandler = LocalUriHandler.current + Text( + buildAnnotatedString { + append("Build better apps faster with ") + val link = + LinkAnnotation.Url( + "https://developer.android.com/jetpack/compose", + TextLinkStyles(SpanStyle(color = Color.Blue)) + ) { + val url = (it as LinkAnnotation.Url).url + // log some metrics + uriHandler.openUri(url) + } + withLink(link) { append("Jetpack Compose") } + } + ) +} +// [END android_compose_text_link_2] + @Composable private fun TextSample(samples: MapUnit>) { MaterialTheme { @@ -756,7 +752,6 @@ fun HyphenateTextSnippet() { @Preview(showBackground = true) // [START android_compose_text_marquee] -@OptIn(ExperimentalFoundationApi::class) @Composable fun BasicMarqueeSample() { // Marquee only animates when the content doesn't fit in the max width. @@ -770,9 +765,7 @@ fun BasicMarqueeSample() { } // [END android_compose_text_marquee] -// Using null just sets the font family to default, which is easier than supplying -// the actual font file in the snippets repo. This fixes a build warning. -private val firaSansFamily = null +private val firaSansFamily = FontFamily() val LightBlue = Color(0xFF0066FF) val Purple = Color(0xFF800080) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/Interactions.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/Interactions.kt new file mode 100644 index 000000000..14b012da1 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/Interactions.kt @@ -0,0 +1,643 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.touchinput + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.core.Animatable +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.spring +import androidx.compose.animation.core.tween +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.IndicationNodeFactory +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.focusable +import androidx.compose.foundation.hoverable +import androidx.compose.foundation.interaction.DragInteraction +import androidx.compose.foundation.interaction.Interaction +import androidx.compose.foundation.interaction.InteractionSource +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.interaction.PressInteraction +import androidx.compose.foundation.interaction.collectIsPressedAsState +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.defaultMinSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ShoppingCart +import androidx.compose.material.ripple +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonColors +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.ButtonElevation +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateListOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.scale +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.geometry.center +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.Brush.Companion.linearGradient +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.graphics.SolidColor +import androidx.compose.ui.graphics.drawOutline +import androidx.compose.ui.graphics.drawscope.ContentDrawScope +import androidx.compose.ui.graphics.drawscope.Stroke +import androidx.compose.ui.graphics.drawscope.scale +import androidx.compose.ui.node.DelegatableNode +import androidx.compose.ui.node.DrawModifierNode +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import kotlin.math.abs +import kotlin.math.sign +import kotlinx.coroutines.Job +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch + +@Composable +private fun InteractionsSnippet1() { + // [START android_compose_interactions_interaction_state] + val interactionSource = remember { MutableInteractionSource() } + val isPressed by interactionSource.collectIsPressedAsState() + + Button( + onClick = { /* do something */ }, + interactionSource = interactionSource + ) { + Text(if (isPressed) "Pressed!" else "Not pressed") + } + // [END android_compose_interactions_interaction_state] +} + +// [START android_compose_interactions_interaction_source_input] +fun Modifier.focusBorder(interactionSource: InteractionSource): Modifier { + // [START_EXCLUDE] + return this + // [END_EXCLUDE] +} +// [END android_compose_interactions_interaction_source_input] + +// [START android_compose_interactions_mutable_interaction_source_input] +fun Modifier.hover(interactionSource: MutableInteractionSource, enabled: Boolean): Modifier { + // [START_EXCLUDE] + return this + // [END_EXCLUDE] +} +// [END android_compose_interactions_mutable_interaction_source_input] + +// [START android_compose_interactions_high_level_component] +@Composable +fun Button( + onClick: () -> Unit, + modifier: Modifier = Modifier, + enabled: Boolean = true, + + // exposes MutableInteractionSource as a parameter + interactionSource: MutableInteractionSource? = null, + + elevation: ButtonElevation? = ButtonDefaults.elevatedButtonElevation(), + shape: Shape = MaterialTheme.shapes.small, + border: BorderStroke? = null, + colors: ButtonColors = ButtonDefaults.buttonColors(), + contentPadding: PaddingValues = ButtonDefaults.ContentPadding, + content: @Composable RowScope.() -> Unit +) { /* content() */ } +// [END android_compose_interactions_high_level_component] + +@Composable +fun HoverExample() { + // [START android_compose_interactions_hoverable] + // This InteractionSource will emit hover interactions + val interactionSource = remember { MutableInteractionSource() } + + Box( + Modifier + .size(100.dp) + .hoverable(interactionSource = interactionSource), + contentAlignment = Alignment.Center + ) { + Text("Hello!") + } + // [END android_compose_interactions_hoverable] +} + +@Composable +fun FocusableExample() { + // [START android_compose_interactions_focusable] + // This InteractionSource will emit hover and focus interactions + val interactionSource = remember { MutableInteractionSource() } + + Box( + Modifier + .size(100.dp) + .hoverable(interactionSource = interactionSource) + .focusable(interactionSource = interactionSource), + contentAlignment = Alignment.Center + ) { + Text("Hello!") + } + // [END android_compose_interactions_focusable] +} + +@Composable +fun ClickableExample() { + // [START android_compose_interactions_clickable] + // This InteractionSource will emit hover, focus, and press interactions + val interactionSource = remember { MutableInteractionSource() } + Box( + Modifier + .size(100.dp) + .clickable( + onClick = {}, + interactionSource = interactionSource, + + // Also show a ripple effect + indication = ripple() + ), + contentAlignment = Alignment.Center + ) { + Text("Hello!") + } + // [END android_compose_interactions_clickable] +} + +@Composable +private fun InteractionsSnippet2() { + // [START android_compose_interactions_flow_apis] + val interactionSource = remember { MutableInteractionSource() } + val interactions = remember { mutableStateListOf() } + + LaunchedEffect(interactionSource) { + interactionSource.interactions.collect { interaction -> + when (interaction) { + is PressInteraction.Press -> { + interactions.add(interaction) + } + is DragInteraction.Start -> { + interactions.add(interaction) + } + } + } + } + // [END android_compose_interactions_flow_apis] +} + +@Composable +private fun InteractionsSnippet3() { + // [START android_compose_interactions_add_remove] + val interactionSource = remember { MutableInteractionSource() } + val interactions = remember { mutableStateListOf() } + + LaunchedEffect(interactionSource) { + interactionSource.interactions.collect { interaction -> + when (interaction) { + is PressInteraction.Press -> { + interactions.add(interaction) + } + is PressInteraction.Release -> { + interactions.remove(interaction.press) + } + is PressInteraction.Cancel -> { + interactions.remove(interaction.press) + } + is DragInteraction.Start -> { + interactions.add(interaction) + } + is DragInteraction.Stop -> { + interactions.remove(interaction.start) + } + is DragInteraction.Cancel -> { + interactions.remove(interaction.start) + } + } + } + } + // [END android_compose_interactions_add_remove] + + // [START android_compose_interactions_is_pressed_or_dragged] + val isPressedOrDragged = interactions.isNotEmpty() + // [END android_compose_interactions_is_pressed_or_dragged] + + // [START android_compose_interactions_last] + val lastInteraction = when (interactions.lastOrNull()) { + is DragInteraction.Start -> "Dragged" + is PressInteraction.Press -> "Pressed" + else -> "No state" + } + // [END android_compose_interactions_last] +} + +@Composable +private fun InteractionsSnippet4() { + // [START android_compose_interactions_batched] + val interactionSource = remember { MutableInteractionSource() } + val isPressed by interactionSource.collectIsPressedAsState() + + Button(onClick = { /* do something */ }, interactionSource = interactionSource) { + Text(if (isPressed) "Pressed!" else "Not pressed") + } + // [END android_compose_interactions_batched] +} + +// [START android_compose_interactions_press_icon_button] +@Composable +fun PressIconButton( + onClick: () -> Unit, + icon: @Composable () -> Unit, + text: @Composable () -> Unit, + modifier: Modifier = Modifier, + interactionSource: MutableInteractionSource? = null +) { + val isPressed = interactionSource?.collectIsPressedAsState()?.value ?: false + + Button( + onClick = onClick, + modifier = modifier, + interactionSource = interactionSource + ) { + AnimatedVisibility(visible = isPressed) { + if (isPressed) { + Row { + icon() + Spacer(Modifier.size(ButtonDefaults.IconSpacing)) + } + } + } + text() + } +} +// [END android_compose_interactions_press_icon_button] + +@Composable +fun PressIconButtonUsage() { +// [START android_compose_interactions_press_icon_button_usage] + PressIconButton( + onClick = {}, + icon = { Icon(Icons.Filled.ShoppingCart, contentDescription = null) }, + text = { Text("Add to cart") } + ) +// [END android_compose_interactions_press_icon_button_usage] +} + +@Composable +fun InteractionsSnippet5() { +// [START android_compose_interactions_indication] + val interactionSource = remember { MutableInteractionSource() } + val isPressed by interactionSource.collectIsPressedAsState() + val scale by animateFloatAsState(targetValue = if (isPressed) 0.9f else 1f, label = "scale") + + Button( + modifier = Modifier.scale(scale), + onClick = { }, + interactionSource = interactionSource + ) { + Text(if (isPressed) "Pressed!" else "Not pressed") + } +// [END android_compose_interactions_indication] +} + +// [START android_compose_interactions_scale_node] +private class ScaleNode(private val interactionSource: InteractionSource) : + Modifier.Node(), DrawModifierNode { + + var currentPressPosition: Offset = Offset.Zero + val animatedScalePercent = Animatable(1f) + + private suspend fun animateToPressed(pressPosition: Offset) { + currentPressPosition = pressPosition + animatedScalePercent.animateTo(0.9f, spring()) + } + + private suspend fun animateToResting() { + animatedScalePercent.animateTo(1f, spring()) + } + + override fun onAttach() { + coroutineScope.launch { + interactionSource.interactions.collectLatest { interaction -> + when (interaction) { + is PressInteraction.Press -> animateToPressed(interaction.pressPosition) + is PressInteraction.Release -> animateToResting() + is PressInteraction.Cancel -> animateToResting() + } + } + } + } + + override fun ContentDrawScope.draw() { + scale( + scale = animatedScalePercent.value, + pivot = currentPressPosition + ) { + this@draw.drawContent() + } + } +} +// [END android_compose_interactions_scale_node] + +// [START android_compose_interactions_scale_node_factory] +object ScaleIndication : IndicationNodeFactory { + override fun create(interactionSource: InteractionSource): DelegatableNode { + return ScaleNode(interactionSource) + } + + override fun equals(other: Any?): Boolean = other === ScaleIndication + override fun hashCode() = 100 +} +// [END android_compose_interactions_scale_node_factory] + +@Composable +fun InteractionSnippets6() { +// [START android_compose_interactions_button_indication] + Box( + modifier = Modifier + .size(100.dp) + .clickable( + onClick = {}, + indication = ScaleIndication, + interactionSource = null + ) + .background(Color.Blue), + contentAlignment = Alignment.Center + ) { + Text("Hello!", color = Color.White) + } +// [END android_compose_interactions_button_indication] +} + +// [START android_compose_interactions_scale_button] +@Composable +fun ScaleButton( + onClick: () -> Unit, + modifier: Modifier = Modifier, + enabled: Boolean = true, + interactionSource: MutableInteractionSource? = null, + shape: Shape = CircleShape, + content: @Composable RowScope.() -> Unit +) { + Row( + modifier = modifier + .defaultMinSize(minWidth = 76.dp, minHeight = 48.dp) + .clickable( + enabled = enabled, + indication = ScaleIndication, + interactionSource = interactionSource, + onClick = onClick + ) + .border(width = 2.dp, color = Color.Blue, shape = shape) + .padding(horizontal = 16.dp, vertical = 8.dp), + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically, + content = content + ) +} +// [END android_compose_interactions_scale_button] + +@Composable +fun ScaleButtonExample() { +// [START android_compose_interactions_scale_button_example] + ScaleButton(onClick = {}) { + Icon(Icons.Filled.ShoppingCart, "") + Spacer(Modifier.padding(10.dp)) + Text(text = "Add to cart!") + } +// [END android_compose_interactions_scale_button_example] +} + +// [START android_compose_interactions_neon_node] +private class NeonNode( + private val shape: Shape, + private val borderWidth: Dp, + private val interactionSource: InteractionSource +) : Modifier.Node(), DrawModifierNode { + var currentPressPosition: Offset = Offset.Zero + val animatedProgress = Animatable(0f) + val animatedPressAlpha = Animatable(1f) + + var pressedAnimation: Job? = null + var restingAnimation: Job? = null + + private suspend fun animateToPressed(pressPosition: Offset) { + // Finish any existing animations, in case of a new press while we are still showing + // an animation for a previous one + restingAnimation?.cancel() + pressedAnimation?.cancel() + pressedAnimation = coroutineScope.launch { + currentPressPosition = pressPosition + animatedPressAlpha.snapTo(1f) + animatedProgress.snapTo(0f) + animatedProgress.animateTo(1f, tween(450)) + } + } + + private fun animateToResting() { + restingAnimation = coroutineScope.launch { + // Wait for the existing press animation to finish if it is still ongoing + pressedAnimation?.join() + animatedPressAlpha.animateTo(0f, tween(250)) + animatedProgress.snapTo(0f) + } + } + + override fun onAttach() { + coroutineScope.launch { + interactionSource.interactions.collect { interaction -> + when (interaction) { + is PressInteraction.Press -> animateToPressed(interaction.pressPosition) + is PressInteraction.Release -> animateToResting() + is PressInteraction.Cancel -> animateToResting() + } + } + } + } + + override fun ContentDrawScope.draw() { + val (startPosition, endPosition) = calculateGradientStartAndEndFromPressPosition( + currentPressPosition, size + ) + val brush = animateBrush( + startPosition = startPosition, + endPosition = endPosition, + progress = animatedProgress.value + ) + val alpha = animatedPressAlpha.value + + drawContent() + + val outline = shape.createOutline(size, layoutDirection, this) + // Draw overlay on top of content + drawOutline( + outline = outline, + brush = brush, + alpha = alpha * 0.1f + ) + // Draw border on top of overlay + drawOutline( + outline = outline, + brush = brush, + alpha = alpha, + style = Stroke(width = borderWidth.toPx()) + ) + } + + /** + * Calculates a gradient start / end where start is the point on the bounding rectangle of + * size [size] that intercepts with the line drawn from the center to [pressPosition], + * and end is the intercept on the opposite end of that line. + */ + private fun calculateGradientStartAndEndFromPressPosition( + pressPosition: Offset, + size: Size + ): Pair { + // Convert to offset from the center + val offset = pressPosition - size.center + // y = mx + c, c is 0, so just test for x and y to see where the intercept is + val gradient = offset.y / offset.x + // We are starting from the center, so halve the width and height - convert the sign + // to match the offset + val width = (size.width / 2f) * sign(offset.x) + val height = (size.height / 2f) * sign(offset.y) + val x = height / gradient + val y = gradient * width + + // Figure out which intercept lies within bounds + val intercept = if (abs(y) <= abs(height)) { + Offset(width, y) + } else { + Offset(x, height) + } + + // Convert back to offsets from 0,0 + val start = intercept + size.center + val end = Offset(size.width - start.x, size.height - start.y) + return start to end + } + + private fun animateBrush( + startPosition: Offset, + endPosition: Offset, + progress: Float + ): Brush { + if (progress == 0f) return TransparentBrush + + // This is *expensive* - we are doing a lot of allocations on each animation frame. To + // recreate a similar effect in a performant way, it would be better to create one large + // gradient and translate it on each frame, instead of creating a whole new gradient + // and shader. The current approach will be janky! + val colorStops = buildList { + when { + progress < 1 / 6f -> { + val adjustedProgress = progress * 6f + add(0f to Blue) + add(adjustedProgress to Color.Transparent) + } + progress < 2 / 6f -> { + val adjustedProgress = (progress - 1 / 6f) * 6f + add(0f to Purple) + add(adjustedProgress * MaxBlueStop to Blue) + add(adjustedProgress to Blue) + add(1f to Color.Transparent) + } + progress < 3 / 6f -> { + val adjustedProgress = (progress - 2 / 6f) * 6f + add(0f to Pink) + add(adjustedProgress * MaxPurpleStop to Purple) + add(MaxBlueStop to Blue) + add(1f to Blue) + } + progress < 4 / 6f -> { + val adjustedProgress = (progress - 3 / 6f) * 6f + add(0f to Orange) + add(adjustedProgress * MaxPinkStop to Pink) + add(MaxPurpleStop to Purple) + add(MaxBlueStop to Blue) + add(1f to Blue) + } + progress < 5 / 6f -> { + val adjustedProgress = (progress - 4 / 6f) * 6f + add(0f to Yellow) + add(adjustedProgress * MaxOrangeStop to Orange) + add(MaxPinkStop to Pink) + add(MaxPurpleStop to Purple) + add(MaxBlueStop to Blue) + add(1f to Blue) + } + else -> { + val adjustedProgress = (progress - 5 / 6f) * 6f + add(0f to Yellow) + add(adjustedProgress * MaxYellowStop to Yellow) + add(MaxOrangeStop to Orange) + add(MaxPinkStop to Pink) + add(MaxPurpleStop to Purple) + add(MaxBlueStop to Blue) + add(1f to Blue) + } + } + } + + return linearGradient( + colorStops = colorStops.toTypedArray(), + start = startPosition, + end = endPosition + ) + } + + companion object { + val TransparentBrush = SolidColor(Color.Transparent) + val Blue = Color(0xFF30C0D8) + val Purple = Color(0xFF7848A8) + val Pink = Color(0xFFF03078) + val Orange = Color(0xFFF07800) + val Yellow = Color(0xFFF0D800) + const val MaxYellowStop = 0.16f + const val MaxOrangeStop = 0.33f + const val MaxPinkStop = 0.5f + const val MaxPurpleStop = 0.67f + const val MaxBlueStop = 0.83f + } +} +// [END android_compose_interactions_neon_node] + +// [START android_compose_interactions_neon_indication] +data class NeonIndication(private val shape: Shape, private val borderWidth: Dp) : IndicationNodeFactory { + + override fun create(interactionSource: InteractionSource): DelegatableNode { + return NeonNode( + shape, + // Double the border size for a stronger press effect + borderWidth * 2, + interactionSource + ) + } +} +// [END android_compose_interactions_neon_indication] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/focus/FocusSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/focus/FocusSnippets.kt index 4a5c7c4c8..82b5b2d1e 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/focus/FocusSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/focus/FocusSnippets.kt @@ -14,9 +14,10 @@ * limitations under the License. */ +@file:Suppress("DEPRECATION_ERROR") + package com.example.compose.snippets.touchinput.focus -import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Indication import androidx.compose.foundation.IndicationInstance import androidx.compose.foundation.background @@ -111,7 +112,6 @@ private fun BasicSample2() { } } -@OptIn(ExperimentalComposeUiApi::class) @Preview @Composable fun OverrideDefaultOrder() { @@ -175,7 +175,6 @@ fun OverrideDefaultOrder() { // [END android_compose_touchinput_focus_override_use] } -@OptIn(ExperimentalComposeUiApi::class) @Preview @Composable fun OverrideTwoDimensionalOrder() { @@ -195,7 +194,6 @@ fun OverrideTwoDimensionalOrder() { // [END android_compose_touchinput_focus_override_2d] } -@OptIn(ExperimentalFoundationApi::class) @Composable private fun FocusGroup() { @@ -317,7 +315,6 @@ private fun Capture() { // [END android_compose_touchinput_focus_capture] } -@OptIn(ExperimentalComposeUiApi::class) @Composable private fun ModifierOrder() { @@ -401,7 +398,6 @@ private fun RedirectFocus() { // [END android_compose_touchinput_focus_redirect] } -@OptIn(ExperimentalComposeUiApi::class) @Composable private fun FocusAdvancing() { // [START android_compose_touchinput_focus_advancing] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/gestures/GesturesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/gestures/GesturesSnippets.kt index dcddc073c..d5f7fffed 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/gestures/GesturesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/gestures/GesturesSnippets.kt @@ -56,7 +56,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Brush @@ -208,7 +207,6 @@ private fun AutomaticNestedScroll() { private object NestedScrollInterop { // [START android_compose_touchinput_gestures_nested_scroll_interop_activity] open class MainActivity : ComponentActivity() { - @OptIn(ExperimentalComposeUiApi::class) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/pointerinput/TapAndPress.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/pointerinput/TapAndPress.kt index fbfa95cd8..dbe22282b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/pointerinput/TapAndPress.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/pointerinput/TapAndPress.kt @@ -60,7 +60,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.geometry.Offset @@ -291,7 +290,6 @@ private fun FullScreenImage( } // [START android_compose_touchinput_pointerinput_scrim] -@OptIn(ExperimentalComposeUiApi::class) @Composable private fun Scrim(onClose: () -> Unit, modifier: Modifier = Modifier) { val strClose = stringResource(R.string.close) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/userinteractions/UserInteractions.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/userinteractions/UserInteractions.kt index 285dfef69..07248a6f9 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/userinteractions/UserInteractions.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/userinteractions/UserInteractions.kt @@ -14,21 +14,30 @@ * limitations under the License. */ +@file:Suppress("DEPRECATION_ERROR") + package com.example.compose.snippets.touchinput.userinteractions import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.spring import androidx.compose.foundation.Indication import androidx.compose.foundation.IndicationInstance +import androidx.compose.foundation.IndicationNodeFactory import androidx.compose.foundation.clickable import androidx.compose.foundation.interaction.InteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.PressInteraction import androidx.compose.foundation.layout.Box +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.LocalRippleConfiguration +import androidx.compose.material.LocalUseFallbackRippleImplementation +import androidx.compose.material.RippleConfiguration +import androidx.compose.material.ripple import androidx.compose.material.ripple.LocalRippleTheme import androidx.compose.material.ripple.RippleAlpha import androidx.compose.material.ripple.RippleTheme import androidx.compose.material.ripple.rememberRipple +import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect @@ -38,8 +47,11 @@ import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.drawscope.ContentDrawScope import androidx.compose.ui.graphics.drawscope.scale +import androidx.compose.ui.node.DelegatableNode +import androidx.compose.ui.node.DrawModifierNode import com.example.compose.snippets.architecture.Button import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch // [START android_compose_userinteractions_scale_indication] // [START android_compose_userinteractions_scale_indication_object] @@ -105,6 +117,21 @@ private fun RememberRippleExample() { // [END android_compose_userinteractions_material_remember_ripple] } +// [START android_compose_userinteractions_material_ripple] +@Composable +private fun RippleExample() { + Box( + Modifier.clickable( + onClick = {}, + interactionSource = remember { MutableInteractionSource() }, + indication = ripple() + ) + ) { + // ... + } +} +// [END android_compose_userinteractions_material_ripple] + // [START android_compose_userinteractions_disabled_ripple_theme] private object DisabledRippleTheme : RippleTheme { @@ -154,3 +181,114 @@ private fun MyComposable2() { } // [END_EXCLUDE] // [END android_compose_userinteractions_disabled_ripple_theme_color_alpha] + +// Snippets for new ripple API + +// [START android_compose_userinteractions_scale_indication_node_factory] +object ScaleIndicationNodeFactory : IndicationNodeFactory { + override fun create(interactionSource: InteractionSource): DelegatableNode { + return ScaleIndicationNode(interactionSource) + } + + override fun hashCode(): Int = -1 + + override fun equals(other: Any?) = other === this +} +// [END android_compose_userinteractions_scale_indication_node_factory] + +// [START android_compose_userinteractions_scale_indication_node] +private class ScaleIndicationNode( + private val interactionSource: InteractionSource +) : Modifier.Node(), DrawModifierNode { + var currentPressPosition: Offset = Offset.Zero + val animatedScalePercent = Animatable(1f) + + private suspend fun animateToPressed(pressPosition: Offset) { + currentPressPosition = pressPosition + animatedScalePercent.animateTo(0.9f, spring()) + } + + private suspend fun animateToResting() { + animatedScalePercent.animateTo(1f, spring()) + } + + override fun onAttach() { + coroutineScope.launch { + interactionSource.interactions.collectLatest { interaction -> + when (interaction) { + is PressInteraction.Press -> animateToPressed(interaction.pressPosition) + is PressInteraction.Release -> animateToResting() + is PressInteraction.Cancel -> animateToResting() + } + } + } + } + + override fun ContentDrawScope.draw() { + scale( + scale = animatedScalePercent.value, + pivot = currentPressPosition + ) { + this@draw.drawContent() + } + } +} +// [END android_compose_userinteractions_scale_indication_node] + +@Composable +fun App() { +} + +@OptIn(ExperimentalMaterialApi::class) +@Composable +private fun LocalUseFallbackRippleImplementationExample() { +// [START android_compose_userinteractions_localusefallbackrippleimplementation] + CompositionLocalProvider(LocalUseFallbackRippleImplementation provides true) { + MaterialTheme { + App() + } + } +// [END android_compose_userinteractions_localusefallbackrippleimplementation] +} + +// [START android_compose_userinteractions_localusefallbackrippleimplementation_app_theme] +@OptIn(ExperimentalMaterialApi::class) +@Composable +fun MyAppTheme(content: @Composable () -> Unit) { + CompositionLocalProvider(LocalUseFallbackRippleImplementation provides true) { + MaterialTheme(content = content) + } +} +// [END android_compose_userinteractions_localusefallbackrippleimplementation_app_theme] + +@OptIn(ExperimentalMaterialApi::class) +@Composable +private fun MyComposableDisabledRippleConfig() { + // [START android_compose_userinteractions_disabled_ripple_configuration] + CompositionLocalProvider(LocalRippleConfiguration provides null) { + Button { + // ... + } + } + // [END android_compose_userinteractions_disabled_ripple_configuration] +} + +// [START android_compose_userinteractions_my_ripple_configuration] +@OptIn(ExperimentalMaterialApi::class) +private val MyRippleConfiguration = + RippleConfiguration(color = Color.Red, rippleAlpha = MyRippleAlpha) + +// [START_EXCLUDE] +@OptIn(ExperimentalMaterialApi::class) +@Composable +private fun MyComposableMyRippleConfig() { +// [END_EXCLUDE] + CompositionLocalProvider(LocalRippleConfiguration provides MyRippleConfiguration) { + Button { + // ... + } + } +// [START_EXCLUDE silent] +} +// [END_EXCLUDE] +// [END android_compose_userinteractions_my_ripple_configuration] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Color.kt b/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Color.kt index 21909a8cb..6c6006ead 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Color.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Color.kt @@ -25,3 +25,9 @@ val Pink80 = Color(0xFFEFB8C8) val Purple40 = Color(0xFF6650a4) val PurpleGrey40 = Color(0xFF625b71) val Pink40 = Color(0xFF7D5260) + +val LavenderDark = Color(0xff23009e) +val LavenderLight = Color(0xFFDDBEFC) + +val RoseDark = Color(0xffaf0060) +val RoseLight = Color(0xFFFFAFC9) diff --git a/compose/snippets/src/main/res/drawable/cupcake.jpg b/compose/snippets/src/main/res/drawable/cupcake.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0696e8a645a5ce232dc591717684b51f54893fa3 GIT binary patch literal 87777 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 literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/drawable/donut.jpeg b/compose/snippets/src/main/res/drawable/donut.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..57d0199f29468f276c0ffddd077756db6b64b2d5 GIT binary patch literal 65266 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 literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/drawable/eclair.jpeg b/compose/snippets/src/main/res/drawable/eclair.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..6ec767a0f2dda826aeb5547df75aacbdfd8d6739 GIT binary patch literal 99829 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 literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/drawable/froyo.jpeg b/compose/snippets/src/main/res/drawable/froyo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..f3126d5077c9961fe6c137368e44c5472c892459 GIT binary patch literal 75308 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�`UW4& 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 VU&Hj&vMjlep?(*ik^can|Jmjh5<>t0 literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/drawable/honeycomb.jpg b/compose/snippets/src/main/res/drawable/honeycomb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..94c892b576b5c3842db3cb99d0f5bebaf04299a3 GIT binary patch literal 77136 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/H!HGKBZ;?%8 zX6KPklbrdK2i$HRE|g*wTk;Kc7z&mpvEFQ<7$VC*o*o5+xjnL1MUcFA z+-(S%4F3eLsr)Xg96zf8T$_&0Up*pB=2~@Dpl92r6dK=bycF6>Z<=46ky&)ntts7D z(>ogN$^bu7z(06M0jXIQ7y0}wthn#gDp25?w1`eurS2K-D7u^3@I=wEJi@=8`FTbD zM14@5*rF6l;cO8+tmCr1=lL0FFB9mlTR=ks`S0@UJc%3Ewx9X?&m)kr$;QC}L|V^gOB8Ysq{nb&;< zdqTAxga=;aN0aI9}Hg9e;3>B(UgM{512u99KHL-CC<(OKZE z%n;S*o$JsW$kNeqmlj1vQ!kigN4I_94-{unFF;+UA7~2PN!=^7Ed@`cUSuu_^H$md zqA;&QDyoKrJb(22r6Kx0=XgDm+ecqz&l-k~B*lYq+Ld4*Yg%0TTUW2~H|>X|d7HD$ zNk0MQ6`K6@_kicr6b)S&yV+0;jY_SO28SM`Z%_~ci86 zpc`eRWba%PCniW-yhC_hs;|!b#lXf(G8U|xdz_4Sz^*C9E2zgpf<`sIadOsf17G-E zWnpQ8o=stdDk8=vOWV|B)yfoj{$#mr{7r7`1f7~3H|vAScXq;1I4ZXGtIZhuxK?pj zYB@%NbdN8mU28i9b{eRk-^*2zY0}*C-tgYvd9}7&>4Elz{9rrR6P%kxJUU;9%CT+_ z%x$c-nVGq*d=)m&>=XsyBq1m&`$TPPTDCgg;Kho!v7*L9uqd6CD+0@lc8A3Lyi&si z{o_yH)XS>@;m_^ck2hew(Ti zDQwErvGT;Y7C`*QQBAflAY&)januxP@oWI6+7VcE@Td_}=Ea8Tf}a-=AbeO;z{vjn(Y6@w$&09`s%r|KKnlrWa zD7^rlopd!gl&S29!FOgkn;&j5S%xT%P!(}n-+cTZMNr|NpJ+G*NNBH>U&L-f`{tJC zm*7>Sq7#nQzlzwQI%p8xym#Qc&1CNNU@OjV)`$w!#`D!Z4)Q?>SkK9STZ^2js%m}| zxL0{>Or4*uw4npqud8C{zE0(+xqv!@AM)-op5@wzs%0y3AFJjr81A>kUhW71kBSA$ z*34AOZ`aVfe=J|lo{P=+p>>tUHCK=56h(xtF<3b4_?-W4pPfz7=p9r08Wn`Xsud~c z$hQ?FJ`INuu;I|>27?sEyg=P{3F?oCF0=xSD$-}^h}YSeEPw2yio4Mi>m$!=0{(oZ zT{EgHN7rB#`=c;Nd*$hOxZSM;?_V}3fLsCM?m)f>yGF1INwei4=Q#S!RL>-|OaoaG zcZZN*t~@h+b~`$5qz1}_%rN$An^Xf!%iYSmL&kNiyivQlw_UgN9CToPk*mI2m3rAD zh6lY`Yc#a!xAVnM)yzzXhD2bFi9+X>udh~Irh7bDr5q}rwdvZ}C>wHQHCj#Z=uqn; zNJ)vQaI@^5?6+D9s5{cgvz)zoN4_FGQU4^m?YC=@zLKfmOs3;^$7s6Z26I?+VaQ za!(M~p}&1z`7@-K;}4sV{=}xTe48#y8}2)EMZ!cRS{(F(*979zp{S}U?#-UG9Bn(C zLQUyq=6=_>8}&YWWX^s$k+Ir1tfqp*I5xfa7SW1Icw$_=cP{fMm`HxJ5?0dkiWX2j zyL`4KKba#JT)hGw*t~k$JAF^P9WVsbYq7qsU31Xzu#Noy@b=cH3xPeG8Tt6_&{>(F zW#~%bo=w)TtiR<20~N7T9;hNS;T4wdcxu(`7kKX6BVU7JYgklukep#YK~j5l0@6P}KmXTX-C zvtF%5M^4P>K~gv~BG^N;8FC@e}WcC^KOw!Tn$OjS3GvC~`!0Uq>9iM++jvjAGQemYu zm%nO28MiCx%_%5M)L))suVF#@e8uxmJ?rW+jbG&*y@fVcL?BA~1Fz}rG`V65DcanW ztoM6IxBArw;99NyBJ^cqT47#Vp`4R^L(PPrNdQusVd>E%=B zoc7#2(vw%U1EWl>vAoIkR%GDiGo5+;r|87!y+Bs|&5ReNnfrPuyTxpAXl|*=VNm84 zzU;J6@0hhfK-a20rIii3pzH~=cYkxbv!G{nPQf=nA8G&*emGoYQmEnBJ5QA|WRgkpB{gk)9 zZcFtK)?CAzeO2X}Bo!JwE<{Rg$S)V#19PiWJI`VO*IL_^95O&@0`}PzS z5mo@pvA*pD{ar^M#53RYF;Ny#?;=86u#=1k+zdZRNxs%Crq!!Y5(k!Uar4mS?!8Eo za%X~T@z>n64A#a4R3{_^HhiV zTMe3t%DyRIruLbR-sNpG(|Wc#1gx?V_H&bMgLT286EzPA4LOgdx|)~wtZ@)7e<3_S zq(Zw!M@ivR3D_~p%zQ)Pwz*r=_R@t8686nk;URic@Ka+;fs**DlaaAg_EkEf#4fPR z4L$P=FiqMI0P(V^s@inV`*4#?8UsZsw1EQd>_L!}tOox%#qHV$palA&#cL@9mvc(_ zt6xte@-#5a3l+2`arHMgWs<{ih_Nz1*g}tyb?zWOjk2g+SNu0uymlbb)F`D4$*OrA z&JxR~6HIjBt_VXzYLyRby_B1$3~Fx+;0WaYZdaX}xoGBKdCH4^&Z@#$R_1C$cOwEB zAArngxOS_Wd0kLSoaz^7b)LT;fFa5|*u!~Ff#mj5=YyH~f`wBbB05Xlad?i4Q#>M8 zq9EmFl^VYj_lVcnxKXLUO?SK;t2z^1kw==CL(UKPSK$4>Q{%AjLbE>ol+%*S&Eow5%t8rDt>cCmYsjv@k15wvX*SclBZjS%wJ)(h3LVm>zv?yk(K@ozqd%a&55>$QD#++7cNrAIgkp!kFXp z`T&p+`4gnb<(+TVD_P*Ge^n-|J;W?AVho3L2r*M!-)>k^`HTA5cMbCzHrTq3sZxgg zgVVq|m-c~(j^KyhdBf*zgu;#nwn}Y^ZK?gwfr`C{jP#mX9dEeaTJv=QK2tV5>7%l5 zs8_P)()tzg401R%``L4n|C&?p%;KD9Hs`FYmDU77@&z@6&j)}_O;=QP-|(b;k~KS4 zy^S8jg^_ca&%{Xmw>z|bd1(TOp?!rWq9iB7y!r!hlG01&|7-p9x+8b11|3ba)S4bc zA+LMoM(qrOsj9;Dyi<5n;^*(H;z98tYo;$(08L_y7}6#~did7CU9nj|r#{a=G3^`0 z&v|UX$|0NVoNhkCfihqH>kxs_X5N~rUGr>p)b+hr`$L2r#5L)3^ zghl0Ju#e}GapSIr#pyM^NpR0BcUn3$UP~z)#;GFwY1bnM3M4&NX|{*FQ$7wQsSxh5 z>wj_HUV5V}QxTtk->wLk{w)Gph>?(KBy8Zze5u^>wa&cDLSO`hos8>2KD^V=U;7B%?Y|N{OZJTs_U?JDHe}|>4e*POE{JyoJ#fF z*o5oanfI)IQRn5>K`#*#+WAwnsx|J)@9WlSLj`!C&?%_N`S~qT;}{RI!YIKNgv}DD z{qt!)B`CGFq+8&HX7>H?SavNyxxjCT*J^>QzM{IJN`kX!u4ide!K8N-$2T@`gM%PZ zmEEbg+8D`8JEA(XT$0Qh$Lf@iI`5=@nWQuLn=2 zcu4v^A1p&%-tI8;`{01;P+Q8vD3eiF)0F8m zSw$^qv0DxkozKRyCv~VjWtEm}Rl5{YV4Au`buon+76#5UYrPB^G*0K7rJYbB_Y3em zrWl|Ot5f=l^*hy3X>v-Vt;Q?c_w$dN zHB!p_U8B_}L{~FZtlB26&#To#*>4*~cJLnnemF&q$klsSXNK#lp$`DJEAz3-8_C4) zMi!`2r_4;y8m;2;yQ9Lw%)wj5I&pNWY3*OF0w{eTLSmVM5`;EuZ&!F>(m03D)w)hkJpY&du^dq-uQpr>$iRdI7PpN3uvJMR0&g4o4 zH!`#ZeN~p1AM+sK-c=JiXY(|^UGwmE_)_W4(^j}=?A|5Fap}oTjpvZltt^=UJgOGP zmYh+M>Z)VIuw)A5>U>1WRO^n|9Q-y0v$yx&*%phWU+mY--~9qzi!hhFX`xyMLW_rZ zmO!0_ei5XVE}^^I{T=^t;SM=y21PX?*UC5U zkYsNzqxu9YJ$ZXMGam;sKS8zZw(U9?5Zo*{X#F&9T@0)IUS`usmymkRTUr!h}Fi;gboMv{N7hY@G)YhlxonBul zLr@(zTqy)@3I0#pG-n#V*W>Nk*?PKt0Ey-G1nG=O5~w$w7H+YO+r6k(!-Wrl;@MyQ z+r60n(c_I9`|0gskE;+3xmxAP;(XKJ3f6}`ORHr8HhKQ=>SS!Eq_S9#yuE1;RXL@a z8n-c74Ubmj&z9?4*zL6|0Dw`$EwI+Fm^nS_tlFT>7f*`!BhjQI5ymj)Tk$-Zj{X4b zD4*x${JxVYoes*u9Fi6;VgAO+aYmHu;eRtZj?l5}cAHzl@o4rHJz&eEf838oV^Qj` zJhlHW?{AeL>wC9^j$z%g^5-36^jl3nEfK;ccgFy_r^so^>_FKi!M^LH)K;?0$?0RF=~{cX~Af2{=y>F9$AIYc?Bu zIx|bRzB;Zs<2-D_jq~LJRmvLPhRX*_ZcQ)I8#zE5nXY`4=g1tLU!JuycC^gUl&`03 zYz!6~Z+;`&5P8f+9qHk>C?9|Wnt+(CLUKN@%B7kjS9SP3;$BjI8q5`*#Js{7TiPV# z@CX<^$c;U>BDB>FGB z7Uxsl?4$CV!FwI_SHmcTNV94$E2F6F1K?5{ug*SDW(~!NgQ~v-8t>(F)`!f#RFVc? zI$J86w_b(e${@&^k9 z*C0X=%T8NTV?R=zUS4Q?_>4%gYGv1^DahR2!38RJsGb$xm%XVW_3@gzRxY37j>c1| z0_S0ayUud$uZAoHLvvPd-Wc{=YC{XNd#ipE>Ih$|(3{Cchs|fE+-OnwB{<~Y$Y4&~IoApJSLPrEb^6z&b<%d47a>{9U7FL?O?v=ucN zt+>oS8HTXz}K2Pi;8vQ1ABtq6vf8?!GgXTX~N)*8b@t`iJLiN#vHX`aDy zY_v6FZKF}&Hi$d`Vf=fnSGW?pGl07^-vkY$1R)cBin zM@kp9a^32BybUnILiPUwr$AW0CcRoAW|7c@eF0ddUUOYwt%QEo3F`fX*rHIkfbYsAkW(M$lydFKR~Yny{+v2y?Oy$achTdZS&&rf}#~$+DZ)I zr6~XqMM~(~z374Q-o@D0QYSLe@3QP<|h=^hRPe zv`Ts`8un%W!6a5#RUU(|lCSPapjb07Tl)`gf-rKx7ci70428(5p&IG>F_TGFcj z01;m%?Hr=cWh0?pr5b%spNtg0g9Qc8UelzS{{XLwp=z#=r&93QUX*l^yZ1O9Gw2j9 zs=g}q2bOWrBf67)t#E^scT5rDa?AUyST(*(dF-5%EXUK7z>8 z-%BeWg$qOjeL|*c*}R^LE-r~wW|N_+m=F9leHdlEK&k%#992amCbD`R4=>U%70R1* zmgM~+6>HCyFsjV|!~j7M009I51Ox;F1qKBK0s{d60RRF65d;z;F%Tj_Q3VrWaWa9C z6eB`Xu^=;Ip~2AxLvoVg6(oZ2G*d)lqVfOQ00;pA00Tb()S{@41_=XiN1ag2U6g=! zwbGRYX=sl{rm8YSM(R8c2M)*X8}zk=#6RrvQ^!(vUK;LZPFN2?s)sPii$5^3YW!1a zV6dFg#hBN`b&hjNKXf^Jb0GfRd`xgHIyZ#rLMZz2W(`IMGdUQqd zJ>5wwb*eNGAr|UYAe$sR`X^x~bF1#(sPtO!^i&kM=`yoGH!2?m!eoiRc;P^vr@C~G zbDV6GWbyT1c#T*^&&-B51SN095WjV**JO9T6x7)a)-WQ2^=qLqcP(gYwU~Z{D9fFP3U^N!H zx*=OE=xmDt$`*abt0dgQQk^~? z7XzncI9C9gEMmZkS(4oNeMHQQ(%Ckd=dxtJn<4LsW6Kt%5N_vNPjk*Wl$;o81MX=SAam*qm#rS;LrH zm=tiBmyqAPdA9ueFGTGT3oCMgsb3G&sQeQE>6||C;+Q?tUzs+5s)o3!4xr*|zm`iWr)EzF=l=)d7E&UO7-$WWIbqK$rY5Up5H=}!| z=OMoc73reR;$#IDtxlW#*Sw?f@B~>=yQkYM|CEz!n)cw zW51%r!s>hu3WsIcNjrgiGPA#Q%mhLlK8CB=IJ<$R+lyiG7Pb34SI?sRJ~mFz=5Nhf z%H0;bAw^xL(lbaH(YlMl@GOV{n!lQ!Vsk%pYZ}5TbE3zyFE}-|g^YOS4L+(_T;hI- zvqH)s_eGeDMgIWyJM}_}ae8QKYqV5!3Cwk-&^C*n?5;angC7x&dL1aK;ml*_XY)m_ z)O}G-#7Zfolwf0}lDSXA=o9g{qt9$-D|pdb+6k_1UaKS9eK$d&W-FSIcnD%-WKA3I z?45^^u|(QyLYD&0VV%8~g7}BWAC&Xd=&%#&++ZH-1j@PG<%EgV6kzGT(@ zsH!O60*Ws4;_fs~jzd>TYpKx^_iFmwv`N7_Wsy9b+WU}_cLSYq>O-VV0H7b*ZkLp zNNKSF?$v~cE=a|NB)BY5V~$cQWlK~-E=HC>p8R7^L|W#o?o?L0EYt&Rl+O=?nEmvf z2jN<{{a2dwbk#mSs#cq9jvqB6Uv77$gnYK0b+kzYWxL);CsG zmHPro1hZ)q4eR)d4liRgZ|bufD%Bo0Jz3iH^hJ`s{r;;>I0l4KX+-ov$=+@$qiO`K zCy4?d3z}MfG2LU@e(t0nLa}k0b{0>islgQs{{Y%nEyBhf!}%z1-+3|2>iAQn$ryJo z>bTzP(Ks7MeD5Vl-36?}O;Og!yT)voZ8d@W%PFfcXyIh}+)t zss2kbt`E(spb&7ieOKB%G!l8+{SdoU7GkM=Q5{jG{{VZ1w%GFlq}*#S%fC>u*|R|Q zoi2`x8HYcA1DX0QQ0|QM`E88-QNxEu(AKbQ0y9W$ZNL$_rJ`&&m>zZy2!};D)I4ij zUkrg4aK03qguuP-(?2m-JS25lk7lTi))o8yV55Bj9E0eh(B*f{eXZjp{_X0T=p>iT zAl87cbE>;Xfk#wZ(Pm-3sDU(gIY^~08hK_7xZdJ#wXJnQSyk0Oau4C^P{Bs%<8ZUJ zCl}vUqT7bMp_Y|9%W=_tpA(2@@fEFbEZG|fx#P0Ta<`&vae#Cy{5vh5wlI2TU*XL9 z;#hs$uuy;_%U{B?zB=1lS)G@%9%*BmhKALkvaG0QbT9l`g_22|TR8^>O1NqQIaGra z=H5`ybx~lWdn5$=Z)+PI-*m>;uBoq~iNc@!X~6wg_-=oT3IXm|ya9xHakZzo=$njx z+|E87dMlbn-R08wS>RQw96#z_7GQg|XD@T6$n(V>C{%DX^s?P(e?vHfnyhZFcmPq#X2;%cehSk98-HoZC zbx9d%^$SgqcT{anivAXUZt6S~IU@s2sX6X*oa-do?tpToYh_Q#n}6t?1~yA&HT=z4 zpTLrd)|Q(hO1CwmuKtPGc*GG~U0QktXMc3z_^Eh?7*u%2k4wMRc%@O1r~d#IkD1@R z8+<*}oYzyFOPgAbsM~=W+RXbzH9KTVdo&5{mdem*p4~4)(Ki%4+&h4I_=iGPDn3^; zP^Je~npdes?>Dl^8JO6=ZUkL;@1>ar^u zBJLn)pFSoCz&f}lM}4+;WrUgLSZ1efOB4mRJpS6L1?G*&{zLRrN&Z=ASbQWeYa`aV ziAGnFtQD18ZBaqtWht1y365d$Gz0ZnZ4yuoR<&2d%NU$lv6q#n^-w`G!?QSz4o^kl z(!3Ldo!{!pSA@ORa83>D$`^s+J{aO2;+KcNlr}cIp{)~qi3e?|7tb#?#Vt?uv=ut3Wp>)Ayfzaoyw4-)=%kugz1z5>d#hR^ z3iBCiq=~`RdLD=jOrQfq*!iaA*;%d?x@$(kUbKx4!3JiT?Vv?!u+UBinehG)Ru3NH z)08;v&8msi#=Ean#_rb8+}eeO&S-6crSwu95TXl9z;~h#C_R=HJ5)$sMk0>R(aFX( zJ0*K8&9#`Kw@z{*fYg-V4{w<*d5&(s!aFL?=E!pPSp3<6XcwTREKcUbGW)Za`5^4s z@cXD-e{)`kuhD(9yUU2!)3qrYYPf5%6|$g#C09kFX^vPQsM}u7M-McO>}!E>JS?Er z?54)b8pbI6GYu9B0zAyUKM$|XX6d@hP^GeX6dp#s3Uiopek}@j+9qk-INGwQ6To&> zoW}wYHO;9*82BOz!3-y%y+n zRI@5g8YYKP_XtfK7=YTYS1ou1Q>JiP8apE?1ETUz*zoWF09ozmyP~n3F*1L+tXtdz z=W$MH-*qM{2P`#i8vQ#jE20s%C`U4IMY0zmh{3`L{{So(6VTFhFMLlLeiPjm6GGQ2 zvaHY+qQW!n7>9H89h31da0iq1S?#C>@X=cGu?%&P4vs#EIw;%@xpiF--j#*DrW6X% z95yyL9gVc8JX!$eNCfq#Vm(y&DGYM6DMpaA8@ijs9p%9t_jf__Q2zjj@Pa5^n-L)1 zw)IYx&U@TkUm2{a2BR zlge&pY&G00JH}VxTwB)2E5Wf8e73aw!tkIS_ig&x!LgYz;D=vjB$#=m0oo19t8%+r z>YV3jvhK7+jtbh+7n;Yg#vIeV^ipA+U}k6LAJqT}Lse@wy_D0NKM&}l@Vq>6!t0UW z`)SfRxyMtfC0Yw&gI?969I|_$%vJk9y5buCuAFSN}YdUf_qz`HH-*wdzq1&eJs z3hQbIYa93IvwS+J->j}J9f$W&VNcz*-_rM9W4y7`a#L8!2)fSzP;XUQ+UUOB;jTKF zBfp}{YgBYrheUg?RArhbxAP(4`=#3*>JwPY zR)WzIS4Ex8XzRH{1%((KGpM+I<$hoJO>4JA)hgWpY%KMztIZ-OI*W%ZcFdiJ&esYd zIFwLVOGQb-A(GK<9nlH9K>RZF?aPF7y#Be?U7G z=i;V)-n2c2ipm2;87Z|vdaTgpJr>Eh{0Msw-bH^t>iTMlDbhGJGch{_7l&coOTO{L z{{TYHOWZZ?rE`m!Bb)4Lc$8efY<+v$@hHHoPt*mBIyjG#e80StRAuJ9!X)a53xC*i zMTK~|Fz(sx>>kFSFujWoQkz*q{kTTG0@m>H&Y!aDr(^Iq&)@F;c!m)l#%tRw63N zGl!=|9y%b`HKEi)uXJvZrDtRq)NG?`MW8ma#?g9uBJaF|n=#d+dn+!7LKUpe*#@IL zv;t>?;j)H(>-GgcXFcw9xyMqR^P+T0%IJ(w38kz%mYl=U32^Mhvzs@?T|L((s`_vn zA(du*l<6`xeT9)l7#CW9dQ!hvyp$_-J3bknJ)BlBI9?_09f`E^)2_8ij&I#fP7OY~ z`==ACEk@BjQMB%f!0N5Kp@w_gr62vZRbd&34c$TE@fT=bcPq>%@`adbvgW0(%8|{Y zcXb=QG8tR(Q(Q;7t#}2hD%Oe6__i6%8|EKSzR?hS4ZXcPg!Y$cja@AV4@C|TI~9!3 z4ZRb*MscQC+3+*By0uGA9TOqO#vW)pOYBo{c&QC?JmzW-RISH>Z$wHu1op<~KdAjw zI7u?Q65PRfUx>Rg5xLG5U4Pj?{Mlx$O?;6DmlVKPH{N3`b;>qaOdMy+?PmI^ad^B# z-fx(J=mIK+%QB*^XtPJ^6LApB1C6o3(Dfq8*W?s=kOC(HhWfgC1DW97c{Oy26p1 zy4D8_%%Ok-*YP3eyD!257m#ontx!NZmbxH9`(K9Qu;g2rx3OAPR|_XzE>>1~B%J&) zioa5@_$HGi?V^4+>0y6|F)qsKm|fnBKbcrLd82ln+H_TQGQ~Um$ny8KhL4@j&mcdD zZS1`4L*Zk&BR^8LD|-ka6|Gk=JwZdnd@?CoIiuA3byR6`tyS<1PQ^$m3>z`h>8|S*b^AlDc!OSZOPi*@@Sllunq21CJhz~4y4Bahf_0<8!8koQ zd5+eG$`2E3gY!0EGjDgn3{L$UN*+|>X6PxZSUqvH}X^tfp0VA8QL~(MAI}ap( z6>MGq00^f9LL~4WW>uQo^hXg3W@T~<^~$wYP}nYQk;*hw>ZIr};0F-rKIs+Wu%G@( zc>;tB4HT2Xf4HrBiFIwv#4Bw!yLC;2ZU5=d_=_FUvr?Z6aM zpCee->g6AX;hP+P5FcLTsc}+gd&|A`M>2e01dea9rHu`*waH$l)-y|%)+-S&mf1P_ zT69>fKycSJ@TEan;8T#34T*+bS`T01Qeklq0i?G1PomLpqH%W1x|b0vBZ-8PR3G8o z6*%4?^d0(ql(>msBi)(Lb(89}R(Mh*rc6U#X!J)9jGdWiU5{hI-IerII9Xm;({&CD z4S1Og8@s#f(M_G+K&FGCJJQBS%68v%47cV$;eD0{S`^(nJ4Fo7ZdO(8*1|DhXPK>T zcDGMO%z)JgJBSLg46f@bjqU1~*3`q7U*?V$c|5k)@$M$QG#sVL7cH5$w zE9JWCo;o6WaCC<&TV+9jV~h2X!|0tnj@4HKz^QQZ#WZAxF~Ee$Bf{fZsFAct`h*;T zR+<)GiuxcImj)tg6ir$5UK;m#b4?pMYCxq9BwRAGM)a@lpZ@^TK1yz4AuAUArO#^_ z)b3Un!7x)z5EcgKQs*i0Qo325T<3LPRNypEF5#-8z7o@@)qSfC4j>PQL+n*(wBf2D z$mp9CW_eCf(P2Lt?4#gr-l*^cbkg8Lk(pk{*Y^q7p9jVeGYqy*TUxCsEmf=Ns3YcP za?VHP3oaUIzW}{`8oVY}xJ!s=@0q5Tgi3QmEOlSyzSKwIl}In|+OX{w>9ZZEFSErS z9vW+1cU^}?)TXr3(H5s-yf<=O(_Yk?SVvWr&rfE3Q{O6fP*s~x(M1j(Io3<|!L-}oW3t1**0we@e6$O4U8!2{ z!K#(&v_|TaJVU`T7)R<@X}*`JMj0H_xHO%7FJ*lY3Ha%Q8?g9~V3~tsa2R9oig^hA zQ{Z-XNah~xG`v}q1~uAuqx!EF((z6!8fF4_g4YVYsY^G7InB+M!Qb$!RDo5|6`47$ zG@L`TCOQ!rJCf2p6!<5Tmo#T*e{?H=D>Kk|GCxS!sZWF+do4bI|>^N&`W>rl3^l?-2 z-0%MYaafjQb0l_L*751+zS9g60j6><+#|9mgQ6uCODrX~eAW7|E=Pdf3TSJMFEe$O z_Je}U(S4=X?HD&d(KpNTSSU9`U00ans%EGHp3PYD-(yP|3%`8l4$jp>;uvRB%N_Wu zaC;{mdn+6@R(NQG2CDHmz&0#z@+wDv+`+HruIg~?uVF``aR{mLQsj-l>OBIB!Z59h z8ZtXv{{Yn&mpGdw*;??|hg95d0r5QBsI%mHsUVTjy}Gomc0-4vV^Hja1?-y^7BQF` z__Wnv;;`v0yB}5I9w(Lfc~}YjEI-j@A0Dbf{$(g*7c9GU+SiwYb0eTDD6do-rK>1# zDb}*MTBo%1O~zr`__dNh=G8%33q)jaUkGTjdMJD%2R-CESDgUT&-MyTOst}M(c8purpR?+(ZkcaV=_q_gQA(X2-Q=F;bm>d z%-uH!_KE990NYUr2`+7ZQ?1&jnz*(rE48c zvvs?cnkR#%hr02GWexEu=y!H+)p)dI7fvJ{oGbKGNgJ(#j;F53%i;PrZf!NpvlU!N zRYg;R%LlJT%JOx;hx;hzea3PUEQ7IAx9}YnAQSg))6q^`2bSyhMk;i=eyDh65z@sN z+e_>2rpC@>mG)22dIgm<^+9Q(EmQ$cY>>{=R6}H~%Stff3)`%3)O+x>>nPx$GDzAl z*%${awcVq#@n-Fecd^xYoCJB%$1olASVx1O2=*UJclKBeUSBEt)}ZKA5;rdWNtxESJfz;mELfk&%+L zIDsR7?7X+rg)G9=Amr)ak-B$1lz3Jcez-)*d4lf4i3v~d3 zyr~}<-KLQxQq8&phKn)EHz~M0BN*rW4H|naE-0BJepjB|RxSgqWQ0cSBjka0x+C}) zefC2G4A~Dq!}U*+M>*S-K^GL}oe?WV%oo5@UxkMeTC(I^-{hpk$Xw&>H~^YZv99U3s9zJ@1KK$aUDE#mupH*t?Aq#sTT1uhY-2{jrGwAp!uZ=$lfX;YC3NT!ZP9%h>fk7P5j z+azcq0nDr?4Y*iM0X0P&c!^H$)8rNyoRVq=mun4(F34E)Tkyq7Q?kXq!$8*eDYy(i zNS#H;DLqM9ot3``(GnAuii)%mgBa2O0N678`Y$gPp1wAN?x-zOR;t<%J0a$^&TZDa zT6|I#Mg#KbZ$PoqI9?&zY!*KZ0CSr&e~kwke}=UB=KlbNfh2#~ynQrSJXmXB`Si-E zk!|sG>!KlPswUO&C3$2kjA({04CrMXj%`p=;LSO`sb+B{#*^bA%_JX1;_v`I)0}@8%(0HIx@h)Nk^|XZ z%k6k^C4xY`sG`@9RV@}|6{FEO5z#Zod@46@DIe{4-{hoYoWk03O&j6NP$hDwVrFY~ z%e#+Yjv2pZ!#FpWDFg6;fV~!1B2h-u;+3vxqK-Gi46YXFjr|Zs#*>@TIFx#WEpLHw*$vLY01Mxs z8xQV|GIB@4G#qMQCP^z!Q~eh^s8>~%jUaVYR)t%(SJ4Dw#A8E`CPuF(I|FTo%WGZw zCdh7-%m+m%I<?1DxyH#wX?!xEvXGf8{Fmy<1t;NWnj#M=)7zr6vIHU1fg2$oI*Sbin3>IK z{J*(atYoh)c?{^mupAAnQ!;^wkb5|+WLDEDb^c?r5=_QS4Op(%>b$IEPOTinr(=A5 z7Mmfu*F}?}%{u`4sO52q!!?RG)kIwHDqoY6+JCZr{3Sdzic!MbF0wv~*x1>-?>Dl_ z6H{Egx3&F^p!it!*|F6FuR@J1g=Rc8*;-^#O@EAyI_R3v1D_jX19IRN0})0nYfbG= z1!5~nK?&oaP`ta%kPS8)mEqV(oLJ8KjnB83FiR{JO6` zCdwP`gifV>SE?$)6rYKlMH_Yf79RlwY;1*@MINeXT|tGy`ngJ5mDqb9>i+ppNuwZpZROYP42?2vVYtWazOCY3_zQ4#^^OOo6{& zMAniBq7VtTv>GDwvN)N=jz;dAHY>=F;D=9lbzI9uWi%B;Quth>@r)32e}2u|-%skR zqO?09sx%j(=}Gp?iy@}wFFNnC#xdEN`aRY@J@UKi7AgM#<+Oa(A=^8B+jI(<#=M6= zp$jz5f2UPzy44jV%@|(CPP#0nMpmsyQAyrqRd5<0INi?~h zb0JxmiD1XvTG>e3fWzt5Ts?qvWHY~QMNf7nZLuSKC1`fa`}uIB|GU>rC`%h-8-=g zdlb?_ana4B&kVqru=+^-0qQ%HZEL`Acr=`76_M?`?29Ka{{ZaQ=huddRdj$AOF2;B zu-S`_YvgD(Wj1YbezBgQ z^$4~{irHm-6g5`u_!6`Ut0or=&>8skF!UjIGGEb@huyuPw|&hsb=^ zX@<8=TZC2c9ZWX++`&D<31G`UWFT{NsYuhLMU`^V44DHLx)1F3qp7%fzRp7?z`|dtRsZN8BUIVzaW_d+(;)+g{v&Q z*jE_+#jg!}wPd5*f6DNed^xQ51z>Rmd2I#NvSTa`qWN{8pEJv^OI*A?RjX7};*pXx z)0%92kntZ1!($jeAr1&;)11FgxIBw|taXcVx?+uU^Msv0ihX zmouHaoUsssOjb|vQjN`Mb{+0@b6r=V3&W*&bMg<7YQj00S(VqPDi84T#(pXYjuut% zcqrh!UKT(1Q`BzsC*dnA^R#H~LL+vsM8MSE%Jg1i{K-BR{{S@S;tUZ;Ls}`sbv=+; zq7WTc%B5q$_tiR~l$*BItjX4m@HVn^S}f8qovmTKI!7_i7C#TfO7O|Flw|j5E5K&F zxQhN?s>9+1$2f33T0u<*;-v#K2fsCSMUwd-oq3!u=(4wg;^81!n9x_3CF@F`=0-VP zt#&EOx-5XpK8zZGe;52IC*>axK#keqWo1te1*WUAKVtZG@9Va!N?C5!aB`vvS&9o) zVFTfhh2p@G-~Rwf@HpwGPh`N~RnD4dF3L%s)--GSFR-#W+gb~Ay1B(VLgGp!qSdba zCc-~FZ=~N7@X%|Tujbv*j!l)It!b|Ty&~*PSx4g^s>5Po$sp6Y9acaHhcG=tVbZAj zt#(ezrI7XYDlZDcd2u_Qi&}kE>%(3-LNac@>V6wM2ltF`C%D-LXmmZ0aFv{C(w z;0X&T(Pfpl{nSm&4q9;As>3~{%zsUWw1bB$nto~WZ~T?@S|9)_g|1~mdGKN)>(jod z(ky8zi*35^rrcmlm!8gO= zro1{wcj})!&JL439r)U!wA};?=7hI3bF_Y_vC;rGD3nUna66~C(riQ?sth)4_C3$& zu)SF$k4hiicthClHYr+9cHR9gcpKf9DX;VqOTv7xVRIaPQ!!6_SjuVT-}R-R69CqO zKdQbOqrlQJOaeH3TMyxOj#3FuFAwlP<8S46e`Pa9sz!}M^jYLtok~9r!kJ${*Cs{zV#@{|2zf{LErNisoD5WKhkAITS9%i&xVe9I=w~$c_ zL^^SB)k%c$JR`a};x~V#`XXuOPD3DU?05avV^*{x$3*k!Ln4{)4f^>|I&Gap$hc7-{zgXW`xlF!~4qe0YxtXt3{{T||01v|}24}Ii{@vDPoyxeK0?G$+n#Ot34IAA}=R3&Txn3h@ z??Bf66_2WLVIG<+NIckV!~JD_pk-`N9*)&TJAe**WCvY$1G;n*NY~bF^f&Qq#`1?1S#)=3)Ip6{tq|P({Zv3(b|5 z6Cs1_a6eO{{{Vy`zW@+fBn1aZ$6w7lDVXu_%G>#?;t^S%0<8jbBF|TprobH1`WJaz zc3v4MXFGP(?7TeHVkuxwY>&JfeKIwWC$>I=429_!~uirw(&`Oy&1l zxKeZzS9RS2tS-TQqChg}HFvU#7~2dzHm;PVmBhKk`<01@_jrf1*~BjtZ3Bo71M>i} zp#9@P_R%vG+Rc>f%6CngCxO@E4OIJA)oQm{$^(P6trUJM;ZT=eaUb*8qa3;{;Sd&^ zEjC5&YZ@)Y&3&8%wzT-WzEp`)k@1OU?ER>#GZN(o=EJSreIpoq43NppghB)2dZ?1 z?s2l?WTK5CEjTCiT&%OGOz|unkp}ayW^Ja~2)m9@h&GGAsZD}7p@a98Z#|QVB%3^G z$*vpfjM-r%*cGX~!Fg|cI~w6ujqr71PvIq_=7V3EhvcKgQ=H9IP17ohw9!!Ad7FGA zTTtL2F-AF_HAVMszjOx5)f7{j;O3GD>KEHtZ^|6NGkTur#Waoe(Pac9om!+_OVL+F zhKIwP*@+)`>OF^|!(%PX@AdXf7ned5z}Qod!d5E4Y<8gV+%c0jX?mXCfjbi;oK^6o z6)z(b5xp*tu}z*AI7l6*MCfI3^}Ho5`SAD@A8yDv)vk z2J}*Sw@AcVbxfK=ijAY2_m%phFGPDH*6fNd=%VoK3#E7jofn1BOdMnU}a`@ zoeyo63MT;f3-`1mgyb7+Q73y`t97EXy%Aq$#zIfR^N{}l*|eK%;Z2< zN{|XnM9hhUSAQ>69uEN5wc(+sOFdeh%w&)cKndMpIef`ox8y6r=KwN&Yir-+u$YR< z@2-k5=C(Omo6u%b%MUU7DsgI|s=hj>1aUZHgnz`(#Ct7XTHe1@SSW(m!|=?Cx$93~QnQy5>nDC1B8VzR7PB^rv2J-couIEUofRXZ^j5PSlOqE}bj`Nq zLx+sIy574i9IejK8awp06WN)er%wL>(Kyzu*J>%BidKab5r##t@f7@CAdJMdx)17B zR-Lg`8yK0#(8HKF^w4kZ^sdA&&g`&L^ zp~f-8ZHoI-1DZMwdKGtUTI{4Bgr|e6Q>1+c*--di3Q1mhvZ*l=z3)1o<>;+n8bPx% z`V?lv;iqWPyt;G+Web~uv=|lhQrX`{9u@~h9KU=|MLfuL#I?Bu?gO=~ zWi`Hb%2^xDAxxOHuW@%wzm*0TUqVoJi(R;SAk-}ujgzvxg0T3Pa}9fU1I9jxA3e`y-6AvC;o2Si1igA8#ygT}-FQ=lF zpXHSQ0LoO>0AVUW42^IF<&1u4)SfJs9NB{L}>3n%{kv20Yp3 zY3-`P;g8+1K1MPu`V*SH2Fi&=#d+E2I1d02u#<$j@2UYr9}tmOu`*?o=%2Mt|+ zRf^0=clB82em4CUB#LkaP5A@83e^>=8*p=1lZ$f+{o{X_LpQoPN+DU%1!|M=bH@;E z>#wqh404WxK(VYmnQPZoh+}G88(-{ccvaNcX`}T3Id~k686{E4fW9qL4t4o6%=*6r=FGFP7OynC9v$ zy2N4u50S)nwMNscM_00(Y3INF#ZPzVJL;|ZCg#0~L715Kr$#mDYcb+a4@54?tV0FR z>Y#hw_m<^n_k-k~>#9<;?4J{dDJQacEPR911Z0y95Fj)R)INb}Xa#FBD=Av;pFf7a zM>{i^;zywDgNfm)29?l3sirA)rjDu8xVgvBA{Lt>6{YytJAMac}@ykHfIe ze218i{Q()?URH|HMORhj$lX!Icy2D(F+SPXc95sKkTptmTUT~9&e9J-A5ER4Hp6PAxkuk57-L>-4=ymdLR)+ z5J6Gnd_NV0kmyF9icBnzjl))&MDPeX$OPw+P1LWmNA^~HM^o%j1z1^CqSpgxKA7vP zPHsOE-{QZjp-X-p6%GNdE-E%ho=4>e)nOYIeWkwStPvxfx9$j7etfdD(d@92em9r`^gv2~W&c>SbuBx?Jk-iQKQEOKNN+tbE7$$MHOc-TJWK| z&Ug@4*>P}4b`BTpv$2z914=%lx^TBJCmXcGxJ~KR3SMjWQed!C&y?~vGyOdjxT%ZY zeTQY2qH}gMv2px3nFq~ct5@bf%|nZ<;@;i;l}_RXbwH2UwP=E}%`;1MEW7PVxUeUU zy7l$-MW%}>1Sw?IKM^L3CX+lmFEP#=eSHFwd8Co%+~SGgX*j!d=9FrXF$_o=?B$uu zP8!V`KC^I8#_!Z}Dr z%GFp$jDKmunHXHpF`1j(TEQ91DW;p3DE_I`OIvIwZp#m@l)oucGL*+e%o|xO+I9;J z{44NSLz^{ul6Ul7&^=WY3ZlG>L{i>?+K)usMj9MMdV)9fLN^eB;9b#B2s9vFvN&h? zztqJ1*kv#CEBi6*kK zoULfsBbjNyoe|wo*=2Ih!qNe4Y7bja!(v~Rq{dGvP6KWM7daPKs*3@K7-l=~ByPXL zI9ChdL?GylL|AiA^F}whglZ28JVuH`%os<>jX?rWpOy`*}q zV0&9WSG4JML@9AZ^S8^bOG@(Oly)nfS|n8<7pDt&MmI1wwx+FNu|Ia}bBepmwW-)X z0u+oogyQDu^IvAHqWx2`SnNcE-!WPvvNvhUkQ*S^G@}0i`-V3E06+KrsRh&AK5G*j zvo?2vI@<9F{vy}=kL;$dct^M@Y*;O8w4_>CTpTm^T9C4plq}Y>6bD7DY!PiXAyk??4q7LutHizQ;v%nhta@D z-&AY=0E>V5Qf_KEV&7fX8c6QgJvJ$m#^5(1jVgQn3DFh53qT@zDrxpkV_O^9K=;>l zSaU{gr8>=YPQ8_CLN6IWMH}Hs&`8-E(S4!@oWay>Sl|m*yhX1&5fge{{S!k4^-Xnx zGY*Rk?bsAQgwib7sbAAUxmauzQWk%>sj<@=I&=#w3b`mP5eTOtkMMZeV7v`|!YnsS zGW17O2t}(fStV=8&?s>B;_gx1cq5*3PS*M_197p51LV9CZ5xbl&qafHw!1|R6^5eU zOGWwlisz(H3R@sb$l!;HVGMFNL%;g_g(OaMTr~!fZ$)Ed2IXd|2&TX-=9-M}y@2Cu zRj9R|(l zS;MrYEN*uycjZU2D$}KNMJRkP3IICv9m<;&;$(gLbXuY*5T=XZmBZ$pj>BXmSk(Hg z+3hqq@$8>r8brF#4r>S>5FoET`M~DtpPSh-sm)D42`EJ1(zh-&D@6IEAiI^PN>-_6 zR5)dIFD$msg%-=2w0N+uqSJ<6h|2wtU^jqa z*${Tl(E>|qt3+8Vs4etG5WN$zGEf?IC}84a8(VCjGs$zTtje}Ws&Fc?431awJ55zF zu4uN7t3tCXT5z+n(LW2~ICrp{y3^G+5XQN?^-Xq;Z6-;rsT;PcSjMeHyHv~$70-~+ zr6w;F=?OLXM_{x^qNPX$+4q}-MQQ=s5k2Cli zL?hix8^I5{=)Tzm@s^7tLXNhtMXwzes5XgH#SnBt-B&>e<@1|PD-M4t{!0(IZ79at zqJAv^T9{(cbt@}YYvF5EkOgIPBl``)v93B7>+)LEYafL+9vnX_hKdKYd6-hi`f3zb zDX*o4EXv4SN$awjcb|+S^oO%@ltT-jt5lF;g)9@!wU6Z~3JAsfS;p z^O)8b0qU|(C%Us-M+-EmdM$Qc)hvKa{kktR<**35RZFtdfy3gP`A(k6vO}C5_Vq-# zt$11B5MD+i2?ybLDY&Qzap);Mjv&Wl(L?!YuF1n@sUKXc3*oVOvu*~7*x6ox2SBKv zB^yq{Vi?lyN4w}&YLpEKt63jbhYMOP$7Ne6SEBSq7d?4xXlT_p z0|^>=jtIH#aq5C<2W|smt+Bjy6t`JV3*(ibcTx3f!?l^Se3o;{QyOzgsT(yPG2rMg zWI^F>;CNDx6XD=qt1N^f(`xwX!Ptq~a`J;^L*eeQ@Ecn7)p%>3+|F>J+Lwmnxf?up zeO3|ml(*`z@7T3Oz}npxj6DYmyX=l$BexP$F`fw+lv|kGr5R0yC^u=$(5m5>?2UxT z@c#g3i$@*E?5LFMSjcN8A>UQvKmGpz$zqwKfI9BK>Nsg*ty~Jrn0C{Ks?p9UGqT*T69kZy}bTLjEBUTe;^XyPY)p1ON+dZlD4C{KoSN+He!Q5*`&6_u42+xj&~ zIda;PSwM7IT4-oi5?3{usleC0Aou;#U42oPCT8;iy33o5@!3BP^1v(;bhC5iS%%2; zPG~wKdvJX62DPd$4riAT=jxv;oaeZbQMHt*V<3r~2<%oSKZ18DiSng$Pi+&Y^53^A zEm?`-rlAFEqAU_HnrYQAi_5xo5(Tbrg$~Nr+H8&$rJ!>-eG{DGPUyJspr2{YKuF6z zh~cr0-z)it0;zRW3NLk(7!xpXx4Oho$)VQGtW;kULzF*`60lNLvc1$Zi300Fyw>D%e-Bh#Yd9Y2MxKf6-Gw{yDQ0+UTClzqgF0KC z{K_&t&O4oW0Id*+3DLQ(ZsSyO7#7KxY#bFf&?kkeN21vW7dnLvHBXN|jeBqCux!!J zqwcUXZ98p3PLhI{4=b}MU7e-1OaAW>&zNS>Yrvz~1=%@|UvI!LyW?oFz_+IxD{T`n zjj}c9q?!4ieoE0+f+4_yg#H~R8zCFxTrF&lYNZw&a{x3^*a4!gVI^-%SZCKh>Idt0 z=$nv+ic|_0!#1hSqS8Sd6#Q&gE3-YdWm{y?WO)>{wV7Hx1S~U1-CQ|uvimfE{{ZMw z4Lp}x!M~PR$Zt(9mxWLN0OWvH43HZ$4XC1fV{3gKl|E@J@UupRty-bR_g;%dp8)9G z0i#;1&2wvH=H7|pq9dXOX6UmJ6dn_V3~$7-*n&WmupW&m?mW*WIBen;CO?K}eO57_ z=BTkg8u#btHYje3Un5T7o%mnu^8^^do4S5tS~Mz7$^DZ6`alK0heUMIGY^M+kLAiV zPo3^@MK~S>5{q5|Og0=h3nShuW5dyF!q&}bvW69ns=lbo=RL<#sZ!M!wu8%0aGco5 zbIXqn7GkLcaM+>Q;)?Sv;i}w9a7CwsSDxV{gOGIYoL%I?>J918?!8osSOFT3N-0tiOdc^h_4BI5ncwJ{=RJmv9sDbIBp^ zr=kmQ*fHYcZfv$xkmF3*e(qh0z6PyYq)NTiIB4?8-$ff+<~v6076x52QCL|9lC?1Z z0GQPenWKTF_i@I@Xm?s6^FxKL5zdZU3DR@c>Eoh3m!|;}SC<);#HUDeIRI6lPYsh? z_cZkh(aQFb)nDv5NX)z1osEv)Kx*dqP)&To&~rg(K@+o6L+)qOM?uvL796#WttqIR zBr6D~l8x|ua>n8KNGX_zV|@-`(Ph06JT+QusU4AIh5rDQT5x_$&1brTT+ET7q#f^d z;nP_2+iC}c_sk(-&E}Knu#gIkgWYD8v9oHjsUO*NGqJ;=Quxnah%!q`aQtM~=dIu`;M#Dp~&kU@I%jZJ=$k z8bRb#fi{lTo?LCKUxL+hyJ4*(hy#{@R2E`*=A=TQV@|2K))|`}7U)yDg-XJuyr*XD zjE|m&3vK8VGSKekGs(-}@QOVOPb}oo_(Hz3~S4GXkWI_+oXTxOtg=QC871^pr zZnf1{0^&4L_;wJF#_fW9uP!dTRE?<{v(MFH+Tcv2*K(gGgMO&}pt$u5KSiP^g;D@3 za`M>Wsq{=TIq|lddLz&x4y|5@3r1S4yRRsHo+Ix__5GZt)@Hgr!-XeDJdGn_sBqa* zE?H|um?pYH*8UYXoaJH|M>?NQMyx>^G%QrWIm{JnE^dg~L0DGcfN0Zz$e8qj`?1*x8$f5y4Q`M)aJTMaT+f&Jq7w9)ruEgwM2de zAlXXk0LoMz6$x{|&r}rH$&227hh<9m5yR~Gh8~A>>De5cq7m6z)mKgh^ihSpx+vnT z^0(A443XAl4PF^IzqK)8oZAzytUP3wYNKu*LmYYrqa)nsbwF_RRH@f`206SZ&Q#v?3yi9oYh z@2u3G)&71~c8kA?lR-;I%4oZ(TYs_k#A&_FjZGa)18dR^~1knWAIx2)S%Zqx|i+(aF^1i^iFKSJ3j(W}O(FNBtw5)y;XI&4NjG&)y z`kDSmrO`g(X_{(QQ9zb%)h-tfqM(H}EWX(vY(pUxuF->2s_hLyEqb2GHOgXbqR zak^fUcz(0rL#>*=nx0eSdKI)*IT+K)tS6ZJ9=HtX0%jyZHmq-d&}*Ca23|<`3V5d3 z%I>|f(+|? zd!VVLZAdn|@iqKp^NUh%LPSKuE|^h&yI5UdD}%depQ~2}92qW(nkSw-K*|}mOtOkz zHva%k>odvHMepk>*YYp+rbxYJZSd+hugYSzwcMV5s# z&9~7rY*6Ur+Yw(LX^(Tru+mnwIdHqRO;ujoh)`0Nd}}{G_)&nT4&Ps{;<59?0fp2R+}sN4dN+p zVWAYfMRF=#*`hbMQg|fPO5ISVv2;hKA13k%r+&yMkHcBi@#|z--;74IQ}qxEoX~1T zWA7G)3Gr#;dTr7zMGd6CeT;W!kOt!eo05AmNvPJMjLi4i&EB)#(XONM88fvG%hG(H}ok!Y07ys9*XE z?&o!am%uLr+al`UpMAN5Ap_T1AQWU^b6R|0bbZ8HZBZXkT``_Gs;r z9G%Ja#LXbY5N7M_)05fqLxMfYuo!n1*=uC5^$F<;f0p-&SDtJ6$>VFaSoXo3Ez0Iyz+=sXA z6Ej)D8(ukddc88mMO(#t8;Pf6S47qoZ+!cIn3b$#EN>*86*jc4LVn43gEbDA;a_V2fLlMKuugD9Q?gTMQrrxErdG9W+5#x8Z$f1Hl-JljI>wvhv8$3i z#Bj7UJKv7J_~vJ`l+xW7k!JZXM`w1f1Gp&X>7J4se$9%EcePD}Ny;ye*E+_NL?|XY zVtF9bZakb?pN~}Mvp?q6@qGh)On0u%mUZdm$nW_e=~$R1V2Y*TY}Q*9Kxdi%06C_& z!6VE60L>4^p3#d$A7XamS>aNvv0saN_tf&<=EH!QbkZD&9xrE!U|SDZAs9&rv&&R4qSXscw$Rm#$3k zc;1%^grMhQq$eb-Z&Q7J?;@|~6;t@%^9GHrF~E;VL%M@t8tya>j{3;ExTM8^MPsc* z8`BkUGIFZ1F@NW@x;kbpTmBYV^NjJh>wlaizyHJlLlFQ10RjUB1O^EM0|EyD00033 z0{{^O5+M*1F+ouUB4Ke9BQipPksvctVsfFe!O48Yy~a8jqEBY4-at55nzGH)l#< z)9$Ftmi4aD4k9)_&Fn{kqlcZ-mGnJFBeM1Aajq@ExwwgZdYX~7F5f!Ept9m*9~#96 zSl&{~#@9O9jm>MdWbD|)+AgIY*U5gq6^uRT&`P|TGkWa@{=r|z-Kcvr4`ey!eGHuk z-P>zXX-ppE+7aW()4?Og;>Ar~itwhvMgTUM#oMY5L(Ype*xa6Gh~UQ5!Q_DZGO1sU zt6h=dH<+0;Utx5;&l@Je+raVx^P&uvqZ*f}+4g)6Bv~1G>KHKfOHCGr74t za=BCN$fZxltahACwkF8E=WdH#ojQn{49u&dy68uhV4qm=xjyWx`-;IC0BmAAa!?2d z;%TuHxhJ{_3OWs?8CY^RuJTT+>gLpV9%8Mrr+$i}?%f4TKXpl1lv!88ik%4_RXzT> z&zZe0F9i#L1H^K;^XFM>o$ED!Qm^jE-fF^PO{R#px;kh_^H>f)>K5=Zo7ZPRtm?-R zB3-yybf%g|cH+k8YeeWr9yC)zHK$-*w2XUCMq2CCNR}cv z<`%40_DLa3=*@jNi_^x%Sqh$qN|zG(5pVlaVb7x@UoNiSX#W8DT2__1mN&KXur;~F z%sg&9j-zes4~4))xS4=gyJRbS-n$r+mPyBuxcuv~&YSs(JhFwaM}jCLk0Lg_bv}PX zdx;Sq5&{iLg_)yeBFE-B(KRH_5fGLt z;5oBaCUz%!%D2!imibmIoVmXk5Bk%@!DWdIWb2i3k@BPIc#Ho4xZf-N2gcyh*SztZ zw&quj6k-@#&aXitGvX4_uAm(Yo|PskjE(ReD@}tDfx|FcG$f<{0G9(+8x0IIJ}K7W z22~wc)*^Cui5sukWw@@-xGjTm_+-=btRPlMaDp@8-eXsDoY1`kSq~aLqlFX1zOZQP z_K4;xNXZQw1JKdoNr1zXBKql9xIW11S4#AGb1)?c%HyasV3E_O4-rRU#L6ymqU!8; z0a$muYlm4B9ZA#WYV64dV;M-go&*?ldjK}3E2KEe_F&wM)Ek^eh>{NBMpaSZ3))2qivU+P?M5Q z>khR(8I91C<)*#mEX11Zb%6uDIJ058j z6kM^eqk|E_hP9*O-CCYg{YnWmwb!`cF<58`-1c|}?K5UHaWX|dwshyzaTG;7j1fky zrD5h+Gfs;l_eYO~VhAM@FzTlDiDEO^N9Xdb+ng+2*wc-@Dc zO(H`+`aIDw0FHO?tRs`V#|7xFr}Y%`HdV#pkCW70oPi^J^ELB741>atU9B=p7}bEx zqsxsEVOFguMy-mI*-v17rmR|$;$|1|tU|T&#C+pl;*%Mg8Q#oAqvQn`+bJ53HEpSg z?D#z(<+rljEGdh6j6^bz2LSwyVqQ;J0uL~MN{0c5K^QF3=wxm>bRR-YOftf{mGz1| zxYIcR3zI{$6aiz1W&Z%S5ARG`tpNZMdq{ZP;+Qh_4lg`J1KSAFW4nwW) zkeGyyZfZ|-`5MQqj^Hx&R$Epgb{o|ZMmXzoepS7a!$eIHdI}{#JSbI&G}5ein|)&I z_=ev}lwU+%^PYmA5h2v%_g9b`CBwF4YZ~;}A(SRkhbsZKP@WNdbKpT2qpvS$wt$cDm-Y@yDEXHHno4I$GDC#WE#63Mz`9_ zhK2tC#>eI>v#+iN{t}vj@CcY#OmXi!-gf#In{-chQI!7F(7P)wh^x~mUZ;Sj!z(6l zSl?OTKF{;8RH8(WIVxCaO*C@Ihl;TuEu$?(g2FRzVS9Pj3T<%spoi?sp!gb@n&slR zT;SAQlaR)ONm}+}!F;H(B%6|MPSGy%ANLo#_=cj0zMFj?`lefj(FfXZ{{Sjkbe0&{ ze5(O&_7T2g_^b=y@lrtxZ&6RQZbqC%d}syOc!R>8NFv09z0_y7>$23iWlTiLd;L=N zBbo50l$K+5JZnlRVhxQpGB_u`pk#jnKbkaax@&R0oZMwn7x6VaAX#Ebyj)!T>i|#w z-ba9x+Ms^U#H<)`6If=kxwZCYrI!Q|-pm}7CzWC_?pdNfV^LB}`l&RSNcZ@KHuqDT znwJwJNh53eRq2r2554~Hr{9%+^}=lKq_ERo^YC_$7r zJt`7Cb`c!)9op=S!#)VFi8+NA#6)j&-Hf$ufv8I)@G$PkpQU2(#NHxT?JlC9fQ;0E z47iKNiY`U2Dk#eudkM5hF;?~+N;i?FhF3$#{OP5BHUm;m04sR=xSZ}&LF406 zA@0b-$l9@}Z@s^rJ}MYlt;WaBh@*N2k?{(LgMyziMgiaBTGPtvink=#SE2(1E#Cg) zj%T3o6?^9V>Uh10-F%6snI*%__b#U^bH7SA`V!9+CNR6v7z{XG)ih0MB4j=yo^Bs5 zbhsGWCHlt}bI^1ZeVSU1D+u%?$K^|h!$lMemMK1F-A!9%)K+zsIgy!s z*IHwh^629Amra|7Y)qOWXgpZ-p*rQ046MAhvk!=_%_jc<)Gvp1zly*t6Sf>S^C9-M zZ-uK}g49vb)as`6LkZM+xqHIgiQ*{JHAfP9M83+M7wwwFVoA>{8}hwlB3mvY?bDCz zSlHZWaO=zv2kBePLdvJRA_BE)HLWM5NL{j~TO05`6@->TAjGKfV{ef>YaBv}j`OtG8jbn@l2_FQQ@sNTp3L_CLD zd0e}-$)?2M9wVuQ=TqQ$Q6kpb(qf~xyRNkwEq58r9S%#vF6I*y{UPT_c7+dJN?~2>s^>h21!@^L9Wkt zvf@cRff;XEu^X^5q?~{rf2BpOxAKiX;_WfI zu;oh49O>-JxAI}cY+Mp=3f@K?#XPUf);{a~LDQvUA5!c800pBUWt0ReE((neyeXt5 z*xa`rnMDInEKyE1xU+eVb!s#+wjxzKsK5S?O2tmb>=k(cIDBgp5MqUkAmTAAWL^vQk4kBz zX&mZJ147i&M=lkgi0*lfYbKOx!jap3H`K;%e)0P?i!!!G0WYGJ94aO^mje@i9_3&J zgDwWnPn|pB=P$=GA1|Q<{hq>kGL7eO^zp1&KBO$m)fiJu?(S|$zRS{ylQB7Ouay|2 znmgR54-s7LMw(Vt97(lDgd2n##$M|N(Q5+t%^Z=RyJjDqc0;n}#j_L3E?QXQ!$6Ca zakkAUQ{pg%K)H#p@M_Dkoq*#~c650oa3p_ham&)NeHDE@MS+ z!ob!op5Bb#8cxr`gBb=#?uHz^sFt}mHLk|QVIn-?IS-NHRyArpYDmP>6}o#BgOQ6S zE!pvt*ctGt5O-> zHnvww8`SB1t8vKIB>wNT34j@e9#kiLzoW= zWbbm@zMdGq@Gaykv*)_V8sp!Nuw}cQpe_FZQA+-G+4sBRR%7-M{Rs?!uni{=>$%^0NVD;G>`%HZq%nK^-Y^cnDnmY)zHC zj?#-9ct>Pa7Qb4>J%jGw@gOya4uSA6uUEA^^Qg~s$_Uyh;$X!JLu}){cszE8Hs@u`)YbmCFr?R={c zx)>aPiP@;2YkP!^?n#W~K1YRKtwhvtER(zCTV)#B=fb->d)_HgkG!`0>k5DQLf$CD z_N*or2gD?s#|mn$vfI8mY0XQ71}wk|bUwfE9wybIFm0mmKNk)+rIk;|7B3h?Nv{ zQ*%nwn9*_~8!GfxG5sHzoV6mH;?CE5@IQXN#xJ}2-u>f360}i4= zO9Grk@}q?WZkUH38po*B)x6jE zp^n4L8-00Glya=rJ1i_HJE-BW8Zf^4B+kD2uN^tmZb@Ezs^>wiE($3onoP1-cQg%ij z;!N0w(&OFopeRr@l1U~V{{Xr>r=tpZWOQ}2154JPR|>0gPLwdnxI`l3Sy*#!pADpE z!?&|2E96ZTBpy3smfP$EZhG*p$CAXuI&}boDjYr$@fb`u4}J9`%8L?7)bZE|qa3K? z-8Ffo%k29@$ksz@CYCe5kxuS2bK-hdCRRB>LGz|^T1a7#^<>xbrj5nnjX~y!0jUl# z^PWQ9R@rK~rk@DeQsxuOm^Ga6*z=ZSq-m=$qcoZ>R2nMu6>&v)8&c!2DPl~KYS-6F z3r4M3u_9JEQXp8hc6KS%B#gMX)}XN!*!LN6Q-8v+F+k0RlRFWsU%f?`-;L_q3OYAK zdX>nU7|AEwLD#6MV>Vm;{NB!)bPt2v2f#BgoT6#4zSZ%B(8&zQjhPX?vd` zSP0l52IHEIN0_V})+OLSit(DlmMkYj_ffA;zA<|$oD^`@fX#Xqplf}G!b@*s)wk_g zIBe;uHU66tM27N{nokc3nYGvsOrqQuez=3*|mok;|CdQ}4Nn$KHo|J|$hJacnH}P}S?Kpf|4Aw{PwQjK!FGf3e z(urzP|j(5tW=vKnsdtBnM`9;q0bokVG zkokM0wra+~?iU|)8pOMRAtr}r!Xb?M=N7B#8cLe@5v3Zo!HC0R zLme+_!=6z}KOR#^_uWA#KZp@u>5+OwwrOu}H7e)M4j$RY~La{&q(Zt?sOO1|Lm}FwDV1mG#RkrY`aZyClN+FaW7jI>&64%|l zQho=$Vp&@<5Znh!ND$#7Ijr8X{?QzVg$I}_?i~sQb2uMmFsOUUYmpA-i?DW@Zox}zQQQJHZ!G_N!GA9sad0)V>k9& zLGU$<;u7P)gHAKaI4K$nk<8k?Ab^XKCH7PK@!HX_bYd7)q*+(klxJU$5w`q@{FL;pSr&cUj*PX2xX;;< z{{V@#LyGLFOlg-cTdz%ifJ{mTwU`w@8kRBY#$i`$5mU>TDqi$3O3+5YyM1GH`=YzF zb+ZvuLg{*_fu@E@5xvuGm##vvaA8*uGVg4+u;jjJF#M~s-bKDQ zH{G^d{Ocsqz@P}@P(U6u0IQvkjesiaBwPnosZiOJgX6JbkJ2#%x;=#E=lHA9!^<0? zJ<<-EUXv01LJcJSM!{U_JQf?)4{N+fg?2Rl^pTU`YXvFweWJcvUX!vg%*y%ZZtAfd zD3f}%3Q1a6PYDo@jTBoEtsRTKY2-FYzcP3VVmpuz^VXtf%_nEX$EYM$8f&6LAs}Ad zZ&~G#+Sg)g+cc?hFhPh&$?gEw)cMu692`hn>t9el%GY-LEN%@n@WC@5xPBGmu%1-C zmjfu*5cVgc4;sfC24rF4f}qU1-p+*hsIjHR$pnk+ZuB1=gwkSgvqd28gK&Bp#lptR zoONAm5)ah3%9;q?d{PApJFCo}8fl!n8qp-+myOA|HPA{lSS)qSVaFyMWvz_Ye; zR{T$mB!|^c6L@D8Gh2HiD)<|k3o(T>NX>vBuHDra|u`;pw>AJ{UOhpy?TFT$ky+v8NPyyR99Prp&oP>cVJ`?70{| z{ni}MPlZT_GRVq$gIN3j0P5uV(Z^szmnGt1m>!3p(3K_Lvu@N5C&s`3!~h@>00IL6 z00IL60RR91000000s{dA1ppEg1`!k$7XR7+2mu2D0RjQ?BGG~4n2UA84VlZ%gYqfR zt68SjIF2h$Rs5JCZ|DYDcl3XyT;gD2cOWdVsS^2cN!nb&J6Nl!nn$BhB)qSOu4Kvg z>0>ag^(w<9&0QyqlM2ptGFs}<2tQ}(*ED6Y+I5GcuBh8$%^JXG+AD)H_qn+nL^mCq zTuOP$sKSG6Hs>#nGSm=b+Xq(UoVJ~Fh#g@U`9auuV1GF?6ZdkyZJFa?O-z^LTE#?n zuu1lcNDZ`;G4)MmQq{LnOTju?8A&N<6~%?IA%SPz>Xn`(ZMT0f1&FsfsVrnsAi2rR34=e; zc}H>jRm>U07x}tm6V-NUefW;xy&P1m)Gv z0v?IjAJXSnly{Rw>RUX4(ol~}ui^x}Sqsu)3aai~suL5*RLPaWiL;|kU?P8d)8j1m z+@JGhn_(YHC^wB;UTHV63-KVNLPW(f$PPc`{Dgn2KribzsXDGb){De0H^1aGbwlXkGiV z+I82(TSq(WxLBstyb|}*T8pQSIJjaEScsWR z^qmrC?p+xRmN3#YE}qgiHH`fkN{M1FRwm09-6m(_om+Hi@HYEu>4uwZQvqRD)z73+ z%xqdsl-+x)ie`A1m&S5JS}=^3(M@$pxNT@FKHvugLnp3|^^h~o%6!Mkz%L+u(y`4#>4S*KJ>v^g_9F>ST8n_|t})D?iT$*z71jSIBun%P_z6Fo~jF`a>u zv_O~Y(X=*6?07`xzvDwxB#YU3bT11&(%6`rh^Fb0=d!&of&42NnF8Y;gShqRF4VjYZJx43#m$=vNhs+3Ny%zA z{RDi7^r%)6iPlwn5^ZA|D*mMD&_{cMP|hMN8S1f{A0E%FWDKP{{EYz9wWA#_2hg|S zDz92;Gvja0M^6)u&NipLlKWs%S1M+ikrCnr3b!S@DT;QDtHG;)H_)*Xn zy6=#lqVw4V)3s`zY=PR%O5~djLmFbsIniQ*aKVG`$>Zw^4zq?tQ%au`NJWQ53^A+yx&XcHVU(Y+7j0l1MJ) zs>}PeQX3szW^tct&SOv}ac|t41YXqDFOJX0QAK>i_G&7g#I={|piUR1mWRyqtOj!_ zyz#{1Bqn+y44v$-H0P}GnV@UU^h%(Q->k&H>$O^sk4`qmeQ7p>Qrh;^{{UhPOWIth z*3Aw36V7G{2TAr*$>_A-{n#iHznNI>1Zyt2e*1~(Z?7Ixe^ zrF)2$_%?C2(x}%ZmQWy}>;tB0003300R*r1QIbpQ4kX%GGTFnk)Z_?BQru$ za+0yZBtt}Eg3%zNQ&i#q+5iXv0|5g+0o!SD1qzg^_3*KmHxP*Sz2Vl?N-E@{o3ncK ziAvqhrlmfktkoa&xb;ygCbE}%kWZMK-fn+M;)AR;C^%m*$oCVxrmge$mYIi8dzCgH ztoltcK)uT2(rBNKoo1B~y3^ZkkSOg!Z5o!ouX1n6m#?&=!HGlBu{7ZM@9mh{`r%k@ zq?y^*-d`P-n+n%XDVVj9T}}+d*f*GU^^3RUrWAhT0^-<|?|q>BAn-U)HZVBpF4vYK z9bifbGv+g0r&~1*>-(3F$|{>}sej=zt#=fV6bFgtY27NQnFq6VFx=3F6CsBKEi7kr zm*P$U>Snz^5h|jV^DA?jwKl1vC)Ewa)R1=R*+(*9rA=1Z=6z+FSixGGq5VSBay2JE ziA%!6`^)wUS>|w~sfkDu!u1<0(OCG98AW(fUzBYoy1E>oa znwkRi+zaHRO-~QHpKxZnp+qU&As}arN@%FO0JIQwfP$x(n7A+t0hT-jwn@1;CJ;Ew zh_v37KtENF#$Bc*qBRlnY=w=9OZpRs;kka#ET1qKGGg)N&P0Uk&3qj-NyboYVy zI4~$Thf`c^J{3MA{iVb;=n?vcRP=_TDZjkhC#>#i_;Sa}C15+=`)TR_0CVjG{{Sf* zb-kvt*ZaQF%-;5bnu0jKNthFI%+0lH&^(Ui_A_r~fnsb2IZswzy=1s=AU!6Jk`e4> zAJbN%{BItGdaBbf18YiVZKf+H6yXz427FxBF)=jhbCx_8tnU0yZtchZyF;rf7_<#V zM*=W@9hYpFs!6^C8jIGh508TSL?4q=XQ9ZIcG>kr`wT%v9-c0(^f8tc1fCO7NV^Iw zX|`oE#~$*Z07*Yda4NoCxOxf7U1h=OU{rc!=9_&d3AAE3GOcRVT7zw>ztU>(DrlS3 zul+=(JXEUx04%AiH+9=ZbGP>&SV)%=^SP@@Luz#8nfyyHcpg##hpv@)uMKsRQZLC-2*|scAH`*$1;i`iE z;&^WwcVhfcAUK%o_>~9ZHy=+)e9OvueMLmgokK6fjIf8SBb=n#S1hcG6!7X9&c9Sx$gQ@Q;z(&88?YirU!tOp<7 z1ecc0;n%sS^$OGEJtEUz!PM1Xb9t*G-+Et)N|ZH^-qa4;d@~arn<%Ye#*<(E;<~FT z<18n7`8ES2#ne^bZ^BO}`;S?C%kY$zi!niPIDwcRny}_C2;mGp_N+wBEkgt9E+)7i&!_S;RJG`>S6z(5%YbKu z0RpaK^@?e>U`Ki-xD&P+);6Z}X|;g!pY0VX1W{l+E~F6`Oxl_}Gr4_lFU|qNZK7^? z!Kh?Go45X>j6`D8>pFS^iLA(7XU%0q)zWH}yTNnmV+ataCT`Ui3xc_nc5U65yKWpt zuKOvQo^8?%Ju4`e;{#sc8TUO?0p+RX_Z+({BSrh2P+y5p8PW7c1@zM{Z!86M(yl$FThKE0Rc1v+OjSQf5sTQ(lDvY*1%kUBWL`#>qS zp-;9VqB`3$DxQ$Tzuzv%TAAq_#Gn9+*sbDd72Kro7mfp z?mfibio=|;+nMDE@wo9GGL1|<6eHSb*kMZh7`i&FndD)H@n`r}am5O-_!ujxmw`}| ziQb;}pvUP`0T!^7PZ~+`iA2+{NpP$;FDp&PZH9V8qf)9h`?BY0=_xwhDhBp3Df5QA z3a{l~DD~?x$FksvC~83i6)=7Ib_>Hv3pc_Yb6vkJPxBe3Wdpcd38p6C5MZIKq^*lJ zz3(q9BePtbKsOnz3{5n+JdX*!twU7ap!!Q2OUw()3UxXgA7+7pTjfm0VXPK{9~1uo zK{i;XsHyh2pJ^$!>P_pJt6G%4@waB-!y;`^1iV{8Q5jDHCDhVm!U~>QyeUZ2JW+@;!dQ&UpGkT{V%@h~TZr|V znraPgJ9~jNn}+u*@Qbe1DkFG5tO~f{2UrXiXB<}`!(N)VUOw}b6q3{Lj=+<&aU-ut zr~-}xEge!-TyMdE=5vPg{53^6-C-&z+-^N>d2AL_Deb~BZ=~*1d*-9$_KNgf4>5_} zQ2_ad474_cT;Bp}^;H_ZKMB4sj8C+a{G~q4HHf!;KGD~VvUh~ts$`j%w~AoV>d}et zRTe(t7}$cHGFyNdo0q+D;$e^Wj>>O>fczq8^>k~Z*$vh0z+PN-HTcWXsdH}()PxL` z_Fs`4XW9X{(>}9UcNTTG6KqALK>+D~%5SHuagZ)O;Nbj!yrNWJ5|DWQ+?km(Ob_~YqIZ8D%z99bqFbKM$*}Ww{%w?tE za8!&O7%A?ec%v}-%X94AA74~cN_){TPpsCb2T-GevEB8W@HY zEMoJ5ttTBs4m+aWCHnRXVqt( zj>5senk_pNB<9v8ct8V$#I#tnHC3oz8@xWpvceW&NgKr9Pg$m-Jhwc_np&pqMP&-3 z!b+cfMxd1_k(G0KVH>Yu)9PqfP))^{dqt_8rc&n6y{OPPcg6Y$v}vL*06Q-`r=?on zQ)c!u!UHbC@!#+$`P=C<;+lrO`(=TS1*vM>e;0~tHl6ybsGBHK1Ejf@o775+U3;|M z;m@q6`tH8s3TmpN!d?Lj(r~_RB7Rd5V9*{C(`D}}>rZ{VyS_o^KGCP;s*mv?&$U9I zz*`P?yeulzY_|z%jP?yKwOF4GMf!VBL9=_#CoK5++>-0~B((pN4!jJ+=3`fJr>D=(dI>>R!jj|CP$%*iS_zva+KHrMq-d{Dm!dJ zc0Wj(abc6p#D6k_G__XU*i+SU4GOiWxXrF5iI%*#6ANk8lpV_A)|9)Y3`k)q5&5Ed zcAdqz0R=pqvEqAMPpqd_-WC=n4&LH}o_7ATT}*GKYai0{T7$)+{!@9Z+xZPme{m6M zQ5m~Gh?%krW-Udu8hYlN9|LecuyQkNZes}{6E4QUMWIM96U_B8^KuwzR&YG5KBKUc zVHARE0L1c|a@Z`s#yH(=QxVbxq~h7#m~SmTAfs1LTi0oVdiGS;R2y4uBtCE4W|f7F z5oxDzb~`Eg&$!k_BXB1VXbr6`3>u0KhunG?Ew#=>Q~IKyE>8*f+S~sC%cgPadseL{ zQn$n%!u1{>l*}Z7JE6u@*E3XOYJ3N*Bl7hwzWJJ={;&T4S+(nixnXRdSYcjr<1=e- zULmn5e!68$p~rBRX^|A3FlqI!mhiubOUrf|?36&cUB}Ld?K;~ej+wu=No5rPtQ{x!>mhq>Yd$J5R5LZ$HEn) z#MP-(kJEca6e-zkEiZuxJZ2%%>X;8J=F)>&^#GIhG^R`&_t5M&##ZSZ_by7Pm0H(}%T51#nO$k%K8Y7F-0YfE4JJwg8f7+v=4Wx2L-1tkDNCFMR0(I10CH(n)o?;TFj z<@NQNYNN$POwtjJ!{ZK)syNL%jP~t=V_b5B$o?Le^@wmxU*9TMdQ_;Un)rTQiY3pa)Ku4()A3ao&(dmX5605C^?P zePu%XH5LB=;=JOTOJTr6X=?~7>FO`0Cg7pC@RnQ5#;N#fd`*c+DBk4CKv`>59~n)M z+N0m297P&+1F4wo%v~I;j3&=y(5HQyZ8A%t{2voic8RkwJ`N496*>n$b1abpxH3NR(0F(~S2SKEg0 zG~7Hfr&-_CN+X{iX`yR=9lea8P1dW3`bS3xdW&41A_>S#ncbk3R5?MtcN`8PDDzQa zH&_e~aN?t57!ckVN|>xIe#2g&PtZKZQQ5P*1bWR4{{ScIW}PWFbwq9%&R{6Oi&*gg z0K>YiMz14-5rDR0xZ^v#0lCirCd;#%yK(fEl&Xs|13u-e8SuCu8HtX-Xj_g)39q0R z@K~*{ahP}!ncf9O879$aEzVr=F!GGCH8fpH@`34;C&x_fJ%IrxRI5-T49av6Dvxv4 z11Z&~k&(NLPl-zD$7@v3|{z3JW4+OWdGo@!=e9q`HUisrT32t!rip$0#s;k_4%`1$Um0TqP zSe|_#q5=WfI>D#Z)2ap=2i{x*F9iGwx9K%%gKFQ?(p9JDrsLrh4+^s%ke8?4x1HwL zBG;zr)LIv!QHT#n?IYS|c&B!jUuj9u8iT}gWfSD6$@P_cx3;L9aJ01@ma{24hi=eJ zVB6D_;c+d}ci0?1QU21{5rp0*%KML%uzd_loZ(g7d`$O@Gt1H=i!uZ6G>ktad?($t zi*G66F4u%hP4wF_sf!$$O|Z&Gtf%Jh1)V+ZtyI*gwh6&|4fxIiE}vQHP<=#Fe9=ZrKmqADek-5h z5lz9&q5lBFv%0E4Pyyj?-J&Zg09?=i!~iA`0RRF50{{a60s{d70RR910RRypF+ovb zaep?h zgRKZQTrh6b6A7x%Y@>6!QOoU#oUs5-(y>Euta05G{ag`6B+Z`AqG1jmL5W`rh|AP2 z&Bu(qGYVBB+^V*({{UkP#?m#CB&AtUW^*%J$Bkk;0~h-sg$-(>k=4Vdpl;vS5IC~= z84*BzZvOy~9Sz0^_Zt*>7P6R+yoJZBRkKS`gRJHtLDnHu#Q@ypBjU8?d#Di#Di&Xc z6AWM$vPW=GST6X`45w%atOz!WWqd@c(l)O$hz*$3wdrwa7@1nh0DAsO)wWh zzc@f>>K&B%5SC62ZBrk$sk>06SGH+kX*d~T8S<1xo(7{!@TZ88X^t&;kx+$&@0K7x zvw*`0UDeHT6lDm0$z>({+;2cu!c`cKtiVf_EcY=9f|BZ?R@Y?Xd#dmvGj2G64Npje zD66|lR57?@&`Y+=!AiF1RS-r5@QHWC$Zi3)oxttlrQG+mvn+t$T1^X+;-OoR!2dMRYO&p4gOZeR%nB-3EJsl+%v;k4SKiqO6)4Q566J_8PeZgR%%JE^%n0WId4p9DT@ntk z2wAN~Rarh6gav#0MpM@2Xxb1OqhC-4@r^dI0k{eXr7v`k1h=j0jPm~gY<24?Rausc zhl*jA%^QT~)-h~WBCI%o*8%t0m{*u_4b{ukYdM#z(AmibWTerUqZ)#<{6Pcw;e!1Q zumZl1E%k6t;V{wR63ngBOvX^YV7B)NF@%9niKW&mtKa~FKz+YU0M)^8Vp0ByUE?jp zv_~4$bPXdc3`kd60jxPQJCPAd;^w1e)zzP*EXUZ?EBR_>`Pz!7H7R{4t%I0>S2=yS z`n!Y>8+c1RVc8x~t+tA0Faa66sI^whe6B6Eh9XqsBOMXFi&a!jMS+E}YZhxL28z@a zr`Q;>R&pGERJ9trG8>skTKIfQ%bP`_c6%x!_htxHl$PsiW?VsFFQ~S_2@QJ+#T$yW zgG+hgjh`L5cNH2IiI99svx&f_EvbPmUG9$M{g6Q2ax&&uDc7u8?iEUL%s{O?LeVnA zdzb11QuE1!$r>Nyl@!4OQvnbPEV>(E$SVCSzThfucc_Vue7DmKpgGbmR_v)^zliG; zXHeB_Ei@9E0bBMnF+kQL$>Yh1!ze%lM7;A#D))v`y7Bsn(eVm}eaw6~A{9$Hj7SBl z30s6ivGU8o>c5>4Omo7Nvs_*LpzE8p71nP%9vb2iM3jbMWzmX^wTj{Sfp`iMF3N{| z#Vn@Z8Z$u<2GX;%Lj2psFu83FjyK%Xge&r#JnpL2nMRIUJ*9S+DIL-8D&eb zbt%AYwG^%92o#zI8<(ONbx3u2=~vB0p4b&O)}@^@c=(O83j9V~e}HLqF)+c<6i@J$ z*F=77ib^81nYay#`##B(u70H>1h@wu6Le}J&RIbgDl|Drtj$7dg7RhPTs}0}rFM?w z%dNx>#O{kF(O{%*EEx*xHH(!GsF^%@@Cj=M<3si!^4TF*m zZ(CE|p;@U#tIa0o;=g##?P$0F8Nwo0((BG#j-I6xwR%L0kcA&{e;9v=*3 zff32#2(xvE5NusLqhC*9{Uq@<{!ZrLxN_EZUQnV{{RG*bYbMpEl6KD>Hu6W7DFs;IwfUW zEeK-MwL}B_INM@S-W!CiVL}6(*>bYc$-X0NBb2|QVpXESrCX|tH)I??`GwR2aIRv7 zm_dWOuc@UIUO!;dp60~0_|qxowVXz(HozTB69V>Y2{2B191glrXzJeqqwSFm=2iFn7`Qh)KryC-!Y7C;jN&k2+AS?$+!;nS=IRr zO2?KK$zf8n04m8>+BuwD^zm$A28Y$c6ius08>p3kkVxu3W#8%du6+fZwl$xpI_+K9B=Yii?IQ*Xy` zA+yPC#Jha1zOwAO<%rv?O4h=x zASfN&6$^zfkZz)xZr1v03hi(Q+Z#LF)fYARf(5>%C?_;7`7k02Ym_4Rm_)bi5H2k) z;fx{LEhbEj*Ah|`4LH)NY|78q5JJ&`P9yQO%Et%p;tSz3ILW93+SxTx{U)_S+{EZ$ zG3x2}0nwP2BGO%k6adPe2l>x9d1h6GH$0RRy^@73L&7=I6(5+Wree}N{$rsU?KqzT zCSf~G-LToU=be98j-VmX_=buoaB4O<;v zV0)m+oS_o9OtFnZ2XFdE3?D`dD)o~Gsth(ZeNVA8u4&L}A*r~GB`=GKnh6$Msf~eh zD`vp>%~T*IGYr7X0?&<}q6|&TEZn#>!5-Rz+cs}&wI)E8LT&YIy7i*}0MjX~kgW0e zNDZpk3{37-Ez>GuH`x?Cs#3O{O3?KetJKWpEEG!1rfOH@u#NIV$o3|gelUzOH%Z8o z9elxPXiHU;V94N#0+QDb1ajPinmQn?IE%Eu4F3Sy0&Ma$0cjeX9kj-+felXbEXz1I zJAhRd%Z(!HvLNOnFxMo&g#171;Q;V-E4qu57?iJBtBs(XG4pWTDk#YKBUNPpHirDh zHZliIke#xVBu5h2vRMQ`yeF%}0JQKA;fx5fvowS!7=$QCbmk#>R0dY#m(jP$_IZ@B zLyJT6+_4R|NnYD4X5@{&Rg4{~u8IYKNGjbG@FKrqQCxmRPPeq?Q5=x~7KpYHT3lRI zs>djX$(~`l5Q2{$2c{qm*?9<-8JhJBbb>LkL;hiS=JtaSit%$gB8{zue1hw+t4+;4j9Y76tV>gTd`SNQL4xRw1@gPR&)`^H z$K@DMip@%&Vo{-+aV~+U zrZ2N`e4a6bKajSTvKK@Ee**CzvYg{=svIj;b*M-P z7g25UIj!{dXCWD-`EZpJ*zQH#U2D3SoB{6Hb64k>MsWcZ}dV)_*qwUEE zJb&!WCI!NR1u3co7^A_>n`yxn0`9?kh&6+Aq4fw5pv-voB27C;8QGOzk8-t}&MRZ- zfwn>U!Ue-F19Nl@+z^SV%Hb@NbcIxT69(|Lqz0TlRej1UrmYM1*Eeq!EjMMwFl-bm zk0PYcIh_hVdWJE+kS!LuWv|&;l_lXH?lsNCHPdpu3$rm`G}GFI0i;1oXh38N?t#0O zm7#-JZuNh0wrXgJYnCxtHApYeAp)?k`=QFV=((rj>5Tx|iRFoRr4&331mi&9Fp8~W z1&W$+$IJywNL?O~2VX=aSQjJ&OF&)25Ge{J4+~>61z#v?%b237cU>>IsXZWR%0>B# zlkCJB+&X4v01PZ>xp%xrbpzB=RY&zL7Xs>lb{ObAfXePN$O>YJGTK#zg=som5M^jk zKV$(~ma|A-tw1elEvCO^byJZjG2E(KpaFWN&r>x9d+?)VBKB$saS@c5d3!In!94O) z1XZGwj+gahy=<_U;*~+R8;07|kBAmMnp=%R9pBP3RmR4KzGhO6t1;5o#b3!9v{+T* ztAQfb;9gxv#haC&AhbqbDlwK0s^9Qo807=Kr`lqfMD%e+DEveyj4}lm+XV((S2==b zg|Fad@?Fuv(JDcfanvzvMw`v8eMaLN!j;8tRZ8KnaVvbrW9YMFwU$>H1q)iJ z%||XSygZEItTA&gIPcgwIeQH_>ZLY}H5lmq80X2JSvC9x{He?ga_#x~6|#36l;^OLOWQHt`aabGUZH z66#{wGX>V$FfdI-br$6MW}8~nq_}YugnT-(U^zu&XqZqEuN;QEsGh^7fjovSFj=!3 zRxHJ%KwG|0 zlAyFI)HexPxsT+>OGlq6!+g&<`+$J>5B(8_7odb)>Z=jzK-<#`#NWqpVu3zGD}>@L zQ8bJTH7)!o&IZrs;;CSDI7b8$Idv4bdzTkbMTWbGf=xD2;Qs*19F2uebyHDo_?IK_ zQq(Ke%)KmwXR%?gVt-;)K%h_W*IlIQTY%1iSER z->Wfy6@T|5)V_b10^vAn7z833OCf`^z+%0Nr7<%b-9n%t5($DLqrpG&R2+Dj zh{39YHBrwo+G;3%zG?Mxjq%EMpXMW_dtxwr_dB7?4B%CJ!X0NahT z?iHdMo9^XG3uX-nomxb_wE9eI!o^%yDmqGPkQ@?&{rND_MB38EcspYQQTbIetgZ`U z+Ep^p7=&w?cG8v?o=Ej=UhkGBRV5^FxS5&u?N{fBK)`I;|Mh>)Y46h?R z1UKEnvBgzT`)QH>k4o^;? zYZtUwVS~F3gjZBroEHB85&r;!IF&m2?h3{#b=K2P>*KjVm_wH=UlE2b=v=ydJb_wG zOL||(I18>NK{Y9*BWNYSIoM7(%GlaHMSOjg0>U{qt?=5!^mHd4!|AGh!PUxNWz2s?9+MVZeGcPW@nr|bqQ2v|Tq*3_rI+*^5mikL zObziE-l({(AxK3!K)H6v*AkRHP2r9h#Rc6|1qvsA%NmV9 zypCmTwON=qUBq9^a&+7Umt%)o7*c4Ws1bi5wY%=~F=dGi)Wj_n-y(qgR7wya@8CtW z;L=q`e$@+)&A^CeurzrEXwI!FT0l1sn2{h7sTLkB#e8C~h=kQHF)ZBjKdbUooYA#y z#Sp}_%0?cpBAHZ{=2|Ot5P|h6VO^5o?O{MD3v$I^3L_;~6)k@`+-G-RXb);tWx*2G z{vlQqqrV~@uQx#X`{rPk7?#=@vqS5>nelgkBgd)pc^u2!Bp$U3$O1t9T z$#ub>YYBH)VQ50(5X9hYOIF1v5$IfH=a^V>29+BtFim;YgF736W=JiWW~d-0iCXJ| zT1YlDw?~rAji4|Nd5wC}a*>+q<=GkiMVYXs>jI(>xJps5`x5b`##JV5UT!(1b#a(E z7>EV+GI70ysRhUtUKd|%b>x*RYCcXbfD!aaIJhxdfadjE)?iz~THZ>1#L^5&6y^?L zAgqzYU?cGm9+Kaz#M^KMC>VRp7FJ;rOu^4AThdkK^wO9NLkmp99%Uoimu!-il68qx zH3~ZX#IT@Qp{DNmV9jdOlAYw_f=ls$EOPM_mryK$^qHfWEsHGhrA-DFiP3h-7F4<$ z5b(>3`}vl$jMInM@z%O6wNIdM9mFc4Jlh=4Q`hI%>Y^ZnsDgyb>$&2^BA6H=R=N0N zQnHK&P~dX`p@k-&D7v|3WF*uyS++O}&{)vf4A>xd()9_-HgiU}<{&Hz^_d|Bg1*Ir zWVj*yYy2UdT*d2f1`~-=!-|UtxOE)Lvnrj4763#y)$MGZ6AH!>=)UnOX0l3%maHm( zZj1bmr5D79>=#Rwf6?btWMyt70<+twz__5zqS{pOYxc;bP_1 ziHmHOk9Er^X_1K%<>L!rQs0PpvGl1_M)5_;^-Uz?f2d>)OVgr)qDQ1#6`qu$iAs6P#Ty1)8{~92NlKxsd@XL9jHBj5mS<)A`OpU^YH$3CsXy zuOeE4_F98B+Q)X{M99mjQ3ZWCfo(?+dk7aGu_)SiMVw76Wuq#`t5TVW8@h;TlnBQS0%q{XYE7TYLn}$~9Sd(UOFN0G`-FsABQGYycQ4+KjDhL0C5jDCkiE z9l}k+Ks69sY-@lR8_caWkBMvQWvhr72MVn~#f7lUU8R*S!>SWwLdmtGi;qoUD<~Xg zsKiFawjtn>widMtAFGw1WfHpTp+TbXYX-U8XuvinigEHdmH^!p%gsQEN`X2hf`~wA z#K3x5I>c_80bGM`k%r#`n)HUo^9p#Hpr0Z4QNSG|mOW(`P(Vp(OgC?kRr>ghD5S`n zAiTVceV==Ufwufhlyb@z@iHq{35Nu0p_s^_P!BXWST_A-1YEmTS!jjvDgtD`Nl?|o z$_Fc<+$(~Gv&gZlAD6h>N`Q}d3L8~!JgIA2#1hw-Z{M0>1ydKviD*m=#O4CHT%ZFI z(^!>Ds311LeZjnhXszLBa6priuO89<;+}J6dGbF>`iOZsXCp0x#8qMXz^kgYF=EP> zLeetPb4Ja|*9b{wZUMAw4)H9ovk(Dwwz%c{Eio1)CJa_Kl)0&0^#1^?#t2sc4?L}e zBW)TkQ1Mln$Fh*QKrmVQmgX8*GN!WB!8Af7r;BczsZDiPxao6H9qKLYGF-a@6$wlU zR0XV$E;63mnywW%n@d85kDh7@hRSL=hP8`B3Y^qwS|fxqfY?ODvdu-xTMT6X0J6yR ztFq$>=aL5XmKKD)W>Ne~J=C*wUS@(%t~lIF$-64UBsbR(JG5 zwjVI~b5SVPLG;nNLv98G_lP-w6f^oof>!CA6`-=(Saod3^|V^~5rQG5Te+7ZgpJ)x zoZ8UlS+urQqllACT?XY1;SH+IMI2g^@IyfX8-XcH8jPFYNqwV~A+Ep=s*0@)+C8XE zhdseVFkaUYMP0|B;x!on>l`xmOb8oWawZd=Ug0sAi4?IeV&Q)>mbSt&e5_y|J5!zg z!3RBLx^mnY-9=vZ;grT=h`?$z5-Or@HokMreZt}ui;K2m3WDqNs4q_%VJ@iE_c$3b zDFRV>CJjQ$=??+Q{6ahdce~m>kHDQ?B9fIhkv_?Q{{VveUf{H8+Zg(YusTrX?#S4i zjwO|v`H7xx3Ti9M{31FnVJ{{@1&pDw)g-n7)T5I_)ft-s!5{*axRgEh3Mn!l7l`x# zKyUtxd1nIWNWWp84p?fqrZ1tgU4(?S>MYQgM1oEMocv2~mXcQRT=B#%RTr6X1LCDR z)-@3OHxlr5f-q!S^fQTBQh|5nqYQJ3xf1@#cb>c@H8c_im}reGI(*wPx9g zVEjsQR6-$}kDiqgo2Y!}&Z83-t-?uRF8-i&gI%y9pSUrOBIb1)05EqRWrq;Tva;P- zGh!LpJW$2NTc)FB$sO1p#nZoxXLzzorJ(}KjwOb576RZ{!C+LbrEBJ(VhY`*s%AR8 zs0ggT5upOaGVy>349BPmi2#~oC%RGHB4x2|=MpVwlnoIIuMtk6kXd@x%bR;Xqb?NP zO-1;WJu;iDR8+C4RxoW{Jb(r&r44||148SzS)~}zdT%e1m}1ongtKQ60>FgNR%OAM z_6S<3SP!->n+3}pb2to`itN9ZAT1HqSgp^CMY%;6iw;N(7mK&IaY^N>=KZPe60QE~Dv{z#7{wEGd+zXwWeF7#KL@UxPTWwXtkt$Faax2vi)R zu1+Nlf$&4P2Jri#RT#wXI=41d=sCZED1)mvO3&F1E2g=x$C-X2pDANsj^MmlTX@8y zq$pvxZOrg9I>Q+b*mpRtC6vTNYHTcOu+h4KgHd@7EUNMrg2L(zbV6HrgGW;Qq!2<) z9kE!htA&gDhWVR_Wq~R!D}SkA9;8yNW2L&5=HRt0#uRuVt{gWZ-qR&3OO`4Wm-}!= zsI3UV7gCg`nWZqN;C+xPF)D{49I09`w|yYzot2P{H?2vW};S(7Vr3;ogL zB|y-NAUlXEmY>vMI#c}yUMXoV-yx)xDxu&W5_bR=EBKtMW_qXrqv7ToeaBEEH4G(D zN2G3T$e`A)%nDQ@JR?a7UE&zGd4@1FOCCqW56ccWenFTmNzavDYEaOL9?B!6yO(~X z&1FJpD4=cn@Jgk8;sUzVp==rojD!Z5$O>KzPrW`_Sj<>xQ=s9AhkBH{zK0MscbaI& z!wjX1b|?FnDmD;wH7+`cuoAZM2(r>BR)A_NL4_5J#Z1<|r7yOd3ctq$wkVDxSV%8J zPy`;P085OGQb7r=uAyWg3ayI+O=6{yCmC!jseQmaQBB1T7O~3sx|XrwR{sDDuKL?R zMW|*;#Rd2TGNEp6W+oC!LiH65yO@R>p9-K1kq7S>LmQR?x0rS2A%bDtFsuY-%|4&-)z6{i9ucHh*6mA zbrh%coaTULEXZn_!*ZZuzD_^f$}Dr~DUjDtA6b@pLYxFrX(`+uN(I2T^-g2kvV*Ir zbj(4Qa}(Jxste@lGHzGmY5BQ(ZNRX)mX%7G-W+d|BBl;i_QbWV(%~RUyK=EVTunM$ zV~yuTu?sCO(YMH9D7S2Gg(Cr~3!9?(8q65CFxD$egq8O0E9+0HU@=`Y@g>GvjjX{n z3ou3tM0A>j08+7X!+G+Q&2PEMbBHjw)zi*UIRCk>1sW$=UWa_A5?{ zjG{{|Scf|!ge+VTftLiwJ=JLaR}GX|AaOO+M&w^Jh*=ctFx7@)1=}os%b`lL8C6iW zI8&KNm>VIluf!gzFy90d1QZ&Fxh8ge7J-ffIRcio@P=Ihkt^w$0WV%M2qL6z!m2uiKYZetfvU(zt4657qm#NIEnIYwx+97Wy;m!w zj)ioK+J=DC0FVNU^DvsfV|0~L+l0(2kQ6!7vn*3OU~uMvhWp#}ox z%qS~BLdLXxgP?2H4t&J79T=Glc15~^c(>Tdj^N=9L?BpJGnu^Cu2xg^DGD%Z&%CW0 z=}PwCm1tcU4xpXN=Go!9kAvE%6`jUN^l)NtMcGVJEcS()jZ3lv^r>)O?k7Z2n!13S z)C#KZQ~7{(lrb-6+PK&9fCQ=~{&^Qmi1n?vf!i)*<5|K~3`Xb7SwS#LsIANeIhIh; zlZ1OC37UpMD$zyK<#Gt*gV13REm06CT}`2jXMv2;3KSkb;MEGvpJc&}P7p#xRhjXx zCS`|Ci+~N-Pp@iKgaO@WP^=LSb6H9V#~QKnrU2ad1?C7b9(vVFL9*{%SKw zD$j(r(t=;=R1XnRJ?1^Ha8EFcY_<)l{akiMBP&%CDsgKS0}xuS$oP3GDufFx^@jDr z(p5A$I9_fp8(mX}p%Nf-bU2J$MNtw}6@~-L4P1h)OKXm%du*nj>jPKZ3K*DK7S>c> zhEbA=Ou+vDUvoI6@u^K45tgdBa~J@M2eH5cCQ)Ao)v#`vb8F!5>RN0F0T1_iY@3k282^Y7`Fh)3)hekeInGT zd1=`#$TU=l&6N(}eZ~_Kwj&)qN-KMaf-pwAO`&2NRl^?nz@maRN-_ zmzb52js+Ts5m6Et>ccJ^qk2#*KTJur3yO>PDEz7cqlW-9b^j8irz%5djp(GMhs;WWfIb5qlrhdj9}BU||f<+@){}iMjICW0qCj zLBgx=nL_4Tr4LqhFGWKeyN+QmR9(T{u#h3S(PI0D7dW~$e}XkUz^9&WTp=v2!f4DE z)ERNLBJYe##F`GDPZ?d&)K^(|TF6^AZxm|@-8s1yusJ3Q})TuQZ&;@dtm`i^W(8lF}*clVKsMKWsmsc@u zDcWaJ(=m7gU!ugIQ?4aq1B8j!+|c-!u7W$VVoFjAna7F)p9<`|$*R5i$TE+yfkVNi95#UJJ|7{SqN>I&c& zad=e>fd%>_CzFT|kd`*)qFz48aUz2Sv34UOVXa-vkY&zrL?Z6NQ*|x16s^Y+6+6s0 zt58FQVY+cyQX*k?{$q|Hn_w4YN~4Ozp@qWwq$t~%lBOhiHyLm>L2}|sP)Ukl<(P7o z0?ppHRR}cf&-X6?b^t$!3y4tFevAU?Hej=N7pM+knuc^762qj;c^IOhMg7A*oxETnd;5JO-@Q7g;Np+mDXkUfq(RXSq+%xM6i+(ULYTT@K3V zg@6pYO`Kvec1#A$T~sx7ZMSX4D}$&2)6Y=OoJVryoM*FZbP<`Y(Me=r%kBy}Ku%|Y zh!=Syh_NBWSy4+>I&4Vs{@G<~RO&&r$ychqDTk5jm9id@$So=S!DRz_3Jp8@xrk%0 zBj*W#)W(Gz1LBc#3b>()Wh*w3N;^QJ%lo1mRu%FW zFB-asR*mWlBen!OEvu=|aEdo(UJ#63O}7-jyV1z;&nTExf@4u`|a#BSMF zEF&E8a}eBoOHfcFLDLW?V4$nG!gGYvm^NSk0Anf=;^XFnETPIkx+ulB?X?ot>8mA% z3SgT>%&@!$CCmX`tE+}VV@I08vig=bt^Q$bB3a$WL~#Tpe{Ew@Fi8wAvT<$(ZXtU_ zK!$g%N5)>oaU8Z;cB45*a7?sP9GIke1tvi()<*&pL)7O%}8)Ob*aN5#4&S=C#+9Nf7B z&8Bk?qyGRH+e8>%rVRMOKvi;>^s{;4`-E`h5SIarXCmw&P=r#txme+zB_OPB_~({f zXxdNMPt&q-TQETf`=)xIjYtXTP^0p9F z;s&9Jl|qyV8Pb4o>g>Z3CfBcwmoO(dnF=s-DVf_`%JOPirLaZ_5e1!>f7f#BO)5gE z+*Hz-G}yYA!Z7W`pqAyuO7#jLb{F>WBetT`%%QG7z_&|*g>DM-RbFU1A{eY5ip4}x za&VUVh|-}OQpyG(iB>68hHAv4STtX*CA@%(P02U2z;5jEen5pwB-rrx}b5S%;gJV(zG_@>~L(HdQ1* zwJxkd=#|#N!BKtp9+xbo``p+w6t3kqhr2Br&Bdu%gGsb*&J}*$!$7*2-(a?98;yiq z7Wx?L3?oIVtl0r};Wc%df-JWTWCdlFG)i1q417n(s8BMlp~+MVPZQ$YrU4gbxS4pO z?hOno4+)7(x|^_w-nE#vk(X*zHxY#%Wt3;hX6+2sAX-qmmA1k?kd1rgSB4bhu+xZWz@)wQ~?dac3BBR z zaz?mhjB@ua-NJq+X6Dke;5m+5D)hV@k)cZ$;$6*1l%q+w@L&ACuGd5V|ZFah%^@I(Cn*&i3v`(N!4l33HebX)nO&AlY7x8_@Q|*Vh$RcSbLBQhW4PRU77_4=`KZfFs z&VCb`X9y!Ls=#E&B7>6P6)tx(8XyD~av(&)u@!_E*i(JW4uZFYpzV9APA)4LNSp^tg)@7M`s1AkQ5EV*|-R>PYtL!mMO$~?!g|Z5r zwW(Hr)Dlu5a*-0)MqsS9RQoNIqCXfTN)T)cGF|EmBHo;?0b*uXY2XA4VI!_h6@2>> zc3atFV;K+)a!x@BYy3wMS!GHU93hXMNV*pWwGFi-M$+X!G*kkB5Z_YnWKV3k1#nda zc%N~LOV?~FVHs_&@g&KI31Sxpr7L4~Uo|MF55R`&>QR@{9Mz5L;v@ACtij|JFSHC* z02Zqp8Z%>c{{RT$R>kh%H^UR~pQ(F`g`z}^4wr^m({5c}IHRd-#JR3wieQ>ZWkDeU zFEtKTP-@j}%|VU@rpx2gGON>>duf7f>*l}svHp1dK|1yL|_snG#Q z{{VFnR^_1mSjus?Y;Me>fti&bF6H+mzD;v=FLNnDX$0hlMh+pIMj3IxBIL^!E{vQ- zrEJl=<{U-shiRfpu3L^%^MPRm#r=KGJhC|uZdh7|)sny7phY!u;~R==QTJMkTN}9X z9L9AH&2AAiVNe)^G7DkL$atLC1&7hn0GsEkr z)5s~Y`X$KGFIfNqDQNhW<$fcY(5hiQBTAHzwcSK2Ttyd&WGxLGBz9dJKKYcRf?TG) z=GV!;$`JfmKyVw1yxH`%qMmyz?N}BB(`=y<^rQvkNw9tVKq#(Rs z0gFWq?)i&)ZlKRL>xj5RT+5(!3u4p;x1?(inb6Kj7kA{X^x-xW1wtH`gs8>KzLX8q3W9fmx_J2`D}H$kb&?<`8BnaO zTn#^JmyQ1by1ua51huAC)CLA(jgb+|cfu=HY)S_xer1-_&R5qknk6m0O+=|tme!(@ zk$VdL%9RgQcNe5vjmyTrs|277o!oA^1A=A4OKX-I_6gy{ct)b*-I|i#SP;Qjn)}qr z4BIjksii=lQz1kuYE_Dhd;b8`cOo*WeXxN@vZDAym#s>m{fHkbR&9DESq5s9ET3_p zIC(BHE`1ZX%v48PnI{R#<*O<#l~)I=Rfvg;Zqq9Ij-Um?V$_LVRJ1!9)D&+mFC&-_mENiX0t1B`R{#?U zXo0w>)Cz8vfEcS7Z2-pH!$^vtJ0r!loo*Epk0YW3mBh54y3rOAYQBsTt5rvxvD9jW zSH-~54mS+p8OjGdW;i_|LpmVb)kJlQlp_eov1;p3yEg#O>K)Td8uKwg7;jtqNV-_n zx(|jgI$Ezd;0VP{ju5e|sAFp7)zw70B{7Ljur6UX0?ffpVcs!>RlScPrX~tyg3y?X zwvts}%o>VO^mX?$tl43u-hx!-*jcHlJj6=Q*xg}vmwSW-i7y4vVe8aS;OKSdN z(h!3xgaoLe;!&#LkJ3_=UM^pRvLRMYKxn0|7{;wCa$5FM*<&hmur6m8=sbr^#0^5N zadsnQCLM}qewQg0hh`Hcq{uf62MM95BJ1Wg2^)ssI3l?pZs1~75lYzBWA*v^Lm^U6oFRDpruC84;wuXa3T|{5>uqSSldG5hDU4m7uJ^c5R0wP=e#TO9c|z zi`tr$nw7R}`7Vpq#Iq|WW4M4YsdUwDp$ahgib8d!GZa+056Gd3mJ*d)rI>ES72A!* z%SO;~DkyUSY*b;Tmu?O45~G^2TXAcvSdATJNL>P%s(+qTS5Lvi7Fy?FP&8&z3TOh$&rF%Y?`d?dlp@ zKyG40CL(SUlCrPa3ep||oPQC(D#bpxD*pf#V%26-fYi`;sdXVx8x**M`=<6EGR_cS z>n)SXGP40&FdRIXg0!{@`H$+NsRZp~w`^!y*DTk;S8HJwMZg-v>L6A{Mxm4AKGZ(C<}&5DD5gKr zz60tY0D@7$9NbK!T^J;*P@Ra1G-ZxdZY8CDO;_K{L0}K$U@XJPXq&)bbEpAQwOuC= zS}bZ)@f^EVVF??yIx<$i2i6;frvgA;iz}GnqPin96B}G=3;on#Q|cots8$MCHr4Sh zkn7dKY2bYaxsR6@Z+$kABa3KlEbVGLv71c$(WA!$mB~Zpq!YJwvt8JA( zEInFFTTHlz6ChYt1Lh7v1!)>TB0Lk9P}vo)Nb7ga z(Csyz(qbmsr*l0W9!@R9kWG75w#$oywhXF(<}%DO;@Z0NC*M-1V3(B3@@f zYb=t9ika8c!c&-A>L5UNmJlKQIMMa8DEWv}T`7<|sM$=m^05a=RmC!{uhLMg^<1Q& zO73P0nttKF5YSBTf+cY7;D|9C>y}Wfj-y9fgbrBkQ4DRyV>42XZ=rFrb(JoLKXz@f zrD{VhUSg7ssS50K0SACKDU@-DOhHboL>D-PLSh3|^_YRO32T%~NB+RPID=}?1EDCI z!;<=C>;N*qE?ikv^v79Em@{prp~AM7t?2FsndLzZLzTcpg`o1~D^L?3jAy+&{X;hm zl-vIR-y+FuyfG_<_9LI@k4KT(KO-$!ND6Sc41`lq3_*@^R;ng$Iasqsd_s*2a}xGN zET)xV?PdP}uRe4|XA_MT)B};fA$;4(xI{w(^$dgJi`_u(SkT6@RSqfz-fdz9TtLS+ z!5q*iDhRT(dki5{ic-6UMkyN3{9y$IT&H*A%yy!g3_uMRO+Y4PC)A|W#xl(auTs}J zTtdR!ZVusY2o?}DYR1lDasXst@>(sk^AL<-Gb0x+*J@Yw2jNoAFx*+`Wfc5|Rv=dl zWtebF#N~u5DmF8=SPv{jL09y|3uy=1GKq3BrE5azm*p(1-4P@v7r4t|p5gBpCqs!r z&<{zAoAgD-&ZXkzseHC$+)9fD98FwXIyLhXnR;F-53jut8A3JJ_XI{Y*wmy{&#;a^ z*(vc;I%+>crj7?tmklr+Rey^ZVfxp5np(WED98GM+s%>8#gz_tgJPiqzF1Zclub=a zI$3OL)m~YjjY8P1Ko>~jh4vd)Hh;lGL-YF~Tn>-lcaP#Y~ddluj*L zs6~v_t#butgA_v&lUHOC>*0c>r+Y9r{s7hpkI{5icPKO>5Uwe@j3ffX7|g*DRSbPQ zg_RA2!3Z3r{9wQ~`phKsJB3;~D9K7vp+oLn9DyB*m7#M03~=1U2-#EW0Xxbu7X-2# z#TMHu-g>yOSrc_%5e%rRJPk{<#Nw_jDRUbL;D>IatX*TqSdddGZiR?C=2S!tLkqf( zFoA2q3my+nA&TUc8pIK`1+*SSTGC(~j9AjKu@bJY5O$!B_Th1vsi@j1v(gI;EwfUqhlI=JGY4p7K-3#qcp$xK z1Tt#3e8h$+l!Vg^CJW?Lw@^QOZ@AP-QN}JUO2EsQ zc?^<)WN>^&uF`ZIs1}r%%{W1$w3}Uy>g3in}gUXs+cAqp-U7^&UG;SGY%P zBT;{GS>$bU^Q}Hr9k3EScPAp{GyGFMXUwK+lvp(%$pJ+_TjN^>1qwvFmp3btxiSZA4y zQvi#|qb+shI59&m<~h!dOCk*`OeqAkSzzBHQ0q%8$krgPLArM?w1~KZ4I(&3U0riw zdSHV_*wIM^KPGA+fcl51E69CLCV`L0g=DK`4Wbk!1!lDeY^z*elZmG5m%o@kA`24p zD49maUHrgL7lZqVF${oKgrBP%l!iuADBjDU<9M1tq+-joc;gd$f*@8UTef1>bC0<} zO>lCqBK$C641$l<$z#K#)LUNT7j@5D0j!rJCjSc!p@_G13T@FwI96K+V*d zy@K$}8JIOylG2>YE{Y?Fc>=Lw_ZZ|M{)5SJm$71bcLJ)dW$PFic*b|f(0duulv}1X z^0qfBQp+ExTm}>q5P(-@ja*YVNj9VL2Bj^7+d3q4HJ~Cb)J=IYZYUfGC9l|rq2w~d zQA%r=)AkUZ3rCV+uB5efn}#m)C|JP@l?+g0>Uy=rydwf!b%L#aSdl})wMm~_yWos3 zkEPAB9rQr45c8^ts9z2x7Fk*V>eq49BhtuJqv~Z-D{vWw7D}UPW%fCLm}UgqSo{b0 z>rR))EM2RoiPETp;ws6AS8PRks5qJH8)XrZ#Z#zMQ*(&>sLOyg5lVt72B##&{{ZB8 zDATUv_I#1j>v*VResfX+N+1e}?XKeBA{6C<+Cut)g{?OZCh0yMFbptp-ZjKrUDFDn zI1=$tA!y<-uKx2UT6qJM5 zugpW{75UgWS_Q)-1C$7MzofQP5;VZeexHD z<`jhs*Z1Xj0}U+Yj;|62Q!L)UswL7tfxS~sD&G$0XS9jtlPeTU^v*sI{Duifnh9J_ zQ9cohUg_dttv+J?^(X1d#e0gQwOl9?IA>BSGS?f@tu)vCqR&@drZQk)^^iy1_q6)f znSAH(ZC)K1wb=60VUuC!kypWC+--UfW(H;4gt@rbAu=iQZ`GgYhc~cU*%xY65AAO> z8MVTd9OvFZkl!f$U?MFyC4DGl3S z79_2@H2hcj(eDZ;n8;-|`u4m55fNvxP(%2K;md><{7!ptA&k)IYSX(q|B{ftXjgu- zwmK*=t;hW@i-)JtVx;0NGoDc~R~wOkreH%!?K}aEZU*e!L^NG^!M|00>M&U%daJ;e zdtdqwM{>pEvY=O*hJB4Ea?4!bopHxguSRJDADBn5UuBtgFT^-XZ}rwMY|aoy=SlZ{ zInyc}I@qYpCTp06y4xO8&-pV-qXTO;q~~l4jR;c2>n?od+IG3wC7gz3ZtU#ys2O{4 zf4QJHrpYo9$-+H#XH$L$x@vYMYHNveO_SMo3Iw}B0du@SYe-!ax72g7rlQc*VJAed z&xWP^X<0#%rAf;ipzy`qjpH};T?{5+uuQH%uu0O7+Ih#oO_xj3MHKcwq|5)9E|;Lo z|27i*e@Pdi|EJ;k5_D0hPKsxF#7z>|*OKx4`^Z(tWog;%GuyC?20hjEkX?DT(Tvv$ zmi-2HHEp>1wa|ZnSWYps>nk$L{{eK7UQ*N#WsglOP(HtcT%J)S?&#Lgt8|1r_fj5B z*w%Geu$TNj7;z;PZEs(^EE8}hT%Sqg{tu9zu`2RdpQ1%wHa(54-y`Q3_j`c7f@d|n7a)$NN!pT!GV^%xk9Qdun?XgK_P0%(WU zG3wL~LH$UsO2gHIpZmY8{RiNWU`W!ocw|RXSf{<(7Y}!s2?SVtE?mXhdIo4m!7s6% zl~%{w%^M}G`OOLYUa&?n7Jg5s{!rE5uz|K4=fYxmIUlHPop*Qw1IL|M4+#y|N3R?{ z%~~7kOX=oPPxdg6a4hoW{gZPaMQ3&LXWdzdNQ>TtmkOn-dS-JI0D! z%~yDx>LKvFGW;-$K%3&D5Zb`=8T4=CfGX-YM)!x!*y>9okEl=L#$^*;-{M-$mqB22PTBF zXH0Uzlj};q72!<02|^gM&vhTEZ1WF|>Qn-}=&z}9}_Zg}7z%Sjog*bihB}DNH#zhm2+#k{*>tKi8 znfsKOp2K!3#0FDN=!)XM05294)%=d8PRNrgGE^jQsB$@s5X8^ow2#cNe!<>^G3}J;^0!hNnBjIY7S>D zlmEO-x4Hq*W^Xfk6RwADpQvtI{m9Vd8@*D!pxDQCex)GrEZu7u@T{5mWJBmuSaAZ% z-m2mEch<^Kag;h$!hGki!VS5{0^T~Q(5 zR*#1ENLu=(H2P}PvBt$nKF-cU$)*GJ@Agxl335tKi;)PkL}TR=VXHsf%a*Z0(oJRx ztn)z^`vuI$J!S0hM!O<7Zk@X9wT&(kyVwKbQaQA#!Hrf(EfsWc(ZSr;Xh=bTpiJGOKO1R2R+l1Xvh@Tyj<~O%)>tSlV6;Rm{ zE3sGflg0kJK+U_J&~nX`f{|QqvPf(H$2%8Az%))9edT!Xb6G}L^v^B6-t52nDh-{5 z>lTnuhXbvbdg6Nf?CI6lCqZ+6(-BnBiod6EOQrX z3%cKpECN9c_!&wL`&(>N2w;A7D!(5Z$p%~W-Ng8iT6UO8$_i`pHDMPk#g-ndzq25C*u6q=eGipJ6X6q^j) z#3U*;bd2y+wYS3Y_l02ZaPYTtzJ*1FJzCI;{fc?YXgv+xZSqP54GYH)IX^&8h94_+ z_u%@OZR0@Bu1|nhRfpx=T$jYO^fEov;W5u#6(1SXtgj9BeD3Ai{v52DNGaHhYAqom zh=7*%91mAcjN~Cpk6op_JX1qiVizKKh4F04taaCEKtAWsBfBqqWOx?Oxm>_rVQm`? zS#PUK@wbWcy)@SEguIj;%>kzNQcEcFX`^GluOn-2L5;c9pHsU^bQKo@rR+*j73`@R zV`va(q2Ba5!H<!cU5(w|DALtLO`nWHh@n-BapBbaQ){?_2R)S|ofWQ3ci5 zGNP;_+O1bxNfq+U?#UpU2New;2;y*uMUrCMfoy8lx? z`Ff{C`nKgtuEbYCeT!SgzSoq>6MC4a?#i%5N>GZD*5c{BtOEhGv&8E3#q8Y-y+{Dh zp_e?xJe=ZJE2{XYh|2K9jk&_pn1>FaIruc=@A9W)DEV+|`@}G7ztO~X@LimYnCGfn zy7#t&0ksQNR07H|CPy&I-8dV~bAe{RMA zi+#2#H{c~R5_61snp^O%F=-dT0WS>ltse#Ixbn-R2%=`*DMCKT(DkiSkPuXH+Rbb@1ik9~2ifU7mhp{0rS7k4^m z|IlU6_`CYEyg@NhdoYsOLzc<6fLgqG+h&$O-T{wKUweswcyRH^U1dby&w#@p8;)%& z-p7eHHZ2y&YE~Yao_D=RZBj<}<%G_U#O=gc4ic}>K_`kF#{+vqMby!m9(ttJ4390S zW15_q^>g7L2*vvF*B~t&S#5)>n*1hbG>uCsI|m)iQ!oCB3pZYbkEI&U2RlA+yh~~K z_|g1%xOTNKW6^tAcTs1&HR_+(4qtD;PpVU6W->eK=*NPAWMx3GeL<0OR=o`K zBqwZ|67-iIu8ij`l!2yWxb@AO{$wY3@Q*Rd$>@xinXKrIHW6`4hQ+CGRQQ{j{YoVh zJWdB6Ce6x_DUKK1y8Vk)B>k7@N(Nudt)6a-{?668kw<4E$2M}bR0VtxJ^){{15=U- zc3FD=$DP+X)VQjEVW;JmHyp~2cHmBAdBcVVWbOCmVx~HTA(wJ3eOS3+8p|;J#mv_7 z5w)*Kppb&rz3{@Jo}I_rB-%~usMejev;P1hPCNC+RkEfNYuaoUbL<}mlE97E>|UX2 z0~1d+#qv*5Kj`-t&owIR5lL7BK3S_)xt@V8FEfDJCJT?X@ipbo;V&TFIDt%IYgvb=4y*nv*_u>rk%K zPVYYe!B|)@MRe81+X5l^LN(~)AJ~h%H{ET$1(L^|w~i~l{O`;m54A>n&C(q$r0X)x zEwnk1m{;D(YVAb{?3^>_mPMJL;^+ylFa|$H3DONn`^8GjOKmR2z{CbEyB&OJ>T^w= zuM`~X{VjXSai-I@c}usIxe*@o(Ezz*j^P!)o7DB1Zx;JomvIQ21<0U#8?0H)Iv)K( zW>D85s77mf;-6GoHoy)~vGF_TGKx(T;o~sV7i-4;T%s!j_i5aV#n^(ruiwhz==1dV zR8OUvppT%YM+rXW@KI}YdR!jl^mF$5Khg1<4Sb#f4z9tmmvgMA40=2*RGR$lZT{4o z1ke3GTmVU`uaft(QZh|v&I3of0-nB*VLBj~AX`X%JOq^@a|>7*3NbJ)TWl>E-)Fju z6YRYHr&d#QCXvi~p>YP7z5@d$-%qVIPQ6@g$-J*pMicDSK4pzuJI~A;Fun+*vWlVp zV?1HeiMhoLlbD$DYn$h%^KdpQbWX-P7$)5gyj&51@0f0k-ln&9eZHFQwAj^FvDJ!t zysmw!P%5=OAr;_Jd6DNX4HcUH#9K6GWgbt3D*K4CdRqG#8%3*vW#E*~dM{#E@i~%f zI}i3~O6uFH!KPl=e*k2LH0I!yDie#OPDQvVLjlaCs=-?-JyDRzLv3;Xv9&@B1J`T} zrkLG$MEgbF$Pzp`+f$;$j?FB*^rbyb#L6F+I&WVw?UVYBu!_=;>xMx-xOBE&s+HOG zY_cXb;SV?Ogkr>XMQs~vo71XO^G*k z^9!3>XZa^lJ$?duDgWb6m#*u`9lc7;y9vwTd@S=!n(drRtGUOD^d($Z(%r-KE^iIYyG2C-L5Yd|Dcub8~w78<=2eLnW$LA z;DH442VwqIXQ~C%(fy+-wWaNrC-UKw{4poj9ojZf`BZB%F#<$yDi<`i5wtu|q)kWj zoRav81?M_gqFV`@5Nj!?y7QuE<3^yA>7dTIUbzu3QC72{&_UQBo*i#cT!5y5tK&uX zJ>ub04<{iHKD}i- z^#h@kRIoz#(ob7nwTS4u+pEjcC4Pt>}usA%ja_Glmb(|@>|D5MQx=k!rbnAhyhDKm)Y$7L&Ud!_hto7k8)Z>2D#j3 zPUbZwBBgTd*p=UY<2(jyAlAYInVM zX2z@j(l)lYn3a}AW-wvKx0NQi=OX?=y~BL=0)Peac7+jFzu?U)Uw3uMQ$mG%KOI&k zowIfiE6sI8oX6{QsVt^hJw-d5wodE+@>k5gT|*!_=f}FXt$U|jFS&VR5;*G|4o2T* zQaR$N^nQPs1a#e?y2I4BagkHXww?we*oxHeI=s7AY&l0}>B%2ul!#;F=} z51Wiu^qRP}T2t<~rv&n7?KW1K++*tX>M4Y^wRXKgG`3|NGGw6u#dX7DaW>@>O{67f zlFF%JMDe1w1?YBm?r-5?<$Q@kw1a8%mm#hQPTUTpetnngnt+g6dJ>~nyP{7I{NTfG zA5KaKear3qPTl_~%>OsC`(KBd>i-wnv9w+)%m+XJ-yTtI7IV7mAR)TxPvuq7kU$?j zEoo7dXWYjZC$; zIPMl@;aVC2`g9T@$D=FttCg~zX-&=*RCAsZs$tF@lcUCTJod1+9fj&4A>Nf_FioyY zOY_c{11F19iY_Q=u0n3^ZR6|tZK<%q1j0A-$-SM}4C-xQ=A91I=A#x{t7EL6wVC3s9Z^H$~OpoBBZZ1t53Q$y?z$Q0?QZcZ->Z^`KuQZMF4!q!daB zU$dfoL@F4?WI|LvfYZs z2O@@3UHPAQkTP1+J>KtQTKI&1Nj=~WzA&t_2Yo-ZnVv>jb^w_5_1AWLZ@@F=qYjl~ z(wx2xYGgws0o3>Zn6tiJV2sft5-v{@CoVuox|a|E&3m8M@fS`)XTbPB^dB$#?_M2) zyV?c~a)k_7A8eg33J`TGZ3k;H5_7slO}+H<1b#7$F!(#1mF49Xe?b1aRfD1bus!~L z{WlwMjgbf&^okie*s#-04p+XKbpqPH^R9ha$c?5ei}i?&u1tY4tb*D_^woV^AAEMd zXsUBG(#GizE#D@GdJ!==U&i~{DY@}u4n+A#AJ;15H86d9bIHY)U6;H-)MEf&k4!G! z%X841u8tPfsc5fRJ}X9;NgM214GN4tv=nmsBozrg)#`nAiuA8~p_a!g-%j+M}z8eUNt(%UXGKvsM8 zbwPwAio+DmJ?{Zi$#;8X>72dD<@Y`RnMeaZ=>PiNLb=rj6cSELs!<3bTB?VBqUyK8 zCj&C7a(-krZtbL0P(BFV5t`Ohr(w|%`ZlWzyG4_<0xn=JQI}$ujG;-%Z4gh8aT3e) zvJ}MVw(`W%lQfhGPNG#`X&v2H=1;gSRvX^$1Y2FAR+8Psayq^zaBy0!q3OGURoEOO z%0kNNfc1u3&HJyq^M5wO<<5)>K#5v>r+5!)QTWY1e2oiT(LdCyu zuT6&Qr5Z|=I{MmrgUtHjY9o7R+nIZy!L3XCo_nQI_a+e}hT zEZ0g6>OC_rOA5K>Cd{I_YN$rhXTze~Yixu7W%8`;d}je5li!{$4&C}o3RQMT%v=XY zAO|F*qdp(`I5iqs^AuoxLcPr-19z#R66_jDDeK`8Xe=!k37W_u5@Qm&iQMY9!LwoZhw^??ya6`x|ZP z`v{ABvi^@m@HWiBL&o9N@;I}}q<|88SNCNlE5QSP)-7@ZT-*bo^*6`C;aaJ&88s=~ zjqsc8${C&S+Q-b4Gs_FlT-&ck9ERNEgOuuB-T){qRCq2Jz|ofX7UmIk?$uYfUi0^! zyla|=W>Pm^Iy+;**KqxbG^D!RYXt|lPhQahHV@Cor9!*(sRV=xH-*1=Wr z%s-GaIx|eiQ`rr0JIcjY!P4?eIy%Z3WO3TK{j%56LJ)70nt z#)X%u4XJFWB3dL>8nhi6E@^+|ny2}|x#|5kM2j@Fl|MYZ#N^{ig2L|J-@J*a3$j?V zyrpZ~Q=TtU2Jm2H8G@E$$xk3urZjxvnSgBpXrMx|ZS7}>ydSdUFtE`vH?ye58!^Yv z7VJTFPpsnwhIYAWP2$!szFk|J@T`)Ol^K%$uy<`1dN9EL?XWREhI^{Y*cMm_M>y;f}FeT<{!oIG!%;;Ha!k5-$cNM#T(oP}a#| ztjA1$fIpcmQ2dQkTJVmOM)JX!^vXadMCeQ^ZC#OpOM2AXaqIr*c5y|esGc{&L!(no zD}mfvQI>&?M=XMhw2UI33vH8xX8i0Q!Y>R)y|XvMOU5#W>`D8sZ_?SWA@0N_vI98E z&BRWttqW4U*;8-MD*962l+okrZH3SQ{P5_|%CIJ$`&H=e&sp4g_F+GW{@GdO8sTorpb4$KquhkNPLqr7&+6d*3$)4RQVxlGypEtm zZJ&eZe4iY!HkyQ3NDYum1||mGgx#geXFeT@tdcVV(c|B2PEX2p@^{m*b5Pa8)=v_a zkdl-)oQcY7Pz$V0#V^Z%F>a?Zz9_Le0h7z=#xWtoKn_0yz{nn zcSxwq!pRXtf=L|?gdZ0(P~!$;j7MJpK#2evAq>%xg^fhY_?wyAo@swwM&XFxjFjI{ z-6~vvgahWi%f9l5CEa!c^^h^Lw(jE_9cyV9yST1vyh)t4BNbSvKk%?Inw>o{$u+=k zs`Iw>bif9Rj_8wDy(F9swY&X$aWC=v64hl9tuVnjoUS_m4T4pbDb#+1<9vt%25fV0 z8}J|~Tgz?j5SIHsN1e=|z+C3<^0&U?zWAuB-I#nRlkg%`to?Iev#sNyb;Ota2d>UM zqiD?qWzd2SVZVTt)E(9P6lFMC-6K%Gq>t2#b@wj}<<>E+%WTjIE$)GefZ;x_O48EK zF&^WsneH!$YCUIq5(XY}@=>UVuTkF4**69ymwR`+SFfZJn9%u)cC7(R?0o1snq0t4=)>|`&U;xnl?g+|d?NGseh^p=;`LDE zUL3mIqqdQ$vO??2BC9~C4qsZrstveO!t^mIJBXErhF%y-h#5Ej%O2iK%HBg-XePsK zx~Y$S6;_;TCSVb%ficBCz}cH&)d)5wMGd0lDn($G1Sl&WF2w3KC#R^imT-o5jp|N$ zZH0!FL&pBo8!L=5c1s*y6n+Z zYMBNEk$v7SXk%1p;5V6(_Rx$Yhk`D9@$|j?kbK(dm_pJEX~Brc;-4b^8BTb^LUq)W zy{QdmX7>{6>uj`jy}sUn&T z7Vc!L;KpRR1)ecw*}$90xXiid23}`%?<)=bBg%bFw;-}b_ke+ByvH?w0V14Qnia(x zhI-gOY|h%$K1K4k6e{bP=PY(f13<1L<9Oxe?=SLau{<^pr}I)|yQ|H4ruk-s0H|3YZe*ToVn*M%_(lZ1ux_yxJUR$)k{2X;j#`X)lHIa+DdQ zoC-tW9?2GR+vDWxHm$9b@}n()1G7x@NWw&5h`0PxOn07d62f%I`X&`Vg<<_$W++l&d$wf%n}n z9MP8pseP93=;9DxUpR}Da#mZm=11d4CWPF?+GO7yMhj-_N*C+0F=}Mt^eR+M5Ko~% zRckIGGD8+5v!X~RyboWZUg%69RHhiMX3Q5~zx@)e>|*AnrK}oBkl}D}h%gQBN08rc+c3Cp- zM!Yu&PssA_T4m{^JKUlkhV%T#b6qhh>$`7*@&xWYzrylN zf{>J}*2wPlz6PxkKlYhMgW#N?H;xRT{mm`nJh5<{8W=Fr%Wj)@NMr? zpZUMScbN&2aK}(sB|Gbv4yw@)r@CM&k8a0?dJ*J*(@;!|`g z&n^8j9kQf*Y~2}q5aw{RI*G)nTe(af)?b%@q*$G<&KSRfJFG5}CsNAY1GxdKK#3gy z%njp8vi~H!VsJRNDhYVpitR?oywdNH9%mw*qu0pLDB!_Dp3{lP1xnYE7Ch(#S>)+! zH%S4>?&(zZAIIs}RU+>E9eGwLYaO4SpN(J!(+}F#9kIpEmTAhD!}0q7U$OuF8291DyHSic#D%;!J^9NaPV*HZ?oB2p|*YApW5) z& - - - - - - \ No newline at end of file diff --git a/wear/build.gradle.kts b/wear/build.gradle.kts index b8ca7edda..9725e5396 100644 --- a/wear/build.gradle.kts +++ b/wear/build.gradle.kts @@ -1,6 +1,7 @@ plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) + alias(libs.plugins.compose.compiler) } android { @@ -39,9 +40,7 @@ android { buildFeatures { compose = true } - composeOptions { - kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get() - } + packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" From a5c2337719bbbba2896232a28eb71b2e38748b8b Mon Sep 17 00:00:00 2001 From: Chiara Chiappini Date: Fri, 6 Sep 2024 14:12:10 +0100 Subject: [PATCH 225/463] Adds code for showing Scaffold and Position Indicator --- .../example/wear/snippets/rotary/Rotary.kt | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt b/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt index 4668c7fec..a6115816f 100644 --- a/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt +++ b/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt @@ -242,6 +242,20 @@ fun SnapScrollableScreen() { // [END android_wear_rotary_input_snap_fling] } +@Composable +fun PositionScrollIndicator(){ + // [START android_wear_rotary_position_indicator] + val listState = rememberScalingLazyListState() + Scaffold( + positionIndicator = { + PositionIndicator(scalingLazyListState = listState) + } + ) { + // ... + } + // [END android_wear_rotary_position_indicator] +} + @WearPreviewDevices @WearPreviewFontScales @Composable @@ -262,3 +276,10 @@ fun ScrollableScreenPreview() { fun SnapScrollableScreenPreview() { SnapScrollableScreen() } + +@WearPreviewDevices +@WearPreviewFontScales +@Composable +fun PositionScrollIndicatorPreview() { + PositionScrollIndicator() +} From 6ea91d123db3e094b82c3c8b6245e75114dfed60 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Mon, 9 Sep 2024 15:50:05 +0100 Subject: [PATCH 226/463] Restore missing snippets (#334) --- .../PictureInPictureSnippets.kt | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt index 39cf2d229..02d65d57c 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt @@ -36,6 +36,7 @@ import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.toAndroidRectF @@ -346,3 +347,60 @@ fun PiPBuilderAddRemoteActions( Log.i(PIP_TAG, "API does not support PiP") } } + +@Composable +fun PipListenerPreAPI12(shouldEnterPipMode: Boolean) { + // [START android_compose_pip_pre12_listener] + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && + Build.VERSION.SDK_INT < Build.VERSION_CODES.S + ) { + val context = LocalContext.current + DisposableEffect(context) { + val onUserLeaveBehavior: () -> Unit = { + context.findActivity() + .enterPictureInPictureMode(PictureInPictureParams.Builder().build()) + } + context.findActivity().addOnUserLeaveHintListener( + onUserLeaveBehavior + ) + onDispose { + context.findActivity().removeOnUserLeaveHintListener( + onUserLeaveBehavior + ) + } + } + } else { + Log.i("PiP info", "API does not support PiP") + } + // [END android_compose_pip_pre12_listener] +} + +@Composable +fun EnterPiPPre12(shouldEnterPipMode: Boolean) { + // [START android_compose_pip_pre12_should_enter_pip] + val currentShouldEnterPipMode by rememberUpdatedState(newValue = shouldEnterPipMode) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && + Build.VERSION.SDK_INT < Build.VERSION_CODES.S + ) { + val context = LocalContext.current + DisposableEffect(context) { + val onUserLeaveBehavior: () -> Unit = { + if (currentShouldEnterPipMode) { + context.findActivity() + .enterPictureInPictureMode(PictureInPictureParams.Builder().build()) + } + } + context.findActivity().addOnUserLeaveHintListener( + onUserLeaveBehavior + ) + onDispose { + context.findActivity().removeOnUserLeaveHintListener( + onUserLeaveBehavior + ) + } + } + } else { + Log.i("PiP info", "API does not support PiP") + } + // [END android_compose_pip_pre12_should_enter_pip] +} From 4a1781d17dc553834fa0732cc1371fcfbe13d2f9 Mon Sep 17 00:00:00 2001 From: dmail Date: Tue, 10 Sep 2024 16:24:01 -0700 Subject: [PATCH 227/463] First (pilot) commit for getting this phase of the snippets in. Adds the two snippets that were created for: https://developer.android.com/quick-guides/content/auto-format-phone-number?hl=en --- .../compose/snippets/text/TextSnippets.kt | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index 57e521cf3..db52f7b1a 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -52,6 +52,7 @@ import androidx.compose.ui.graphics.Color.Companion.Cyan import androidx.compose.ui.graphics.Shadow import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.LinkAnnotation import androidx.compose.ui.text.ParagraphStyle import androidx.compose.ui.text.PlatformTextStyle @@ -64,7 +65,10 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.OffsetMapping import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.input.TransformedText +import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.text.style.Hyphens import androidx.compose.ui.text.style.LineBreak import androidx.compose.ui.text.style.LineHeightStyle @@ -765,6 +769,73 @@ fun BasicMarqueeSample() { } // [END android_compose_text_marquee] +// [START android_compose_text_auto_format_phone-number_textfieldconfig] +@Composable +fun PhoneNumber() { + var phoneNumber by rememberSaveable { mutableStateOf("") } + val numericRegex = Regex("[^0-9]") + TextField( + value = phoneNumber, + onValueChange = { + // Remove non-numeric characters. + val stripped = numericRegex.replace(it, "") + phoneNumber = if (stripped.length >= 10) { + stripped.substring(0..9) + } else { + stripped + } + }, + label = { Text("Enter Phone Number") }, + visualTransformation = NanpVisualTransformation(), + keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number) + ) +} +// [END android_compose_text_auto_format_phone-number_textfieldconfig] + +// [START android_compose_text_auto_format_phone-number_transformtext] +class NanpVisualTransformation() : VisualTransformation { + + override fun filter(text: AnnotatedString): TransformedText { + val trimmed = if (text.text.length >= 10) text.text.substring(0..9) else text.text + + var out = if (trimmed.isNotEmpty()) "(" else "" + + for (i in trimmed.indices) { + if (i == 3) out += ") " + if (i == 6) out += "-" + out += trimmed[i] + } + return TransformedText(AnnotatedString(out), phoneNumberOffsetTranslator) + } + + private val phoneNumberOffsetTranslator = object : OffsetMapping { + + override fun originalToTransformed(offset: Int): Int = + when (offset) { + 0 -> offset + // Add 1 for opening parenthesis. + in 1..3 -> offset + 1 + // Add 3 for both parentheses and a space. + in 4..6 -> offset + 3 + // Add 4 for both parentheses, space, and hyphen. + else -> offset + 4 + } + + override fun transformedToOriginal(offset: Int): Int = + when (offset) { + 0 -> offset + // Subtract 1 for opening parenthesis. + in 1..5 -> offset - 1 + // Subtract 3 for both parentheses and a space. + in 6..10 -> offset - 3 + // Subtract 4 for both parentheses, space, and hyphen. + else -> offset - 4 + } + + } +} +// [START android_compose_text_auto_format_phone-number_transformtext] + private val firaSansFamily = FontFamily() val LightBlue = Color(0xFF0066FF) From 05ef28736e4dcbec458e40672948e48e52b0b3f4 Mon Sep 17 00:00:00 2001 From: dmail Date: Tue, 10 Sep 2024 16:26:13 -0700 Subject: [PATCH 228/463] First (pilot) commit for getting this phase of the snippets in. Adds the two snippets that were created for: https://developer.android.com/quick-guides/content/auto-format-phone-number?hl=en --- .../main/java/com/example/compose/snippets/text/TextSnippets.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index db52f7b1a..fcd87eaa4 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -834,7 +834,7 @@ class NanpVisualTransformation() : VisualTransformation { } } -// [START android_compose_text_auto_format_phone-number_transformtext] +// [END android_compose_text_auto_format_phone_number_transformtext] private val firaSansFamily = FontFamily() From ce43e3871a7239b105fb199431d2c85dd5bb42c8 Mon Sep 17 00:00:00 2001 From: thedmail Date: Tue, 10 Sep 2024 23:28:08 +0000 Subject: [PATCH 229/463] Apply Spotless --- .../java/com/example/compose/snippets/text/TextSnippets.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index fcd87eaa4..7a1a859d9 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -812,7 +812,7 @@ class NanpVisualTransformation() : VisualTransformation { override fun originalToTransformed(offset: Int): Int = when (offset) { - 0 -> offset + 0 -> offset // Add 1 for opening parenthesis. in 1..3 -> offset + 1 // Add 3 for both parentheses and a space. @@ -831,7 +831,6 @@ class NanpVisualTransformation() : VisualTransformation { // Subtract 4 for both parentheses, space, and hyphen. else -> offset - 4 } - } } // [END android_compose_text_auto_format_phone_number_transformtext] From cc8ac2cd91d3e2833d3750f40f216edd97f5072a Mon Sep 17 00:00:00 2001 From: dmail Date: Tue, 10 Sep 2024 16:45:45 -0700 Subject: [PATCH 230/463] First (pilot) commit for getting this phase of the snippets in. Adds the two snippets that were created for: https://developer.android.com/quick-guides/content/auto-format-phone-number?hl=en --- .../java/com/example/compose/snippets/text/TextSnippets.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index fcd87eaa4..3b718eaf4 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -769,7 +769,7 @@ fun BasicMarqueeSample() { } // [END android_compose_text_marquee] -// [START android_compose_text_auto_format_phone-number_textfieldconfig] +// [START android_compose_text_auto_format_phone_number_textfieldconfig] @Composable fun PhoneNumber() { var phoneNumber by rememberSaveable { mutableStateOf("") } @@ -790,7 +790,7 @@ fun PhoneNumber() { keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number) ) } -// [END android_compose_text_auto_format_phone-number_textfieldconfig] +// [END android_compose_text_auto_format_phone_number_textfieldconfig] // [START android_compose_text_auto_format_phone-number_transformtext] class NanpVisualTransformation() : VisualTransformation { @@ -834,7 +834,7 @@ class NanpVisualTransformation() : VisualTransformation { } } -// [END android_compose_text_auto_format_phone_number_transformtext] +// [END android_compose_text_auto_format_phone-number_transformtext] private val firaSansFamily = FontFamily() From 8f480c1cd6a3d78defe527d1f9660d6e96657194 Mon Sep 17 00:00:00 2001 From: dmail Date: Tue, 10 Sep 2024 16:50:39 -0700 Subject: [PATCH 231/463] First (pilot) commit for getting this phase of the snippets in. Adds the two snippets that were created for: https://developer.android.com/quick-guides/content/auto-format-phone-number?hl=en --- .../main/java/com/example/compose/snippets/text/TextSnippets.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index 6ea1f5b80..d65a56df9 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -833,7 +833,7 @@ class NanpVisualTransformation() : VisualTransformation { } } } -// [END android_compose_text_auto_format_phone-number_transformtext] +// [END android_compose_text_auto_format_phone_number_transformtext] private val firaSansFamily = FontFamily() From a508b14b35a4445fce1b19ee785a0c7ed753353a Mon Sep 17 00:00:00 2001 From: dmail Date: Tue, 10 Sep 2024 16:51:53 -0700 Subject: [PATCH 232/463] First (pilot) commit for getting this phase of the snippets in. Adds the two snippets that were created for: https://developer.android.com/quick-guides/content/auto-format-phone-number?hl=en --- .../main/java/com/example/compose/snippets/text/TextSnippets.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index d65a56df9..75321bb80 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -792,7 +792,7 @@ fun PhoneNumber() { } // [END android_compose_text_auto_format_phone_number_textfieldconfig] -// [START android_compose_text_auto_format_phone-number_transformtext] +// [START android_compose_text_auto_format_phone_number_transformtext] class NanpVisualTransformation() : VisualTransformation { override fun filter(text: AnnotatedString): TransformedText { From 87206525a224615dc9ef4bc1e60ef6e969c6561b Mon Sep 17 00:00:00 2001 From: dmail Date: Wed, 11 Sep 2024 10:06:52 -0700 Subject: [PATCH 233/463] Docs: Adds a Glide snippet for the "Loading Images" Quick Guide at https://developer.android.com/quick-guides/content/load-images?hl=en --- compose/snippets/build.gradle.kts | 1 + .../snippets/images/LoadingImagesSnippets.kt | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index 5d2b661fd..da10cf339 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -159,5 +159,6 @@ dependencies { androidTestImplementation(libs.androidx.compose.ui.test.junit4) debugImplementation(libs.androidx.compose.ui.test.manifest) + implementation("com.github.bumptech.glide:compose:1.0.0-beta01") } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/images/LoadingImagesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/images/LoadingImagesSnippets.kt index 4ca5d70d6..f0aee2e6b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/images/LoadingImagesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/images/LoadingImagesSnippets.kt @@ -22,6 +22,8 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import coil.compose.AsyncImage +import com.bumptech.glide.integration.compose.ExperimentalGlideComposeApi +import com.bumptech.glide.integration.compose.GlideImage import com.example.compose.snippets.R /* @@ -53,7 +55,7 @@ fun LoadingImageFromDisk() { @Preview @Composable -fun LoadingImageFromInternet() { +fun LoadingImageFromInternetCoil() { // [START android_compose_images_load_internet_coil] AsyncImage( model = "https://example.com/image.jpg", @@ -61,3 +63,16 @@ fun LoadingImageFromInternet() { ) // [END android_compose_images_load_internet_coil] } + +@OptIn(ExperimentalGlideComposeApi::class) +@Preview +@Composable +fun LoadingImageFromInternetGlide() { + // [START android_compose_images_load_internet_glide] + GlideImage( + model = "https://example.com/image.jpg", + contentDescription = "Translated description of what the image contains" + ) + // [END android_compose_images_load_internet_glide] +} + From aaef2d92a50f3bf06672da6de9163304ff275322 Mon Sep 17 00:00:00 2001 From: thedmail Date: Wed, 11 Sep 2024 17:12:53 +0000 Subject: [PATCH 234/463] Apply Spotless --- .../com/example/compose/snippets/images/LoadingImagesSnippets.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/images/LoadingImagesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/images/LoadingImagesSnippets.kt index f0aee2e6b..879b2f9a9 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/images/LoadingImagesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/images/LoadingImagesSnippets.kt @@ -75,4 +75,3 @@ fun LoadingImageFromInternetGlide() { ) // [END android_compose_images_load_internet_glide] } - From cd04e0b6f01991a66e2749ed0ae20cf2debc70ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 18:52:42 +0100 Subject: [PATCH 235/463] Bump peter-evans/create-pull-request from 6 to 7 (#336) Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6 to 7. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v6...v7) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/sync_main_latest.yml | 2 +- .github/workflows/update_deps.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sync_main_latest.yml b/.github/workflows/sync_main_latest.yml index 38c56bbb3..38f6c335b 100644 --- a/.github/workflows/sync_main_latest.yml +++ b/.github/workflows/sync_main_latest.yml @@ -21,7 +21,7 @@ jobs: - name: Create pull request id: cpr - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@v7 with: token: ${{ secrets.PAT }} commit-message: 🤖 Sync main to latest diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml index ffe44b0e0..566cd63e9 100644 --- a/.github/workflows/update_deps.yml +++ b/.github/workflows/update_deps.yml @@ -19,7 +19,7 @@ jobs: run: ./gradlew versionCatalogUpdate - name: Create pull request id: cpr - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@v7 with: token: ${{ secrets.PAT }} commit-message: 🤖 Update Dependencies From 39aaf9b57de11c8de7eac22851605afcf890405e Mon Sep 17 00:00:00 2001 From: dmail Date: Wed, 11 Sep 2024 14:54:46 -0700 Subject: [PATCH 236/463] Moves Glide dependency to libs.versions.toml. --- compose/snippets/build.gradle.kts | 3 ++- gradle/libs.versions.toml | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index da10cf339..de47ea8bf 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -144,6 +144,8 @@ dependencies { implementation(libs.googlemaps.maps) implementation(libs.hilt.android) + implementation(libs.glide.compose) + kapt(libs.hilt.compiler) testImplementation(libs.junit) @@ -159,6 +161,5 @@ dependencies { androidTestImplementation(libs.androidx.compose.ui.test.junit4) debugImplementation(libs.androidx.compose.ui.test.manifest) - implementation("com.github.bumptech.glide:compose:1.0.0-beta01") } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8649031d7..5b8ae6592 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -50,6 +50,7 @@ version-catalog-update = "0.8.3" wearComposeFoundation = "1.4.0" wearComposeMaterial = "1.4.0" composeUiTooling = "1.4.0" +glide= "1.0.0-beta01" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } @@ -126,6 +127,7 @@ androidx-media3-exoplayer = { group = "androidx.media3", name = "media3-exoplaye play-services-wearable = { module = "com.google.android.gms:play-services-wearable", version.ref = "playServicesWearable" } compose-ui-tooling = { group = "androidx.wear.compose", name = "compose-ui-tooling", version.ref = "composeUiTooling" } androidx-material-icons-core = { module = "androidx.compose.material:material-icons-core" } +glide-compose = { module = "com.github.bumptech.glide:compose" , version.ref = "glide"} [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } From e1631c044d49278ff328bddc4f9b2d9c5ed1de64 Mon Sep 17 00:00:00 2001 From: dmail Date: Wed, 11 Sep 2024 15:40:25 -0700 Subject: [PATCH 237/463] Adds snippet for the "Create a parallax scrolling effect" doc at https://developer.android.com/quick-guides/content/parallax-scrolling?hl=en --- .../compose/snippets/images/ParallaxEffect.kt | 57 +++++++++++++++++++ .../snippets/src/main/res/values/strings.xml | 1 + 2 files changed, 58 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/images/ParallaxEffect.kt b/compose/snippets/src/main/java/com/example/compose/snippets/images/ParallaxEffect.kt index 7c58cd7d5..07226a6d7 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/images/ParallaxEffect.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/images/ParallaxEffect.kt @@ -1,2 +1,59 @@ package com.example.compose.snippets.images +import androidx.compose.foundation.Image +import androidx.compose.foundation.ScrollState +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.layout.layout +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.example.compose.snippets.R + +// [START android_compose_images_parallax] +@Composable +fun ParallaxEffect() +{ + fun Modifier.parallaxLayoutModifier(scrollState: ScrollState, rate: Int) = + layout { measurable, constraints -> + val placeable = measurable.measure(constraints) + val height = if (rate > 0) scrollState.value / rate else scrollState.value + layout(placeable.width, placeable.height) { + placeable.place(0, height) + } + } + + val scrollState = rememberScrollState() + Column( + modifier = Modifier + .fillMaxWidth() + .verticalScroll(scrollState), + ) { + + Image( + painterResource(id = R.drawable.cupcake), + contentDescription = "Android logo", + contentScale = ContentScale.Fit, + // Reduce scrolling rate by half. + modifier = Modifier.parallaxLayoutModifier(scrollState, 2) + ) + + Text( + text = stringResource(R.string.detail_placeholder), + modifier = Modifier + .background(Color.White) + .padding(horizontal = 8.dp), + + ) + } +} +// [END android_compose_images_parallax] \ No newline at end of file diff --git a/compose/snippets/src/main/res/values/strings.xml b/compose/snippets/src/main/res/values/strings.xml index 9c693cafe..faf8fd472 100644 --- a/compose/snippets/src/main/res/values/strings.xml +++ b/compose/snippets/src/main/res/values/strings.xml @@ -52,4 +52,5 @@ Favorites Shopping Profile + This is just a placeholder. \ No newline at end of file From e6d69f4430ecbf47d614f488a343bd5e529a227c Mon Sep 17 00:00:00 2001 From: thedmail Date: Wed, 11 Sep 2024 22:44:31 +0000 Subject: [PATCH 238/463] Apply Spotless --- .../compose/snippets/images/ParallaxEffect.kt | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/images/ParallaxEffect.kt b/compose/snippets/src/main/java/com/example/compose/snippets/images/ParallaxEffect.kt index 07226a6d7..3f5fd2527 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/images/ParallaxEffect.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/images/ParallaxEffect.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.example.compose.snippets.images import androidx.compose.foundation.Image @@ -21,8 +37,7 @@ import com.example.compose.snippets.R // [START android_compose_images_parallax] @Composable -fun ParallaxEffect() -{ +fun ParallaxEffect() { fun Modifier.parallaxLayoutModifier(scrollState: ScrollState, rate: Int) = layout { measurable, constraints -> val placeable = measurable.measure(constraints) @@ -53,7 +68,7 @@ fun ParallaxEffect() .background(Color.White) .padding(horizontal = 8.dp), - ) + ) } } -// [END android_compose_images_parallax] \ No newline at end of file +// [END android_compose_images_parallax] From f2c60304282dbbf64e19237366cc8aa4e0d9e6ff Mon Sep 17 00:00:00 2001 From: dmail Date: Wed, 11 Sep 2024 15:58:00 -0700 Subject: [PATCH 239/463] Adds snippet for the "Create a parallax scrolling effect" doc at https://developer.android.com/quick-guides/content/parallax-scrolling?hl=en --- compose/snippets/src/main/res/values-es/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/compose/snippets/src/main/res/values-es/strings.xml b/compose/snippets/src/main/res/values-es/strings.xml index cd1e2c96c..3ba327f49 100644 --- a/compose/snippets/src/main/res/values-es/strings.xml +++ b/compose/snippets/src/main/res/values-es/strings.xml @@ -52,4 +52,5 @@ Favoritos Compras Perfil + Esto es sólo un texto de marcador de posición. \ No newline at end of file From 81ff0aee94f07a127cf004d52b5e17603f28f796 Mon Sep 17 00:00:00 2001 From: dmail Date: Fri, 13 Sep 2024 13:14:56 -0700 Subject: [PATCH 240/463] Attempts to update BNR sample for "Multiple Item Types in a List" QuickGuide page at https://developer.android.com/quick-guides/content/build-list-multiple-item-types?hl=en --- .../lists/ListWithMultipleItemTypes.kt | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt new file mode 100644 index 000000000..fbc36953e --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt @@ -0,0 +1,40 @@ +package com.example.compose.snippets.lists + +import android.provider.MediaStore +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.runtime.Composable +import org.w3c.dom.Text + +@Composable +fun ListWithMultipleItems(numberOfMessages:Int) { + val messages = numberOfMessages // or any Int + val message = SampleMessage("Hi there", MediaStore.Audio()) + + LazyColumn { + items( + messages, + contentType = { it } + ) { + when (message.content) { + // Content Types and Composables are defined elsewhere. + is MediaStore.Audio -> AudioMessage(message) + is Text -> TextMessage(message) + } + } + } +} + +@Composable +fun TextMessage(message: SampleMessage) { + TODO("Not yet implemented") +} + +@Composable +fun AudioMessage(message: SampleMessage) { + TODO("Not yet implemented") +} + +data class SampleMessage (val text:String, val content:Any) +{ + +} From 75cb794267002e95ca3c59450f09955f06cd21eb Mon Sep 17 00:00:00 2001 From: dmail Date: Fri, 13 Sep 2024 13:42:17 -0700 Subject: [PATCH 241/463] Attempts to update BNR sample for "Multiple Item Types in a List" QuickGuide page at https://developer.android.com/quick-guides/content/build-list-multiple-item-types?hl=en --- .../lists/ListWithMultipleItemTypes.kt | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt index fbc36953e..c6bcecbdc 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt @@ -6,31 +6,29 @@ import androidx.compose.runtime.Composable import org.w3c.dom.Text @Composable -fun ListWithMultipleItems(numberOfMessages:Int) { - val messages = numberOfMessages // or any Int - val message = SampleMessage("Hi there", MediaStore.Audio()) - +fun ListWithMultipleItems(messages: List) { LazyColumn { items( - messages, + messages.size, contentType = { it } ) { - when (message.content) { - // Content Types and Composables are defined elsewhere. - is MediaStore.Audio -> AudioMessage(message) - is Text -> TextMessage(message) - } + for (message in messages) + when (message) { + // Content Types and Composables are defined elsewhere. + is MediaStore.Audio -> AudioMessage(message) + is Text -> TextMessage(message) + } } } } @Composable -fun TextMessage(message: SampleMessage) { +fun AudioMessage(message: MediaStore.Audio) { TODO("Not yet implemented") } @Composable -fun AudioMessage(message: SampleMessage) { +fun TextMessage(message: Text) { TODO("Not yet implemented") } From fbbb764ab77a6c5b9d164f08b838497ca1345c9b Mon Sep 17 00:00:00 2001 From: dmail Date: Fri, 13 Sep 2024 13:43:16 -0700 Subject: [PATCH 242/463] Attempts to update BNR sample for "Multiple Item Types in a List" QuickGuide page at https://developer.android.com/quick-guides/content/build-list-multiple-item-types?hl=en --- .../example/compose/snippets/lists/ListWithMultipleItemTypes.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt index c6bcecbdc..8132f27b3 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt @@ -14,7 +14,6 @@ fun ListWithMultipleItems(messages: List) { ) { for (message in messages) when (message) { - // Content Types and Composables are defined elsewhere. is MediaStore.Audio -> AudioMessage(message) is Text -> TextMessage(message) } From a8d55eafb88cdab44a29b4f833783f93da5ff9db Mon Sep 17 00:00:00 2001 From: thedmail Date: Fri, 13 Sep 2024 21:42:10 +0000 Subject: [PATCH 243/463] Apply Spotless --- .../lists/ListWithMultipleItemTypes.kt | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt index 8132f27b3..e371aa6e2 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.example.compose.snippets.lists import android.provider.MediaStore @@ -31,7 +47,4 @@ fun TextMessage(message: Text) { TODO("Not yet implemented") } -data class SampleMessage (val text:String, val content:Any) -{ - -} +data class SampleMessage(val text: String, val content: Any) From 65ff1b2d848346f3b0686f472035605552a53658 Mon Sep 17 00:00:00 2001 From: dmail Date: Fri, 13 Sep 2024 14:44:24 -0700 Subject: [PATCH 244/463] Code snippet for Quick Guide at https://developer.android.com/quick-guides/content/build-list-multiple-item-types?hl=en --- .../compose/snippets/lists/LazyListSnippets.kt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index c8864f129..f3a8202bc 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -67,11 +67,11 @@ import androidx.paging.compose.itemKey import coil.compose.AsyncImage import coil.compose.rememberAsyncImagePainter import com.example.compose.snippets.util.randomSampleImageUrl -import kotlin.random.Random import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch +import kotlin.random.Random private object ListsSnippetsColumn { // [START android_compose_layouts_list_column] @@ -644,7 +644,9 @@ fun LazyStaggeredGridSnippet() { model = photo, contentScale = ContentScale.Crop, contentDescription = null, - modifier = Modifier.fillMaxWidth().wrapContentHeight() + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight() ) } }, @@ -666,7 +668,9 @@ fun LazyStaggeredGridSnippetFixed() { model = photo, contentScale = ContentScale.Crop, contentDescription = null, - modifier = Modifier.fillMaxWidth().wrapContentHeight() + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight() ) } }, @@ -741,4 +745,4 @@ private val randomSizedPhotos = listOf( randomSampleImageUrl(width = 300, height = 400), randomSampleImageUrl(width = 1600, height = 900), randomSampleImageUrl(width = 500, height = 500), -) +) \ No newline at end of file From 471be65dcbfa14d1a9632d4d40227b650d1c21be Mon Sep 17 00:00:00 2001 From: thedmail Date: Fri, 13 Sep 2024 21:51:24 +0000 Subject: [PATCH 245/463] Apply Spotless --- .../com/example/compose/snippets/lists/LazyListSnippets.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index f3a8202bc..25323198a 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -67,11 +67,11 @@ import androidx.paging.compose.itemKey import coil.compose.AsyncImage import coil.compose.rememberAsyncImagePainter import com.example.compose.snippets.util.randomSampleImageUrl +import kotlin.random.Random import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch -import kotlin.random.Random private object ListsSnippetsColumn { // [START android_compose_layouts_list_column] @@ -745,4 +745,4 @@ private val randomSizedPhotos = listOf( randomSampleImageUrl(width = 300, height = 400), randomSampleImageUrl(width = 1600, height = 900), randomSampleImageUrl(width = 500, height = 500), -) \ No newline at end of file +) From 28d8fab659224eb46f26ae1e6b08ec85b7953ad0 Mon Sep 17 00:00:00 2001 From: dmail Date: Fri, 13 Sep 2024 15:58:18 -0700 Subject: [PATCH 246/463] Code snippet for Quick Guide at https://developer.android.com/quick-guides/content/build-list-multiple-item-types?hl=en --- .../compose/snippets/lists/ListWithMultipleItemTypes.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt index e371aa6e2..1e488caf0 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt @@ -39,12 +39,12 @@ fun ListWithMultipleItems(messages: List) { @Composable fun AudioMessage(message: MediaStore.Audio) { - TODO("Not yet implemented") + TODO("Not yet implemented.") } @Composable fun TextMessage(message: Text) { - TODO("Not yet implemented") + TODO("Not yet implemented.") } data class SampleMessage(val text: String, val content: Any) From 69588da665f8dbebb20206619e2282fc659fa853 Mon Sep 17 00:00:00 2001 From: dmail Date: Mon, 16 Sep 2024 11:33:42 -0700 Subject: [PATCH 247/463] Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). Code taken from riggaroo gist at https://www.google.com/url?sa=D&q=https%3A%2F%2Fgist.github.com%2Friggaroo%2F668868c954c4a1e9b29fa57a762e63b5 --- .../snippets/animations/AnimationSnippets.kt | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt index 9db1748d1..a7e967a76 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt @@ -109,6 +109,9 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.IntSize import androidx.compose.ui.unit.dp import com.example.compose.snippets.R +import kotlinx.coroutines.delay +import java.text.BreakIterator +import java.text.StringCharacterIterator /* * Copyright 2023 The Android Open Source Project @@ -820,3 +823,38 @@ private fun Expanded() { @Composable private fun ContentIcon() { } + +@Composable +private fun AnimatedText() { + val text = "This text animates as though it is being typed \uD83E\uDDDE\u200D♀\uFE0F \uD83D\uDD10 \uD83D\uDC69\u200D❤\uFE0F\u200D\uD83D\uDC68 \uD83D\uDC74\uD83C\uDFFD" + + // Use BreakIterator as it correctly iterates over characters regardless of how they are + // stored, for example, some emojis are made up of multiple characters. + // You don't want to break up an emoji as it animates, so using BreakIterator will ensure + // this is correctly handled! + val breakIterator = remember(text) { BreakIterator.getCharacterInstance() } + + // Define how many milliseconds between each character should pause for. This will create the + // illusion of an animation, as we delay the job after each character is iterated on. + val typingDelayInMs = 50L + + var substringText by remember { + mutableStateOf("") + } + LaunchedEffect(text) { + // Initial start delay of the typing animation + delay(1000) + breakIterator.text = StringCharacterIterator(text) + + var nextIndex = breakIterator.next() + // Iterate over the string, by index boundary + while (nextIndex != BreakIterator.DONE) { + substringText = text.subSequence(0, nextIndex).toString() + // Go to the next logical character boundary + nextIndex = breakIterator.next() + delay(typingDelayInMs) + } + } + Text(substringText) +// [END android_compose_animations_animate_char_by_char +} From 783b770a46c37e4155678417d4fb9ead312cb347 Mon Sep 17 00:00:00 2001 From: thedmail Date: Mon, 16 Sep 2024 18:36:47 +0000 Subject: [PATCH 248/463] Apply Spotless --- .../example/compose/snippets/animations/AnimationSnippets.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt index a7e967a76..74c5c078b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt @@ -109,9 +109,9 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.IntSize import androidx.compose.ui.unit.dp import com.example.compose.snippets.R -import kotlinx.coroutines.delay import java.text.BreakIterator import java.text.StringCharacterIterator +import kotlinx.coroutines.delay /* * Copyright 2023 The Android Open Source Project From 9b8a86512c06a250109d742a1a468d3fdbd988d4 Mon Sep 17 00:00:00 2001 From: dmail Date: Mon, 16 Sep 2024 15:26:12 -0700 Subject: [PATCH 249/463] Code snippet for Compose doc at https://developer.android.com/quick-guides/content/show-hide-password?hl=en (show/hide password based on user toggle). Snippet builds as-is from DAC page. --- .../compose/snippets/text/TextSnippets.kt | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index 75321bb80..57fbd99f6 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -22,6 +22,7 @@ import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.background import androidx.compose.foundation.basicMarquee import androidx.compose.foundation.border +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -32,6 +33,10 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.selection.DisableSelection import androidx.compose.foundation.text.selection.SelectionContainer +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Visibility +import androidx.compose.material.icons.filled.VisibilityOff +import androidx.compose.material3.Icon import androidx.compose.material3.LocalTextStyle import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField @@ -839,3 +844,35 @@ private val firaSansFamily = FontFamily() val LightBlue = Color(0xFF0066FF) val Purple = Color(0xFF800080) + +// [START android_compose_text_auto_format_phone_number_showhidepassword] +@Composable +fun PasswordTextField() { + var password by rememberSaveable { mutableStateOf("") } + var showPassword by remember { mutableStateOf(false) } + val passwordVisualTransformation = remember { PasswordVisualTransformation() } + + TextField( + value = password, + onValueChange = { password = it }, + label = { Text("Enter password") }, + visualTransformation = if (showPassword) { + VisualTransformation.None + } else { + passwordVisualTransformation + }, + keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password), + modifier = Modifier.fillMaxWidth(), + trailingIcon = { + Icon( + if (showPassword) { + Icons.Filled.Visibility + } else { + Icons.Filled.VisibilityOff + }, + contentDescription = "Toggle password visibility", + modifier = Modifier.clickable { showPassword = !showPassword }) + } + ) +} +// [END android_compose_text_auto_format_phone_number_showhidepassword] \ No newline at end of file From 70989225da1ea66bf0ba9c354c9cc1f713e1edf2 Mon Sep 17 00:00:00 2001 From: thedmail Date: Mon, 16 Sep 2024 22:29:16 +0000 Subject: [PATCH 250/463] Apply Spotless --- .../java/com/example/compose/snippets/text/TextSnippets.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index 57fbd99f6..6b8d7c37e 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -871,8 +871,9 @@ fun PasswordTextField() { Icons.Filled.VisibilityOff }, contentDescription = "Toggle password visibility", - modifier = Modifier.clickable { showPassword = !showPassword }) + modifier = Modifier.clickable { showPassword = !showPassword } + ) } ) } -// [END android_compose_text_auto_format_phone_number_showhidepassword] \ No newline at end of file +// [END android_compose_text_auto_format_phone_number_showhidepassword] From cf96f87fafef716164b769a0c363f5af859d2ce1 Mon Sep 17 00:00:00 2001 From: dmail Date: Mon, 16 Sep 2024 16:31:36 -0700 Subject: [PATCH 251/463] Code snippet for Compose doc at https://developer.android.com/quick-guides/content/display-nested-list?hl=en (nested horizontal scrolling in vertical list ). Snippet builds as-is from DAC page. --- .../snippets/lists/NestedScrollingItem.kt | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/lists/NestedScrollingItem.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/NestedScrollingItem.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/NestedScrollingItem.kt new file mode 100644 index 000000000..8f838a51c --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/NestedScrollingItem.kt @@ -0,0 +1,31 @@ +package com.example.compose.snippets.lists + +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import coil.compose.AsyncImage + +// [START android_compose_layouts_nested_scrolling] +@Composable +fun NestedScrollingRowsList(urls: List) { + LazyColumn { + items(10) { + LazyRow { + item { Text("Row: $it") } + items(urls.size) { index -> + // AsyncImage provided by Coil. + AsyncImage( + model = urls[index], + modifier = Modifier.size(150.dp), + contentDescription = null + ) + } + } + } + } +} +// [END android_compose_layouts_nested_scrolling] \ No newline at end of file From 244eab639a4d37200130bde8b240e00cbac29436 Mon Sep 17 00:00:00 2001 From: thedmail Date: Mon, 16 Sep 2024 23:33:43 +0000 Subject: [PATCH 252/463] Apply Spotless --- .../snippets/lists/NestedScrollingItem.kt | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/NestedScrollingItem.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/NestedScrollingItem.kt index 8f838a51c..406b91f9a 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/NestedScrollingItem.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/NestedScrollingItem.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.example.compose.snippets.lists import androidx.compose.foundation.layout.size @@ -28,4 +44,4 @@ fun NestedScrollingRowsList(urls: List) { } } } -// [END android_compose_layouts_nested_scrolling] \ No newline at end of file +// [END android_compose_layouts_nested_scrolling] From 8325a2c3833e827f918ba35636eb39dbc3288bf4 Mon Sep 17 00:00:00 2001 From: dmail Date: Mon, 16 Sep 2024 20:04:54 -0700 Subject: [PATCH 253/463] Code snippet for Compose doc at https://developer.android.com/quick-guides/content/lazily-load-list?hl=en (lazily load lists). --- .../snippets/lists/LazyListSnippets.kt | 60 +++++++++++++++++-- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index c8864f129..bca7ad1b8 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -32,6 +32,7 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.lazy.LazyColumn @@ -47,6 +48,8 @@ import androidx.compose.foundation.lazy.staggeredgrid.StaggeredGridCells import androidx.compose.foundation.lazy.staggeredgrid.items import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.Card +import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -67,11 +70,12 @@ import androidx.paging.compose.itemKey import coil.compose.AsyncImage import coil.compose.rememberAsyncImagePainter import com.example.compose.snippets.util.randomSampleImageUrl -import kotlin.random.Random import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch +import org.w3c.dom.Text +import kotlin.random.Random private object ListsSnippetsColumn { // [START android_compose_layouts_list_column] @@ -644,7 +648,9 @@ fun LazyStaggeredGridSnippet() { model = photo, contentScale = ContentScale.Crop, contentDescription = null, - modifier = Modifier.fillMaxWidth().wrapContentHeight() + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight() ) } }, @@ -666,7 +672,9 @@ fun LazyStaggeredGridSnippetFixed() { model = photo, contentScale = ContentScale.Crop, contentDescription = null, - modifier = Modifier.fillMaxWidth().wrapContentHeight() + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight() ) } }, @@ -674,7 +682,7 @@ fun LazyStaggeredGridSnippetFixed() { ) // [END android_compose_layouts_lazy_staggered_grid_fixed] } -private class Message(val id: Long) +class Message(val id: Long) private class Item private data class Contact(val firstName: String) @@ -742,3 +750,47 @@ private val randomSizedPhotos = listOf( randomSampleImageUrl(width = 1600, height = 900), randomSampleImageUrl(width = 500, height = 500), ) +// [START android_compose_layouts_lazily_load_list] +@Composable +fun MessageList(pager: Pager) { + val lazyPagingItems = pager.flow.collectAsLazyPagingItems() + + LazyColumn { + items( + lazyPagingItems.itemCount, + key = lazyPagingItems.itemKey { it.id } + ) { index -> + val message = lazyPagingItems[index] + if (message != null) { + MessageRow(message) + } else { + MessagePlaceholder() + } + } + } + + @Composable + fun MessagePlaceholder() { + Box( + Modifier + .fillMaxWidth() + .height(48.dp) + ) { + CircularProgressIndicator() + } + } + + @Composable + fun MessageRow(message: Text) { + Card(modifier = Modifier.padding(8.dp)) { + Column( + modifier = Modifier.padding(8.dp), + verticalArrangement = Arrangement.Center + ) { + // Text(message.sender), where "message" is an object with a sender property + // Text(message.text), where "text" is an object with a text property + } + } + } +} +// [END android_compose_layouts_lazily_load_list] \ No newline at end of file From ccf9d11e5949f29197186e8924e3a9b7e077026e Mon Sep 17 00:00:00 2001 From: dmail Date: Mon, 16 Sep 2024 20:12:18 -0700 Subject: [PATCH 254/463] Adds empty Modifiers to function signatures that had no Modifiers before. --- .../example/compose/snippets/lists/LazyListSnippets.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index bca7ad1b8..a89fb29c4 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -752,7 +752,8 @@ private val randomSizedPhotos = listOf( ) // [START android_compose_layouts_lazily_load_list] @Composable -fun MessageList(pager: Pager) { +fun MessageList(modifier: Modifier, + pager: Pager) { val lazyPagingItems = pager.flow.collectAsLazyPagingItems() LazyColumn { @@ -770,7 +771,7 @@ fun MessageList(pager: Pager) { } @Composable - fun MessagePlaceholder() { + fun MessagePlaceholder(modifier: Modifier) { Box( Modifier .fillMaxWidth() @@ -781,7 +782,8 @@ fun MessageList(pager: Pager) { } @Composable - fun MessageRow(message: Text) { + fun MessageRow(modifier: Modifier, + message: Text) { Card(modifier = Modifier.padding(8.dp)) { Column( modifier = Modifier.padding(8.dp), From a9bbe00055c7306b6bca0cdae76cfd27e4502b8f Mon Sep 17 00:00:00 2001 From: thedmail Date: Tue, 17 Sep 2024 03:16:05 +0000 Subject: [PATCH 255/463] Apply Spotless --- .../compose/snippets/lists/LazyListSnippets.kt | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index a89fb29c4..68718cc9e 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -70,12 +70,12 @@ import androidx.paging.compose.itemKey import coil.compose.AsyncImage import coil.compose.rememberAsyncImagePainter import com.example.compose.snippets.util.randomSampleImageUrl +import kotlin.random.Random import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import org.w3c.dom.Text -import kotlin.random.Random private object ListsSnippetsColumn { // [START android_compose_layouts_list_column] @@ -752,8 +752,10 @@ private val randomSizedPhotos = listOf( ) // [START android_compose_layouts_lazily_load_list] @Composable -fun MessageList(modifier: Modifier, - pager: Pager) { +fun MessageList( + modifier: Modifier, + pager: Pager +) { val lazyPagingItems = pager.flow.collectAsLazyPagingItems() LazyColumn { @@ -782,8 +784,10 @@ fun MessageList(modifier: Modifier, } @Composable - fun MessageRow(modifier: Modifier, - message: Text) { + fun MessageRow( + modifier: Modifier, + message: Text + ) { Card(modifier = Modifier.padding(8.dp)) { Column( modifier = Modifier.padding(8.dp), @@ -795,4 +799,4 @@ fun MessageList(modifier: Modifier, } } } -// [END android_compose_layouts_lazily_load_list] \ No newline at end of file +// [END android_compose_layouts_lazily_load_list] From 125b5bc750d9528ef6d8ff4d057c4f854ac9d682 Mon Sep 17 00:00:00 2001 From: dmail Date: Tue, 17 Sep 2024 10:51:56 -0700 Subject: [PATCH 256/463] Adds the code snippet on https://developer.android.com/quick-guides/content/enable-snap-scrolling?hl=en (Create a button to enable snap scrolling)to the repo. --- .../snippets/lists/LazyListSnippets.kt | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index c8864f129..f53f02d22 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -47,6 +47,7 @@ import androidx.compose.foundation.lazy.staggeredgrid.StaggeredGridCells import androidx.compose.foundation.lazy.staggeredgrid.items import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -67,11 +68,11 @@ import androidx.paging.compose.itemKey import coil.compose.AsyncImage import coil.compose.rememberAsyncImagePainter import com.example.compose.snippets.util.randomSampleImageUrl -import kotlin.random.Random import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch +import kotlin.random.Random private object ListsSnippetsColumn { // [START android_compose_layouts_list_column] @@ -742,3 +743,28 @@ private val randomSizedPhotos = listOf( randomSampleImageUrl(width = 1600, height = 900), randomSampleImageUrl(width = 500, height = 500), ) + +// [START android_compose_lists_snap_scroll_button] +@Composable +fun MessageList(modifier: Modifier = Modifier) { + val listState = rememberLazyListState() + val coroutineScope = rememberCoroutineScope() + + LazyColumn(state = listState, modifier = Modifier.height(120.dp)) { + items(10) { index -> + Text( + modifier = Modifier.height(40.dp), + text = "Item $index" + ) + } + } + + Button(onClick = { + coroutineScope.launch { + listState.animateScrollToItem(index = 0) + } + }) { + Text(text = "Go top") + } +} +// [END android_compose_lists_snap_scroll_button] \ No newline at end of file From b1d46e86ecf353f08b7dde9ebe2e78e67a9eb2ac Mon Sep 17 00:00:00 2001 From: thedmail Date: Tue, 17 Sep 2024 17:53:51 +0000 Subject: [PATCH 257/463] Apply Spotless --- .../com/example/compose/snippets/lists/LazyListSnippets.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index f53f02d22..f15d4b145 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -68,11 +68,11 @@ import androidx.paging.compose.itemKey import coil.compose.AsyncImage import coil.compose.rememberAsyncImagePainter import com.example.compose.snippets.util.randomSampleImageUrl +import kotlin.random.Random import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch -import kotlin.random.Random private object ListsSnippetsColumn { // [START android_compose_layouts_list_column] @@ -767,4 +767,4 @@ fun MessageList(modifier: Modifier = Modifier) { Text(text = "Go top") } } -// [END android_compose_lists_snap_scroll_button] \ No newline at end of file +// [END android_compose_lists_snap_scroll_button] From 6ff6f71b35c8cfc2e29324b3442045244b9747a4 Mon Sep 17 00:00:00 2001 From: dmail Date: Tue, 17 Sep 2024 11:17:19 -0700 Subject: [PATCH 258/463] Updates code snippet for https://developer.android.com/quick-guides/content/support-multiple-links?hl=en (Multiple links in a text string) from deprecated pushStringAnnotation() to currently supported withLink(). --- .../compose/snippets/text/TextSnippets.kt | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index 75321bb80..daa7bd846 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -550,17 +550,29 @@ private object TextEffectiveStateManagement2 { // [START android_compose_text_link_1] @Composable fun AnnotatedStringWithLinkSample() { - // Display a link in the text + // Display multiple links in the text Text( buildAnnotatedString { - append("Build better apps faster with ") + append("Go to the ") withLink( LinkAnnotation.Url( "https://developer.android.com/jetpack/compose", TextLinkStyles(style = SpanStyle(color = Color.Blue)) ) ) { - append("Jetpack Compose") + append("Android Developers ") + pop() + append("website, and check out the") + } + withLink( + LinkAnnotation.Url( + "https://developer.android.com/jetpack/compose", + TextLinkStyles(style = SpanStyle(color = Color.Green)) + ) + ) { + append("Compose guidance") + pop() + append(".") } } ) From a7485d8b0586528ab2e6ba8d2d4d6dd5568f76c6 Mon Sep 17 00:00:00 2001 From: dmail Date: Tue, 17 Sep 2024 11:17:42 -0700 Subject: [PATCH 259/463] Updates code snippet for https://developer.android.com/quick-guides/content/support-multiple-links?hl=en (Multiple links in a text string) from deprecated pushStringAnnotation() to currently supported withLink(). --- .../main/java/com/example/compose/snippets/text/TextSnippets.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index daa7bd846..55843ca8b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -562,7 +562,7 @@ fun AnnotatedStringWithLinkSample() { ) { append("Android Developers ") pop() - append("website, and check out the") + append("website, and check out the" ) } withLink( LinkAnnotation.Url( From 7e3844ce884126c0893ea1c2e4c6c77de068bb00 Mon Sep 17 00:00:00 2001 From: dmail Date: Tue, 17 Sep 2024 11:18:07 -0700 Subject: [PATCH 260/463] Updates code snippet for https://developer.android.com/quick-guides/content/support-multiple-links?hl=en (Multiple links in a text string) from deprecated pushStringAnnotation() to currently supported withLink(). --- .../main/java/com/example/compose/snippets/text/TextSnippets.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index 55843ca8b..ec5029c7f 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -556,7 +556,7 @@ fun AnnotatedStringWithLinkSample() { append("Go to the ") withLink( LinkAnnotation.Url( - "https://developer.android.com/jetpack/compose", + "https://developer.android.com/", TextLinkStyles(style = SpanStyle(color = Color.Blue)) ) ) { From a0a2370108b8e860ae57a112b10ebc0f63bb48f5 Mon Sep 17 00:00:00 2001 From: dmail Date: Tue, 17 Sep 2024 11:19:47 -0700 Subject: [PATCH 261/463] Updates code snippet for https://developer.android.com/quick-guides/content/support-multiple-links?hl=en (Multiple links in a text string) from deprecated pushStringAnnotation() to currently supported withLink(). --- .../main/java/com/example/compose/snippets/text/TextSnippets.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index ec5029c7f..270ecc8b1 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -573,6 +573,7 @@ fun AnnotatedStringWithLinkSample() { append("Compose guidance") pop() append(".") + pop() } } ) From f132a357c7ab8edc7c12cd9e06e56e0db5ddaef8 Mon Sep 17 00:00:00 2001 From: thedmail Date: Tue, 17 Sep 2024 18:21:48 +0000 Subject: [PATCH 262/463] Apply Spotless --- .../main/java/com/example/compose/snippets/text/TextSnippets.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index 270ecc8b1..37f0d7bbe 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -562,7 +562,7 @@ fun AnnotatedStringWithLinkSample() { ) { append("Android Developers ") pop() - append("website, and check out the" ) + append("website, and check out the") } withLink( LinkAnnotation.Url( From 3f3ccaec0a0a0b2fcdfce20f2cb9e85f51bbd79d Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Fri, 20 Sep 2024 01:53:14 +0100 Subject: [PATCH 263/463] =?UTF-8?q?=F0=9F=A4=96=20Update=20Dependencies=20?= =?UTF-8?q?(#353)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🤖 Update Dependencies * Update gradle * Update gradle * Fix lint checks * Migrate kapt to ksp * Fix private injection --------- Co-authored-by: Ben Trengrove Co-authored-by: Ben Trengrove --- build.gradle.kts | 2 +- compose/snippets/build.gradle.kts | 4 +- .../interop/ComposeWithOtherLibraries.kt | 8 +- .../sideeffects/SideEffectsSnippets.kt | 4 +- gradle/libs.versions.toml | 69 +++++++++--------- gradle/wrapper/gradle-wrapper.jar | Bin 63375 -> 43453 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 17 +++-- gradlew.bat | 20 ++--- 9 files changed, 63 insertions(+), 64 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 22d9028a4..6b4ec9ad0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.android.library) apply false alias(libs.plugins.kotlin.android) apply false - alias(libs.plugins.kapt) apply false + alias(libs.plugins.ksp) apply false alias(libs.plugins.hilt) apply false alias(libs.plugins.kotlin.parcelize) apply false alias(libs.plugins.compose.compiler) apply false diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index de47ea8bf..8b644b694 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -17,7 +17,7 @@ plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) - alias(libs.plugins.kapt) + alias(libs.plugins.ksp) alias(libs.plugins.hilt) alias(libs.plugins.kotlin.parcelize) alias(libs.plugins.compose.compiler) @@ -146,7 +146,7 @@ dependencies { implementation(libs.hilt.android) implementation(libs.glide.compose) - kapt(libs.hilt.compiler) + ksp(libs.hilt.compiler) testImplementation(libs.junit) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/interop/ComposeWithOtherLibraries.kt b/compose/snippets/src/main/java/com/example/compose/snippets/interop/ComposeWithOtherLibraries.kt index fe5320680..0b3b7467c 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/interop/ComposeWithOtherLibraries.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/interop/ComposeWithOtherLibraries.kt @@ -162,7 +162,7 @@ private object StreamData { } } -private object HiltExample3 { +object HiltExample3 { // [START android_compose_libraries_hilt_3] @HiltViewModel class MyViewModel @Inject constructor( @@ -180,7 +180,7 @@ private object HiltExample3 { interface ExampleRepository } -private object HiltViewModel { +object HiltViewModel { @HiltViewModel class MyViewModel @Inject constructor() : ViewModel() { /* ... */ } // [START android_compose_libraries_hilt_viewmodel] @@ -207,7 +207,7 @@ private object HiltViewModel { } } -private object HiltViewModelBackStack { +object HiltViewModelBackStack { @HiltViewModel class MyViewModel @Inject constructor() : ViewModel() { /* ... */ } @@ -273,7 +273,7 @@ private object MapsExample { cameraPositionState = cameraPositionState ) { Marker( - state = MarkerState(position = singapore), + state = remember { MarkerState(position = singapore) }, title = "Singapore", snippet = "Marker in Singapore" ) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt index 976d7ac73..dca1a2b02 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt @@ -180,18 +180,18 @@ fun rememberFirebaseAnalytics(user: User): FirebaseAnalytics { } // [END android_compose_side_effects_sideeffect] +// b/368420773 +@Suppress("ProduceStateDoesNotAssignValue") // [START android_compose_side_effects_producestate] @Composable fun loadNetworkImage( url: String, imageRepository: ImageRepository = ImageRepository() ): State> { - // Creates a State with Result.Loading as initial value // If either `url` or `imageRepository` changes, the running producer // will cancel and will be re-launched with the new inputs. return produceState>(initialValue = Result.Loading, url, imageRepository) { - // In a coroutine, can make suspend calls val image = imageRepository.load(url) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5b8ae6592..b3b72fb4e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,9 +1,9 @@ [versions] -accompanist = "0.34.0" -androidGradlePlugin = "8.4.2" +accompanist = "0.36.0" +androidGradlePlugin = "8.6.1" androidx-activity-compose = "1.9.2" androidx-appcompat = "1.7.0" -androidx-compose-bom = "2024.09.00" +androidx-compose-bom = "2024.09.02" androidx-compose-ui-test = "1.7.0-alpha08" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" @@ -12,45 +12,44 @@ androidx-corektx = "1.13.1" androidx-emoji2-views = "1.5.0" androidx-fragment-ktx = "1.8.3" androidx-glance-appwidget = "1.1.0" -androidx-lifecycle-compose = "2.8.5" -androidx-lifecycle-runtime-compose = "2.8.5" -androidx-navigation = "2.8.0" +androidx-lifecycle-compose = "2.8.6" +androidx-lifecycle-runtime-compose = "2.8.6" +androidx-navigation = "2.8.1" androidx-paging = "3.3.2" androidx-test = "1.6.1" -androidx-test-espresso = "3.5.1" +androidx-test-espresso = "3.6.1" androidx-window = "1.3.0" androidxHiltNavigationCompose = "1.2.0" -coil = "2.6.0" +coil = "2.7.0" # @keep compileSdk = "34" +compose-latest = "1.7.2" +composeUiTooling = "1.4.0" coreSplashscreen = "1.0.1" -compose-latest = "1.7.0" coroutines = "1.7.3" -google-maps = "18.2.0" +glide = "1.0.0-beta01" +google-maps = "19.0.0" gradle-versions = "0.51.0" -hilt = "2.50" -horologist = "0.5.24" +hilt = "2.52" +horologist = "0.6.19" junit = "4.13.2" -kotlin = "2.0.0" -kotlinxSerializationJson = "1.6.3" - -ksp = "1.8.0-1.0.9" -maps-compose = "4.3.2" -material = "1.4.0-beta01" +kotlin = "2.0.20" +kotlinxSerializationJson = "1.7.3" +ksp = "2.0.20-1.0.25" +maps-compose = "6.1.2" +material = "1.13.0-alpha06" material3-adaptive = "1.0.0" material3-adaptive-navigation-suite = "1.3.0" -media3 = "1.3.1" +media3 = "1.4.1" # @keep minSdk = "21" playServicesWearable = "18.2.0" recyclerview = "1.3.2" # @keep targetSdk = "34" -version-catalog-update = "0.8.3" +version-catalog-update = "0.8.4" wearComposeFoundation = "1.4.0" wearComposeMaterial = "1.4.0" -composeUiTooling = "1.4.0" -glide= "1.0.0-beta01" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } @@ -60,7 +59,7 @@ accompanist-theme-adapter-material = { module = "com.google.accompanist:accompan accompanist-theme-adapter-material3 = { module = "com.google.accompanist:accompanist-themeadapter-material3", version.ref = "accompanist" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } -androidx-compose-animation-graphics = { module = "androidx.compose.animation:animation-graphics" , version.ref = "compose-latest" } +androidx-compose-animation-graphics = { module = "androidx.compose.animation:animation-graphics", version.ref = "compose-latest" } androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "androidx-compose-bom" } androidx-compose-foundation = { module = "androidx.compose.foundation:foundation", version.ref = "compose-latest" } androidx-compose-foundation-layout = { module = "androidx.compose.foundation:foundation-layout", version.ref = "compose-latest" } @@ -76,7 +75,6 @@ androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" } androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" } androidx-compose-ui = { module = "androidx.compose.ui:ui", version.ref = "compose-latest" } androidx-compose-ui-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" } -androidx-graphics-shapes = "androidx.graphics:graphics-shapes:1.0.0-rc01" androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } @@ -94,22 +92,28 @@ androidx-emoji2-views = { module = "androidx.emoji2:emoji2-views", version.ref = androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment-ktx" } androidx-glance-appwidget = { module = "androidx.glance:glance-appwidget", version.ref = "androidx-glance-appwidget" } androidx-glance-material3 = { module = "androidx.glance:glance-material3", version.ref = "androidx-glance-appwidget" } +androidx-graphics-shapes = "androidx.graphics:graphics-shapes:1.0.1" androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "androidxHiltNavigationCompose" } -androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidx-lifecycle-compose" } +androidx-lifecycle-runtime = "androidx.lifecycle:lifecycle-runtime-ktx:2.8.5" androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle-runtime-compose" } androidx-lifecycle-viewModelCompose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle-compose" } androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle-compose" } +androidx-material-icons-core = { module = "androidx.compose.material:material-icons-core" } +androidx-media3-common = { module = "androidx.media3:media3-common", version.ref = "media3" } +androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "media3" } androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "androidx-navigation" } androidx-paging-compose = { module = "androidx.paging:paging-compose", version.ref = "androidx-paging" } androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" } androidx-test-core = { module = "androidx.test:core", version.ref = "androidx-test" } androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-test-espresso" } -androidx-test-runner = "androidx.test:runner:1.5.2" +androidx-test-runner = "androidx.test:runner:1.6.2" androidx-window-core = { module = "androidx.window:window-core", version.ref = "androidx-window" } -androidx-work-runtime-ktx = "androidx.work:work-runtime-ktx:2.9.0" +androidx-work-runtime-ktx = "androidx.work:work-runtime-ktx:2.9.1" coil-kt-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } compose-foundation = { module = "androidx.wear.compose:compose-foundation", version.ref = "wearComposeFoundation" } compose-material = { module = "androidx.wear.compose:compose-material", version.ref = "wearComposeMaterial" } +compose-ui-tooling = { module = "androidx.wear.compose:compose-ui-tooling", version.ref = "composeUiTooling" } +glide-compose = { module = "com.github.bumptech.glide:compose", version.ref = "glide" } google-android-material = { module = "com.google.android.material:material", version.ref = "material" } googlemaps-compose = { module = "com.google.maps.android:maps-compose", version.ref = "maps-compose" } googlemaps-maps = { module = "com.google.android.gms:play-services-maps", version.ref = "google-maps" } @@ -120,14 +124,9 @@ horologist-compose-material = { module = "com.google.android.horologist:horologi junit = { module = "junit:junit", version.ref = "junit" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } -kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } -kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } -androidx-media3-common = { group = "androidx.media3", name = "media3-common", version.ref = "media3" } -androidx-media3-exoplayer = { group = "androidx.media3", name = "media3-exoplayer", version.ref = "media3" } +kotlinx-coroutines-test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0" +kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } play-services-wearable = { module = "com.google.android.gms:play-services-wearable", version.ref = "playServicesWearable" } -compose-ui-tooling = { group = "androidx.wear.compose", name = "compose-ui-tooling", version.ref = "composeUiTooling" } -androidx-material-icons-core = { module = "androidx.compose.material:material-icons-core" } -glide-compose = { module = "com.github.bumptech.glide:compose" , version.ref = "glide"} [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } @@ -135,8 +134,8 @@ android-library = { id = "com.android.library", version.ref = "androidGradlePlug compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } gradle-versions = { id = "com.github.ben-manes.versions", version.ref = "gradle-versions" } hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } -kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } version-catalog-update = { id = "nl.littlerobots.version-catalog-update", version.ref = "version-catalog-update" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 033e24c4cdf41af1ab109bc7f253b2b887023340..e6441136f3d4ba8a0da8d277868979cfbc8ad796 100644 GIT binary patch literal 43453 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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

NnX)EH+Nua)3Y(c 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≫L+crb^Bz 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 /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -144,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -201,11 +202,11 @@ fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/gradlew.bat b/gradlew.bat index 6689b85be..7101f8e46 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -43,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail From 3d6012a419fbdf760805b4732b51c20f603d373e Mon Sep 17 00:00:00 2001 From: Ben Trengrove Date: Fri, 20 Sep 2024 12:14:51 -0700 Subject: [PATCH 264/463] Add a scope (#354) --- .../snippets/mentalmodel/ThinkingInComposeSnippets.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/mentalmodel/ThinkingInComposeSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/mentalmodel/ThinkingInComposeSnippets.kt index eb4e4daca..9c029ccda 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/mentalmodel/ThinkingInComposeSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/mentalmodel/ThinkingInComposeSnippets.kt @@ -25,6 +25,7 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material3.Button +import androidx.compose.material3.Card import androidx.compose.material3.Checkbox import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme @@ -108,15 +109,16 @@ fun ListComposable(myList: List) { // [START android_compose_thinking_in_compose_incorrect] @Composable -@Deprecated("Example with bug") fun ListWithBug(myList: List) { var items = 0 Row(horizontalArrangement = Arrangement.SpaceBetween) { Column { for (item in myList) { - Text("Item: $item") - items++ // Avoid! Side-effect of the column recomposing. + Card { + Text("Item: $item") + items++ // Avoid! Side-effect of the column recomposing. + } } } Text("Count: $items") From 690333ba3d7dced0606441c81b97c4114b217046 Mon Sep 17 00:00:00 2001 From: dmail Date: Mon, 23 Sep 2024 10:33:38 -0700 Subject: [PATCH 265/463] Adds region tags for includecode widget. --- .../example/compose/snippets/lists/ListWithMultipleItemTypes.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt index 1e488caf0..e455052e0 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt @@ -21,6 +21,7 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.runtime.Composable import org.w3c.dom.Text +// [START android_compose_lists_multiple_item_types] @Composable fun ListWithMultipleItems(messages: List) { LazyColumn { @@ -48,3 +49,4 @@ fun TextMessage(message: Text) { } data class SampleMessage(val text: String, val content: Any) +// [END android_compose_lists_multiple_item_types] \ No newline at end of file From 936b62b2e889b44d637873d59f7c25f74fad309f Mon Sep 17 00:00:00 2001 From: thedmail Date: Mon, 23 Sep 2024 17:35:29 +0000 Subject: [PATCH 266/463] Apply Spotless --- .../example/compose/snippets/lists/ListWithMultipleItemTypes.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt index e455052e0..6e0fe575f 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt @@ -49,4 +49,4 @@ fun TextMessage(message: Text) { } data class SampleMessage(val text: String, val content: Any) -// [END android_compose_lists_multiple_item_types] \ No newline at end of file +// [END android_compose_lists_multiple_item_types] From 65fb7b5f6b0757d2cb9b83ab95e69cb710d7f2c1 Mon Sep 17 00:00:00 2001 From: dmail Date: Mon, 23 Sep 2024 10:46:23 -0700 Subject: [PATCH 267/463] Corrects region tags for includecode widget. --- .../com/example/compose/snippets/lists/LazyListSnippets.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index a89fb29c4..8ac681b5c 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -750,7 +750,7 @@ private val randomSizedPhotos = listOf( randomSampleImageUrl(width = 1600, height = 900), randomSampleImageUrl(width = 500, height = 500), ) -// [START android_compose_layouts_lazily_load_list] +// [START android_compose_lists_lazily_load_list] @Composable fun MessageList(modifier: Modifier, pager: Pager) { @@ -795,4 +795,4 @@ fun MessageList(modifier: Modifier, } } } -// [END android_compose_layouts_lazily_load_list] \ No newline at end of file +// [END android_compose_lists_lazily_load_list] \ No newline at end of file From f2892d3b6db49965656a73e06b080640116a169a Mon Sep 17 00:00:00 2001 From: dmail Date: Mon, 23 Sep 2024 10:51:04 -0700 Subject: [PATCH 268/463] Gets rid of pop()'s. --- .../java/com/example/compose/snippets/text/TextSnippets.kt | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index 270ecc8b1..b2f51bfe2 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -561,9 +561,8 @@ fun AnnotatedStringWithLinkSample() { ) ) { append("Android Developers ") - pop() - append("website, and check out the" ) } + append("website, and check out the" ) withLink( LinkAnnotation.Url( "https://developer.android.com/jetpack/compose", @@ -571,10 +570,8 @@ fun AnnotatedStringWithLinkSample() { ) ) { append("Compose guidance") - pop() - append(".") - pop() } + append(".") } ) } From 8feca8d85edab269eb9031777bfc4874658c0541 Mon Sep 17 00:00:00 2001 From: dmail Date: Mon, 23 Sep 2024 10:52:51 -0700 Subject: [PATCH 269/463] Gets rid of pop()'s. --- .../java/com/example/compose/snippets/text/TextSnippets.kt | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index 270ecc8b1..b2f51bfe2 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -561,9 +561,8 @@ fun AnnotatedStringWithLinkSample() { ) ) { append("Android Developers ") - pop() - append("website, and check out the" ) } + append("website, and check out the" ) withLink( LinkAnnotation.Url( "https://developer.android.com/jetpack/compose", @@ -571,10 +570,8 @@ fun AnnotatedStringWithLinkSample() { ) ) { append("Compose guidance") - pop() - append(".") - pop() } + append(".") } ) } From 8b542c0dd5582e1316f2f03a199c0f21da2ab8d5 Mon Sep 17 00:00:00 2001 From: dmail Date: Tue, 24 Sep 2024 18:48:42 -0700 Subject: [PATCH 270/463] Fixes malformed region tags. --- .../example/compose/snippets/animations/AnimationSnippets.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt index a7e967a76..7aeff5d89 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt @@ -824,6 +824,7 @@ private fun Expanded() { private fun ContentIcon() { } +// [START android_compose_animations_vector_char_by_char] @Composable private fun AnimatedText() { val text = "This text animates as though it is being typed \uD83E\uDDDE\u200D♀\uFE0F \uD83D\uDD10 \uD83D\uDC69\u200D❤\uFE0F\u200D\uD83D\uDC68 \uD83D\uDC74\uD83C\uDFFD" @@ -856,5 +857,5 @@ private fun AnimatedText() { } } Text(substringText) -// [END android_compose_animations_animate_char_by_char +// [END android_compose_animations_animate_char_by_char] } From 50b646e8759a7ce34718bda0ca49fd66744fc90d Mon Sep 17 00:00:00 2001 From: dmail Date: Tue, 24 Sep 2024 19:20:32 -0700 Subject: [PATCH 271/463] Adds code snippet for https://developer.android.com/quick-guides/content/display-nested-list?hl=en --- .../snippets/lists/LazyListSnippets.kt | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index 908939322..01a3c8f4b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -23,6 +23,7 @@ import androidx.compose.animation.core.Spring import androidx.compose.animation.core.spring import androidx.compose.animation.core.tween import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.border import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -33,11 +34,14 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.GridItemSpan +import androidx.compose.foundation.lazy.grid.LazyHorizontalGrid import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.lazy.items @@ -58,6 +62,7 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Density @@ -68,11 +73,11 @@ import androidx.paging.compose.itemKey import coil.compose.AsyncImage import coil.compose.rememberAsyncImagePainter import com.example.compose.snippets.util.randomSampleImageUrl -import kotlin.random.Random import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch +import kotlin.random.Random private object ListsSnippetsColumn { // [START android_compose_layouts_list_column] @@ -772,3 +777,29 @@ fun MessageList(modifier: Modifier = Modifier) { } } // [END android_compose_lists_snap_scroll_button] + +// [START android_compose_layout_scrollable_grid] +@Composable +fun ScrollingGrid() { + val itemsList = (0..15).toList() + + val itemModifier = Modifier + .border(1.dp, Color.Blue) + .width(80.dp) + .wrapContentSize() + + LazyHorizontalGrid( + rows = GridCells.Fixed(3), + horizontalArrangement = Arrangement.spacedBy(16.dp), + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + items(itemsList) { + Text("Item is $it", itemModifier) + } + + item { + Text("Single item", itemModifier) + } + } +} +// [END android_compose_layout_scrollable_grid] \ No newline at end of file From 582a23538c43507cac368a08caa1d7abe1dad734 Mon Sep 17 00:00:00 2001 From: thedmail Date: Wed, 25 Sep 2024 02:24:01 +0000 Subject: [PATCH 272/463] Apply Spotless --- .../com/example/compose/snippets/lists/LazyListSnippets.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index 01a3c8f4b..09959ead1 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -73,11 +73,11 @@ import androidx.paging.compose.itemKey import coil.compose.AsyncImage import coil.compose.rememberAsyncImagePainter import com.example.compose.snippets.util.randomSampleImageUrl +import kotlin.random.Random import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch -import kotlin.random.Random private object ListsSnippetsColumn { // [START android_compose_layouts_list_column] @@ -802,4 +802,4 @@ fun ScrollingGrid() { } } } -// [END android_compose_layout_scrollable_grid] \ No newline at end of file +// [END android_compose_layout_scrollable_grid] From e741dc47b15421323b0608f735fe00d3973fed8a Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Wed, 25 Sep 2024 08:42:42 +0100 Subject: [PATCH 273/463] Fix spotless --- .../example/compose/snippets/text/TextSnippets.kt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index b2f51bfe2..9b8cde635 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -562,7 +562,7 @@ fun AnnotatedStringWithLinkSample() { ) { append("Android Developers ") } - append("website, and check out the" ) + append("website, and check out the") withLink( LinkAnnotation.Url( "https://developer.android.com/jetpack/compose", @@ -571,7 +571,7 @@ fun AnnotatedStringWithLinkSample() { ) { append("Compose guidance") } - append(".") + append(".") } ) } @@ -602,7 +602,7 @@ fun AnnotatedStringWithListenerSample() { // [END android_compose_text_link_2] @Composable -private fun TextSample(samples: MapUnit>) { +private fun TextSample(samples: Map Unit>) { MaterialTheme { Box( Modifier @@ -633,9 +633,10 @@ private fun TextSample(samples: MapUnit>) { private const val SAMPLE_LONG_TEXT = "Jetpack Compose is Android’s modern toolkit for building native UI. " + - "It simplifies and accelerates UI development on Android bringing your apps " + - "to life with less code, powerful tools, and intuitive Kotlin APIs. " + - "It makes building Android UI faster and easier." + "It simplifies and accelerates UI development on Android bringing your apps " + + "to life with less code, powerful tools, and intuitive Kotlin APIs. " + + "It makes building Android UI faster and easier." + @Composable @Preview fun LineBreakSample() { From e646af5435361fdc6b49e9de3ec8b9a39936fde1 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Wed, 25 Sep 2024 09:22:20 +0100 Subject: [PATCH 274/463] Fix spotless --- .../java/com/example/compose/snippets/text/TextSnippets.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index 9b8cde635..ff035446e 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -633,9 +633,9 @@ private fun TextSample(samples: Map Unit>) { private const val SAMPLE_LONG_TEXT = "Jetpack Compose is Android’s modern toolkit for building native UI. " + - "It simplifies and accelerates UI development on Android bringing your apps " + - "to life with less code, powerful tools, and intuitive Kotlin APIs. " + - "It makes building Android UI faster and easier." + "It simplifies and accelerates UI development on Android bringing your apps " + + "to life with less code, powerful tools, and intuitive Kotlin APIs. " + + "It makes building Android UI faster and easier." @Composable @Preview From 4d0bd1f2933fc73f4d027923f3a6a57bce475ed6 Mon Sep 17 00:00:00 2001 From: dmail Date: Wed, 25 Sep 2024 13:28:11 -0700 Subject: [PATCH 275/463] Fixes region tags. --- .../compose/snippets/animations/AnimationSnippets.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt index c69afd451..9e915a62b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt @@ -109,9 +109,9 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.IntSize import androidx.compose.ui.unit.dp import com.example.compose.snippets.R +import kotlinx.coroutines.delay import java.text.BreakIterator import java.text.StringCharacterIterator -import kotlinx.coroutines.delay /* * Copyright 2023 The Android Open Source Project @@ -824,7 +824,7 @@ private fun Expanded() { private fun ContentIcon() { } -// [START android_compose_animations_vector_char_by_char] +// [START android_compose_animations_char_by_char] @Composable private fun AnimatedText() { val text = "This text animates as though it is being typed \uD83E\uDDDE\u200D♀\uFE0F \uD83D\uDD10 \uD83D\uDC69\u200D❤\uFE0F\u200D\uD83D\uDC68 \uD83D\uDC74\uD83C\uDFFD" @@ -857,5 +857,5 @@ private fun AnimatedText() { } } Text(substringText) -// [END android_compose_animations_animate_char_by_char] +// [END android_compose_animations_char_by_char] } From c5c65e1675386c0ad31870f1fe345e93573ec7f0 Mon Sep 17 00:00:00 2001 From: thedmail Date: Wed, 25 Sep 2024 20:29:54 +0000 Subject: [PATCH 276/463] Apply Spotless --- .../example/compose/snippets/animations/AnimationSnippets.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt index 9e915a62b..38a1eb44d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt @@ -109,9 +109,9 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.IntSize import androidx.compose.ui.unit.dp import com.example.compose.snippets.R -import kotlinx.coroutines.delay import java.text.BreakIterator import java.text.StringCharacterIterator +import kotlinx.coroutines.delay /* * Copyright 2023 The Android Open Source Project From f1ba73ab0baac78004d44711bb6694127222a272 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Fri, 27 Sep 2024 12:20:37 +0100 Subject: [PATCH 277/463] Added sender and text to Message class. --- .../example/compose/snippets/lists/LazyListSnippets.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index a89fb29c4..998ae970a 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -682,7 +682,7 @@ fun LazyStaggeredGridSnippetFixed() { ) // [END android_compose_layouts_lazy_staggered_grid_fixed] } -class Message(val id: Long) +class Message(val id: Long, val sender: String, val text: String) private class Item private data class Contact(val firstName: String) @@ -783,14 +783,14 @@ fun MessageList(modifier: Modifier, @Composable fun MessageRow(modifier: Modifier, - message: Text) { + message: Message) { Card(modifier = Modifier.padding(8.dp)) { Column( modifier = Modifier.padding(8.dp), verticalArrangement = Arrangement.Center ) { - // Text(message.sender), where "message" is an object with a sender property - // Text(message.text), where "text" is an object with a text property + Text(message.sender) + Text(message.text) } } } From 4b1c549d8993b9053668ef82b4bd7bde323f10fb Mon Sep 17 00:00:00 2001 From: riggaroo Date: Fri, 27 Sep 2024 11:26:11 +0000 Subject: [PATCH 278/463] Apply Spotless --- .../compose/snippets/lists/LazyListSnippets.kt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index b6d4aaad5..b41ca5942 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -76,12 +76,12 @@ import androidx.paging.compose.itemKey import coil.compose.AsyncImage import coil.compose.rememberAsyncImagePainter import com.example.compose.snippets.util.randomSampleImageUrl +import kotlin.random.Random import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import org.w3c.dom.Text -import kotlin.random.Random private object ListsSnippetsColumn { // [START android_compose_layouts_list_column] @@ -758,8 +758,10 @@ private val randomSizedPhotos = listOf( ) // [START android_compose_layouts_lazily_load_list] @Composable -fun MessageList(modifier: Modifier, - pager: Pager) { +fun MessageList( + modifier: Modifier, + pager: Pager +) { val lazyPagingItems = pager.flow.collectAsLazyPagingItems() LazyColumn { @@ -787,8 +789,10 @@ fun MessageList(modifier: Modifier, } @Composable - fun MessageRow(modifier: Modifier, - message: Message) { + fun MessageRow( + modifier: Modifier, + message: Message + ) { Card(modifier = Modifier.padding(8.dp)) { Column( modifier = Modifier.padding(8.dp), From d21cdce74634f550d94b319626be06d281d82e61 Mon Sep 17 00:00:00 2001 From: dmail Date: Fri, 27 Sep 2024 14:21:54 -0700 Subject: [PATCH 279/463] Fixes region tags. --- .../java/com/example/compose/snippets/text/TextSnippets.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index ea2a9e315..e06ffbfc1 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -856,7 +856,7 @@ private val firaSansFamily = FontFamily() val LightBlue = Color(0xFF0066FF) val Purple = Color(0xFF800080) -// [START android_compose_text_auto_format_phone_number_showhidepassword] +// [START android_compose_text_showhidepassword] @Composable fun PasswordTextField() { var password by rememberSaveable { mutableStateOf("") } @@ -887,4 +887,4 @@ fun PasswordTextField() { } ) } -// [END android_compose_text_auto_format_phone_number_showhidepassword] +// [END android_compose_text_showhidepassword] From eb6b518d0f00e4c34e1baea7c9ec092a39435386 Mon Sep 17 00:00:00 2001 From: thedmail Date: Tue, 1 Oct 2024 05:20:43 -0700 Subject: [PATCH 280/463] Validate input (#347) * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Apply Spotless * Fix email input snippet * Apply Spotless --------- Co-authored-by: thedmail Co-authored-by: Rebecca Franks Co-authored-by: riggaroo --- .../compose/snippets/text/TextSnippets.kt | 60 ++++++++++++++++++- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index e06ffbfc1..6a2f94ea1 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -18,6 +18,7 @@ package com.example.compose.snippets.text +import android.graphics.Typeface import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.background import androidx.compose.foundation.basicMarquee @@ -43,6 +44,7 @@ import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.material3.TextField import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -86,6 +88,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.em import androidx.compose.ui.unit.sp import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewmodel.compose.viewModel /** * This file lets DevRel track changes to snippets present in @@ -523,7 +526,7 @@ private object TextEffectiveStateManagement1 { private object TextEffectiveStateManagement2 { class UserRepository - val viewModel = SignUpViewModel(UserRepository()) + private val viewModel = SignUpViewModel(UserRepository()) // [START android_compose_text_state_management] // SignUpViewModel.kt @@ -851,7 +854,7 @@ class NanpVisualTransformation() : VisualTransformation { } // [END android_compose_text_auto_format_phone_number_transformtext] -private val firaSansFamily = FontFamily() +private val firaSansFamily = FontFamily(typeface = Typeface.DEFAULT) val LightBlue = Color(0xFF0066FF) val Purple = Color(0xFF800080) @@ -888,3 +891,56 @@ fun PasswordTextField() { ) } // [END android_compose_text_showhidepassword] + +// [START android_compose_text_auto_format_phone_number_validatetext] +class EmailViewModel : ViewModel() { + var email by mutableStateOf("") + private set + + val emailHasErrors by derivedStateOf { + if (email.isNotEmpty()) { + // Email is considered erroneous until it completely matches EMAIL_ADDRESS. + !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches() + } else { + false + } + } + + fun updateEmail(input: String) { + email = input + } +} + +@Composable +fun ValidatingInputTextField( + email: String, + updateState: (String) -> Unit, + validatorHasErrors: Boolean +) { + OutlinedTextField( + modifier = Modifier + .fillMaxWidth() + .padding(10.dp), + value = email, + onValueChange = updateState, + label = { Text("Email") }, + isError = validatorHasErrors, + supportingText = { + if (validatorHasErrors) { + Text("Incorrect email format.") + } + } + ) +} + +@Preview +@Composable +fun ValidateInput() { + val emailViewModel: EmailViewModel = viewModel() + ValidatingInputTextField( + email = emailViewModel.email, + updateState = { input -> emailViewModel.updateEmail(input) }, + validatorHasErrors = emailViewModel.emailHasErrors + ) +} +// [END android_compose_text_auto_format_phone_number_validatetext] From 2db5704d9956b68bf74b4aaedbcffd64b4391eb7 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 1 Oct 2024 15:12:41 +0100 Subject: [PATCH 281/463] Password update to use BasicSecureTextField (#357) * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Apply Spotless * Fix email input snippet * Migrate to use BasicSecureTextField. * Updated to use BasicSecureTextField. * Apply Spotless * Apply Spotless --------- Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo --- .../compose/snippets/text/TextSnippets.kt | 63 ++++++++++++------- 1 file changed, 40 insertions(+), 23 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index 6a2f94ea1..5973733a5 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -30,8 +30,13 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.requiredSize import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.BasicSecureTextField import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.foundation.text.input.TextFieldState +import androidx.compose.foundation.text.input.TextObfuscationMode import androidx.compose.foundation.text.selection.DisableSelection import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.material.icons.Icons @@ -812,7 +817,7 @@ fun PhoneNumber() { // [END android_compose_text_auto_format_phone_number_textfieldconfig] // [START android_compose_text_auto_format_phone_number_transformtext] -class NanpVisualTransformation() : VisualTransformation { +class NanpVisualTransformation : VisualTransformation { override fun filter(text: AnnotatedString): TransformedText { val trimmed = if (text.text.length >= 10) text.text.substring(0..9) else text.text @@ -862,31 +867,43 @@ val Purple = Color(0xFF800080) // [START android_compose_text_showhidepassword] @Composable fun PasswordTextField() { - var password by rememberSaveable { mutableStateOf("") } + val state = remember { TextFieldState() } var showPassword by remember { mutableStateOf(false) } - val passwordVisualTransformation = remember { PasswordVisualTransformation() } - - TextField( - value = password, - onValueChange = { password = it }, - label = { Text("Enter password") }, - visualTransformation = if (showPassword) { - VisualTransformation.None + BasicSecureTextField( + state = state, + textObfuscationMode = + if (showPassword) { + TextObfuscationMode.Visible } else { - passwordVisualTransformation + TextObfuscationMode.RevealLastTyped }, - keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password), - modifier = Modifier.fillMaxWidth(), - trailingIcon = { - Icon( - if (showPassword) { - Icons.Filled.Visibility - } else { - Icons.Filled.VisibilityOff - }, - contentDescription = "Toggle password visibility", - modifier = Modifier.clickable { showPassword = !showPassword } - ) + modifier = Modifier + .fillMaxWidth() + .padding(6.dp) + .border(1.dp, Color.LightGray, RoundedCornerShape(6.dp)) + .padding(6.dp), + decorator = { innerTextField -> + Box(modifier = Modifier.fillMaxWidth()) { + Box( + modifier = Modifier + .align(Alignment.CenterStart) + .padding(start = 16.dp, end = 48.dp) + ) { + innerTextField() + } + Icon( + if (showPassword) { + Icons.Filled.Visibility + } else { + Icons.Filled.VisibilityOff + }, + contentDescription = "Toggle password visibility", + modifier = Modifier + .align(Alignment.CenterEnd) + .requiredSize(48.dp).padding(16.dp) + .clickable { showPassword = !showPassword } + ) + } } ) } From 31b4de25dcfe883c3591790ebb1006c40a9c9add Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Wed, 2 Oct 2024 09:12:37 +0100 Subject: [PATCH 282/463] Added two snippets for showcasing how to do Masking and Clipping in Compose (#362) * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Apply Spotless * Fix email input snippet * Migrate to use BasicSecureTextField. * Updated to use BasicSecureTextField. * Added clipping and faded edge examples * Apply Spotless * Clean up snippet * Clean up snippet --------- Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo --- .../graphics/GraphicsModifiersSnippets.kt | 475 ++++++++++++------ 1 file changed, 331 insertions(+), 144 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/GraphicsModifiersSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/GraphicsModifiersSnippets.kt index ef00faecc..0493012ed 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/GraphicsModifiersSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/GraphicsModifiersSnippets.kt @@ -16,15 +16,26 @@ package com.example.compose.snippets.graphics +import androidx.compose.foundation.Canvas import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.gestures.detectDragGestures import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.wrapContentSize +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Text @@ -42,21 +53,33 @@ import androidx.compose.ui.draw.drawWithCache import androidx.compose.ui.draw.drawWithContent import androidx.compose.ui.geometry.CornerRadius import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.geometry.center +import androidx.compose.ui.graphics.BlendMode import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.CompositingStrategy +import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.graphics.TransformOrigin import androidx.compose.ui.graphics.drawscope.ContentDrawScope +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.graphics.drawscope.Stroke +import androidx.compose.ui.graphics.drawscope.clipPath import androidx.compose.ui.graphics.drawscope.scale import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.onSizeChanged +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.compose.snippets.R +import kotlin.random.Random /* * Copyright 2022 The Android Open Source Project @@ -296,171 +319,170 @@ fun ModifierGraphicsLayerAlpha() { @Preview @Composable fun ModifierGraphicsLayerCompositingStrategy() { - /* Commented out until compositing Strategy is rolled out to production - // [START android_compose_graphics_modifiers_graphicsLayer_compositing_strategy] - - Image(painter = painterResource(id = R.drawable.dog), - contentDescription = "Dog", - contentScale = ContentScale.Crop, - modifier = Modifier - .size(120.dp) - .aspectRatio(1f) - .background( - Brush.linearGradient( - listOf( - Color(0xFFC5E1A5), - Color(0xFF80DEEA) - ) - ) - ) - .padding(8.dp) - .graphicsLayer { - compositingStrategy = CompositingStrategy.Offscreen - } - .drawWithCache { - val path = Path() - path.addOval( - Rect( - topLeft = Offset.Zero, - bottomRight = Offset(size.width, size.height) - ) - ) - onDrawWithContent { - clipPath(path) { - // this draws the actual image - if you don't call drawContent, it wont - // render anything - this@onDrawWithContent.drawContent() - } - val dotSize = size.width / 8f - // Clip a white border for the content - drawCircle( - Color.Black, - radius = dotSize, - center = Offset( - x = size.width - dotSize, - y = size.height - dotSize - ), - blendMode = BlendMode.Clear - ) - // draw the red circle indication - drawCircle( - Color(0xFFEF5350), radius = dotSize * 0.8f, - center = Offset( - x = size.width - dotSize, - y = size.height - dotSize - ) - ) - } - - } - ) - // [END android_compose_graphics_modifiers_graphicsLayer_compositing_strategy] - */ + // [START android_compose_graphics_modifiers_graphicsLayer_compositing_strategy] + + Image( + painter = painterResource(id = R.drawable.dog), + contentDescription = "Dog", + contentScale = ContentScale.Crop, + modifier = Modifier + .size(120.dp) + .aspectRatio(1f) + .background( + Brush.linearGradient( + listOf( + Color(0xFFC5E1A5), + Color(0xFF80DEEA) + ) + ) + ) + .padding(8.dp) + .graphicsLayer { + compositingStrategy = CompositingStrategy.Offscreen + } + .drawWithCache { + val path = Path() + path.addOval( + Rect( + topLeft = Offset.Zero, + bottomRight = Offset(size.width, size.height) + ) + ) + onDrawWithContent { + clipPath(path) { + // this draws the actual image - if you don't call drawContent, it wont + // render anything + this@onDrawWithContent.drawContent() + } + val dotSize = size.width / 8f + // Clip a white border for the content + drawCircle( + Color.Black, + radius = dotSize, + center = Offset( + x = size.width - dotSize, + y = size.height - dotSize + ), + blendMode = BlendMode.Clear + ) + // draw the red circle indication + drawCircle( + Color(0xFFEF5350), radius = dotSize * 0.8f, + center = Offset( + x = size.width - dotSize, + y = size.height - dotSize + ) + ) + } + } + ) + // [END android_compose_graphics_modifiers_graphicsLayer_compositing_strategy] } -/* Commented out until compositing Strategy is rolled out to production + @Preview // [START android_compose_graphics_modifier_compositing_strategy_differences] @Composable fun CompositingStrategyExamples() { - Column( - modifier = Modifier - .fillMaxSize() - .wrapContentSize(Alignment.Center) - ) { - /** Does not clip content even with a graphics layer usage here. By default, graphicsLayer - does not allocate + rasterize content into a separate layer but instead is used - for isolation. That is draw invalidations made outside of this graphicsLayer will not - re-record the drawing instructions in this composable as they have not changed **/ - Canvas( - modifier = Modifier - .graphicsLayer() - .size(100.dp) // Note size of 100 dp here - .border(2.dp, color = Color.Blue) - ) { - // ... and drawing a size of 200 dp here outside the bounds - drawRect(color = Color.Magenta, size = Size(200.dp.toPx(), 200.dp.toPx())) - } - - Spacer(modifier = Modifier.size(300.dp)) - - /** Clips content as alpha usage here creates an offscreen buffer to rasterize content - into first then draws to the original destination **/ - Canvas( - modifier = Modifier - // force to an offscreen buffer - .graphicsLayer(compositingStrategy = CompositingStrategy.Offscreen) - .size(100.dp) // Note size of 100 dp here - .border(2.dp, color = Color.Blue) - ) { - /** ... and drawing a size of 200 dp. However, because of the CompositingStrategy.Offscreen usage above, the - content gets clipped **/ - drawRect(color = Color.Red, size = Size(200.dp.toPx(), 200.dp.toPx())) - } - } + Column( + modifier = Modifier + .fillMaxSize() + .wrapContentSize(Alignment.Center) + ) { + // Does not clip content even with a graphics layer usage here. By default, graphicsLayer + // does not allocate + rasterize content into a separate layer but instead is used + // for isolation. That is draw invalidations made outside of this graphicsLayer will not + // re-record the drawing instructions in this composable as they have not changed + Canvas( + modifier = Modifier + .graphicsLayer() + .size(100.dp) // Note size of 100 dp here + .border(2.dp, color = Color.Blue) + ) { + // ... and drawing a size of 200 dp here outside the bounds + drawRect(color = Color.Magenta, size = Size(200.dp.toPx(), 200.dp.toPx())) + } + + Spacer(modifier = Modifier.size(300.dp)) + + /* Clips content as alpha usage here creates an offscreen buffer to rasterize content + into first then draws to the original destination */ + Canvas( + modifier = Modifier + // force to an offscreen buffer + .graphicsLayer(compositingStrategy = CompositingStrategy.Offscreen) + .size(100.dp) // Note size of 100 dp here + .border(2.dp, color = Color.Blue) + ) { + /* ... and drawing a size of 200 dp. However, because of the CompositingStrategy.Offscreen usage above, the + content gets clipped */ + drawRect(color = Color.Red, size = Size(200.dp.toPx(), 200.dp.toPx())) + } + } } // [END android_compose_graphics_modifier_compositing_strategy_differences] - */ -/* Commented out until compositing Strategy is rolled out to production // [START android_compose_graphics_modifier_compositing_strategy_modulate_alpha] @Preview @Composable -fun CompositingStratgey_ModulateAlpha() { - Column( - modifier = Modifier - .fillMaxSize() - .padding(32.dp) - ) { - // Base drawing, no alpha applied - Canvas( - modifier = Modifier.size(200.dp) - ) { - drawSquares() - } - - Spacer(modifier = Modifier.size(36.dp)) - - // Alpha 0.5f applied to whole composable - Canvas(modifier = Modifier - .size(200.dp) - .graphicsLayer { - alpha = 0.5f - }) { - drawSquares() - } - Spacer(modifier = Modifier.size(36.dp)) - - // 0.75f alpha applied to each draw call when using ModulateAlpha - Canvas(modifier = Modifier - .size(200.dp) - .graphicsLayer { - compositingStrategy = CompositingStrategy.ModulateAlpha - alpha = 0.75f - }) { - drawSquares() - } - } +fun CompositingStrategy_ModulateAlpha() { + Column( + modifier = Modifier + .fillMaxSize() + .padding(32.dp) + ) { + // Base drawing, no alpha applied + Canvas( + modifier = Modifier.size(200.dp) + ) { + drawSquares() + } + + Spacer(modifier = Modifier.size(36.dp)) + + // Alpha 0.5f applied to whole composable + Canvas( + modifier = Modifier + .size(200.dp) + .graphicsLayer { + alpha = 0.5f + } + ) { + drawSquares() + } + Spacer(modifier = Modifier.size(36.dp)) + + // 0.75f alpha applied to each draw call when using ModulateAlpha + Canvas( + modifier = Modifier + .size(200.dp) + .graphicsLayer { + compositingStrategy = CompositingStrategy.ModulateAlpha + alpha = 0.75f + } + ) { + drawSquares() + } + } } private fun DrawScope.drawSquares() { - val size = Size(100.dp.toPx(), 100.dp.toPx()) - drawRect(color = Red, size = size) - drawRect( - color = Purple, size = size, - topLeft = Offset(size.width / 4f, size.height / 4f) - ) - drawRect( - color = Yellow, size = size, - topLeft = Offset(size.width / 4f * 2f, size.height / 4f * 2f) - ) + val size = Size(100.dp.toPx(), 100.dp.toPx()) + drawRect(color = Red, size = size) + drawRect( + color = Purple, size = size, + topLeft = Offset(size.width / 4f, size.height / 4f) + ) + drawRect( + color = Yellow, size = size, + topLeft = Offset(size.width / 4f * 2f, size.height / 4f * 2f) + ) } val Purple = Color(0xFF7E57C2) val Yellow = Color(0xFFFFCA28) val Red = Color(0xFFEF5350) // [END android_compose_graphics_modifier_compositing_strategy_modulate_alpha] -*/ // [START android_compose_graphics_modifier_flipped] class FlippedModifier : DrawModifier { @@ -485,3 +507,168 @@ fun ModifierGraphicsFlippedUsage() { ) // [END android_compose_graphics_modifier_flipped_usage] } + +// [START android_compose_graphics_faded_edge_example] +@Composable +fun FadedEdgeBox(modifier: Modifier = Modifier, content: @Composable () -> Unit) { + Box( + modifier = modifier + .graphicsLayer(compositingStrategy = CompositingStrategy.Offscreen) + .drawWithContent { + drawContent() + drawRect( + brush = Brush.verticalGradient( + listOf(Color.Black, Color.Transparent) + ), + blendMode = BlendMode.DstIn + ) + } + ) { + content() + } +} +// [END android_compose_graphics_faded_edge_example] +@Preview +@Composable +private fun FadingLazyComments() { + FadedEdgeBox( + modifier = Modifier + .padding(32.dp) + .height(300.dp) + .fillMaxWidth() + ) { + LazyColumn { + items(listComments, key = { it.key }) { + ListCommentItem(it) + } + item { + Spacer(Modifier.height(100.dp)) + } + } + } +} + +@Composable +private fun ListCommentItem(it: Comment) { + Row(modifier = Modifier.padding(bottom = 8.dp)) { + val strokeWidthPx = with(LocalDensity.current) { + 2.dp.toPx() + } + Avatar(strokeWidth = strokeWidthPx, modifier = Modifier.size(48.dp)) { + Image( + painter = painterResource(id = it.avatar), + contentScale = ContentScale.Crop, + contentDescription = null + ) + } + Spacer(Modifier.width(6.dp)) + Text( + it.text, + fontSize = 20.sp, + modifier = Modifier.align(Alignment.CenterVertically) + ) + } +} + +data class Comment( + val avatar: Int, + val text: String, + val key: Int = Random.nextInt() +) + +val listComments = listOf( + Comment(R.drawable.dog, "Woof 🐶"), + Comment(R.drawable.froyo, "I love ice cream..."), + Comment(R.drawable.donut, "Mmmm delicious"), + Comment(R.drawable.cupcake, "I love cupcakes"), + Comment(R.drawable.gingerbread, "🍪🍪❤️"), + Comment(R.drawable.eclair, "Where do I get the recipe?"), + Comment(R.drawable.froyo, "🍦The ice cream is BEST"), +) + +// [START android_compose_graphics_stacked_clipped_avatars] +@Composable +fun Avatar( + strokeWidth: Float, + modifier: Modifier = Modifier, + content: @Composable () -> Unit +) { + val stroke = remember(strokeWidth) { + Stroke(width = strokeWidth) + } + Box( + modifier = modifier + .drawWithContent { + drawContent() + drawCircle( + Color.Black, + size.minDimension / 2, + size.center, + style = stroke, + blendMode = BlendMode.Clear + ) + } + .clip(CircleShape) + ) { + content() + } +} + +@Preview +@Composable +private fun StackedAvatars() { + Box( + modifier = Modifier + .fillMaxSize() + .background( + Brush.linearGradient( + colors = listOf( + Color.Magenta.copy(alpha = 0.5f), + Color.Blue.copy(alpha = 0.5f) + ) + ) + ) + ) { + val size = 80.dp + val strokeWidth = 2.dp + val strokeWidthPx = with(LocalDensity.current) { + strokeWidth.toPx() + } + val sizeModifier = Modifier.size(size) + val avatars = listOf( + R.drawable.cupcake, + R.drawable.donut, + R.drawable.eclair, + R.drawable.froyo, + R.drawable.gingerbread, + R.drawable.dog + ) + val width = ((size / 2) + strokeWidth * 2) * (avatars.size + 1) + Box( + modifier = Modifier + .size(width, size) + .graphicsLayer { + // Use an offscreen buffer as underdraw protection when + // using blendmodes that clear destination pixels + compositingStrategy = CompositingStrategy.Offscreen + } + .align(Alignment.Center), + ) { + var offset = 0.dp + for (avatar in avatars) { + Avatar( + strokeWidth = strokeWidthPx, + modifier = sizeModifier.offset(offset) + ) { + Image( + painter = painterResource(id = avatar), + contentScale = ContentScale.Crop, + contentDescription = null + ) + } + offset += size / 2 + } + } + } +} +// [END android_compose_graphics_stacked_clipped_avatars] From d1e297bd4e81028e062a48527318d08c3a3e751b Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Thu, 3 Oct 2024 12:11:50 +0100 Subject: [PATCH 283/463] =?UTF-8?q?=F0=9F=A4=96=20Update=20Dependencies=20?= =?UTF-8?q?(#366)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b3b72fb4e..6aed96f52 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,20 +1,20 @@ [versions] accompanist = "0.36.0" -androidGradlePlugin = "8.6.1" +androidGradlePlugin = "8.7.0" androidx-activity-compose = "1.9.2" androidx-appcompat = "1.7.0" -androidx-compose-bom = "2024.09.02" +androidx-compose-bom = "2024.09.03" androidx-compose-ui-test = "1.7.0-alpha08" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" androidx-coordinator-layout = "1.2.0" androidx-corektx = "1.13.1" androidx-emoji2-views = "1.5.0" -androidx-fragment-ktx = "1.8.3" +androidx-fragment-ktx = "1.8.4" androidx-glance-appwidget = "1.1.0" androidx-lifecycle-compose = "2.8.6" androidx-lifecycle-runtime-compose = "2.8.6" -androidx-navigation = "2.8.1" +androidx-navigation = "2.8.2" androidx-paging = "3.3.2" androidx-test = "1.6.1" androidx-test-espresso = "3.6.1" @@ -23,15 +23,15 @@ androidxHiltNavigationCompose = "1.2.0" coil = "2.7.0" # @keep compileSdk = "34" -compose-latest = "1.7.2" +compose-latest = "1.7.3" composeUiTooling = "1.4.0" coreSplashscreen = "1.0.1" -coroutines = "1.7.3" +coroutines = "1.9.0" glide = "1.0.0-beta01" google-maps = "19.0.0" gradle-versions = "0.51.0" hilt = "2.52" -horologist = "0.6.19" +horologist = "0.6.20" junit = "4.13.2" kotlin = "2.0.20" kotlinxSerializationJson = "1.7.3" @@ -94,7 +94,7 @@ androidx-glance-appwidget = { module = "androidx.glance:glance-appwidget", versi androidx-glance-material3 = { module = "androidx.glance:glance-material3", version.ref = "androidx-glance-appwidget" } androidx-graphics-shapes = "androidx.graphics:graphics-shapes:1.0.1" androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "androidxHiltNavigationCompose" } -androidx-lifecycle-runtime = "androidx.lifecycle:lifecycle-runtime-ktx:2.8.5" +androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidx-lifecycle-runtime-compose" } androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle-runtime-compose" } androidx-lifecycle-viewModelCompose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle-compose" } androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle-compose" } @@ -124,7 +124,7 @@ horologist-compose-material = { module = "com.google.android.horologist:horologi junit = { module = "junit:junit", version.ref = "junit" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } -kotlinx-coroutines-test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0" +kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } play-services-wearable = { module = "com.google.android.gms:play-services-wearable", version.ref = "playServicesWearable" } From 0c9024be7705d86edca458dc84f3e47e59996a4a Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Thu, 3 Oct 2024 13:13:13 +0100 Subject: [PATCH 284/463] Add Material Carousel (#363) * Add Carousel * Apply Spotless * add to components * Apply Spotless * Clean up landing screens, using Scaffold and list items. * Apply Spotless * Review comments --------- Co-authored-by: riggaroo --- .../compose/snippets/SnippetsActivity.kt | 2 + .../compose/snippets/components/Carousel.kt | 136 ++++++++++++++++++ .../snippets/components/ComponentsScreen.kt | 52 ++++--- .../compose/snippets/landing/LandingScreen.kt | 57 +++----- .../snippets/navigation/Destination.kt | 1 + 5 files changed, 195 insertions(+), 53 deletions(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/Carousel.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 3979a110b..357cf556f 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -33,6 +33,7 @@ import com.example.compose.snippets.components.AppBarExamples import com.example.compose.snippets.components.BadgeExamples import com.example.compose.snippets.components.ButtonExamples import com.example.compose.snippets.components.CardExamples +import com.example.compose.snippets.components.CarouselExamples import com.example.compose.snippets.components.CheckboxExamples import com.example.compose.snippets.components.ChipExamples import com.example.compose.snippets.components.ComponentsScreen @@ -109,6 +110,7 @@ class SnippetsActivity : ComponentActivity() { TopComponentsDestination.PartialBottomSheet -> PartialBottomSheet() TopComponentsDestination.TimePickerExamples -> TimePickerExamples() TopComponentsDestination.DatePickerExamples -> DatePickerExamples() + TopComponentsDestination.CarouselExamples -> CarouselExamples() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Carousel.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Carousel.kt new file mode 100644 index 000000000..fb8a31775 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Carousel.kt @@ -0,0 +1,136 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.annotation.DrawableRes +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.carousel.HorizontalMultiBrowseCarousel +import androidx.compose.material3.carousel.HorizontalUncontainedCarousel +import androidx.compose.material3.carousel.rememberCarouselState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.example.compose.snippets.R + +@OptIn(ExperimentalMaterial3Api::class) +@Preview +// [START android_compose_carousel_multi_browse_basic] +@Composable +fun CarouselExample_MultiBrowse() { + data class CarouselItem( + val id: Int, + @DrawableRes val imageResId: Int, + val contentDescription: String + ) + + val items = remember { + listOf( + CarouselItem(0, R.drawable.cupcake, "cupcake"), + CarouselItem(1, R.drawable.donut, "donut"), + CarouselItem(2, R.drawable.eclair, "eclair"), + CarouselItem(3, R.drawable.froyo, "froyo"), + CarouselItem(4, R.drawable.gingerbread, "gingerbread"), + ) + } + + HorizontalMultiBrowseCarousel( + state = rememberCarouselState { items.count() }, + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight() + .padding(top = 16.dp, bottom = 16.dp), + preferredItemWidth = 186.dp, + itemSpacing = 8.dp, + contentPadding = PaddingValues(horizontal = 16.dp) + ) { i -> + val item = items[i] + Image( + modifier = Modifier + .height(205.dp) + .maskClip(MaterialTheme.shapes.extraLarge), + painter = painterResource(id = item.imageResId), + contentDescription = item.contentDescription, + contentScale = ContentScale.Crop + ) + } +} +// [END android_compose_carousel_multi_browse_basic] + +@OptIn(ExperimentalMaterial3Api::class) +@Preview +// [START android_compose_carousel_uncontained_basic] +@Composable +fun CarouselExample() { + data class CarouselItem( + val id: Int, + @DrawableRes val imageResId: Int, + val contentDescription: String + ) + + val carouselItems = remember { + listOf( + CarouselItem(0, R.drawable.cupcake, "cupcake"), + CarouselItem(1, R.drawable.donut, "donut"), + CarouselItem(2, R.drawable.eclair, "eclair"), + CarouselItem(3, R.drawable.froyo, "froyo"), + CarouselItem(4, R.drawable.gingerbread, "gingerbread"), + ) + } + + HorizontalUncontainedCarousel( + state = rememberCarouselState { carouselItems.count() }, + modifier = Modifier + .fillMaxWidth() + .wrapContentHeight() + .padding(top = 16.dp, bottom = 16.dp), + itemWidth = 186.dp, + itemSpacing = 8.dp, + contentPadding = PaddingValues(horizontal = 16.dp) + ) { i -> + val item = carouselItems[i] + Image( + modifier = Modifier + .height(205.dp) + .maskClip(MaterialTheme.shapes.extraLarge), + painter = painterResource(id = item.imageResId), + contentDescription = item.contentDescription, + contentScale = ContentScale.Crop + ) + } +} +// [END android_compose_carousel_uncontained_basic] + +@Preview +@Composable +fun CarouselExamples() { + Column { + CarouselExample() + CarouselExample_MultiBrowse() + } +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/ComponentsScreen.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/ComponentsScreen.kt index ce1bbae40..7f87a5c95 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/ComponentsScreen.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/ComponentsScreen.kt @@ -16,45 +16,59 @@ package com.example.compose.snippets.components +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material3.Button +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ListItem +import androidx.compose.material3.Scaffold import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.example.compose.snippets.navigation.TopComponentsDestination +@OptIn(ExperimentalMaterial3Api::class) @Composable fun ComponentsScreen( navigate: (TopComponentsDestination) -> Unit ) { - LazyColumn( - modifier = Modifier - .padding(16.dp) - .fillMaxSize(), - verticalArrangement = Arrangement.spacedBy(8.dp), - horizontalAlignment = Alignment.CenterHorizontally, - ) { - items(TopComponentsDestination.entries) { destination -> - NavigationItem(destination) { - navigate( - destination - ) + Scaffold(topBar = { + TopAppBar(title = { + Text("Common Components") + }) + }, content = { padding -> + LazyColumn( + modifier = Modifier + .padding(padding) + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + items(TopComponentsDestination.entries) { destination -> + NavigationItem(destination) { + navigate( + destination + ) + } } } - } + }) } @Composable fun NavigationItem(destination: TopComponentsDestination, onClick: () -> Unit) { - Button( - onClick = { onClick() } - ) { - Text(destination.title) - } + ListItem( + headlineContent = { + Text(destination.title) + }, + modifier = Modifier.clickable { + onClick() + } + ) } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt b/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt index 79083bd3b..6e6c84019 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt @@ -18,56 +18,45 @@ package com.example.compose.snippets.landing import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ListItem +import androidx.compose.material3.Scaffold import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import com.example.compose.snippets.navigation.Destination +@OptIn(ExperimentalMaterial3Api::class) @Composable fun LandingScreen( navigate: (Destination) -> Unit ) { - Column( - modifier = Modifier - .padding(16.dp) - .fillMaxSize(), - verticalArrangement = Arrangement.spacedBy(24.dp), - ) { - Text( - modifier = Modifier.fillMaxWidth(), - style = TextStyle( - fontSize = 24.sp, - fontWeight = FontWeight.Bold, - textAlign = TextAlign.Center, - ), - text = "Android snippets", - ) - Text( - text = "Use the following buttons to view a selection of the snippets used in the Android documentation." - ) - NavigationItems { navigate(it) } + Scaffold( + topBar = { + TopAppBar(title = { + Text(text = "Android snippets",) + }) + } + ) { padding -> + NavigationItems(modifier = Modifier.padding(padding)) { navigate(it) } } } @Composable -fun NavigationItems(navigate: (Destination) -> Unit) { +fun NavigationItems( + modifier: Modifier = Modifier, + navigate: (Destination) -> Unit +) { LazyColumn( - modifier = Modifier + modifier = modifier .fillMaxSize(), verticalArrangement = Arrangement.spacedBy(8.dp), horizontalAlignment = Alignment.CenterHorizontally, @@ -84,14 +73,14 @@ fun NavigationItems(navigate: (Destination) -> Unit) { @Composable fun NavigationItem(destination: Destination, onClick: () -> Unit) { - Box( + ListItem( + headlineContent = { + Text(destination.title) + }, modifier = Modifier .heightIn(min = 48.dp) .clickable { onClick() } - ) { - Text(destination.title) - HorizontalDivider(modifier = Modifier.align(Alignment.BottomCenter)) - } + ) } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index 9e7110503..20753d365 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -44,4 +44,5 @@ enum class TopComponentsDestination(val route: String, val title: String) { PartialBottomSheet("partialBottomSheets", "Partial Bottom Sheet"), TimePickerExamples("timePickerExamples", "Time Pickers"), DatePickerExamples("datePickerExamples", "Date Pickers"), + CarouselExamples("carouselExamples", "Carousel") } From 68fef6e953c5566cad2fb9ce37301a87cadc7c2f Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Fri, 11 Oct 2024 10:34:20 +0100 Subject: [PATCH 285/463] Basic menu examples (#371) * basic menu examples * Make DropdownMenuWithDetails toggle expanded on click * Apply Spotless * Remove unneeded dependencies * Remove unneeded imports --------- Co-authored-by: jakeroseman --- .../compose/snippets/SnippetsActivity.kt | 2 + .../compose/snippets/components/Menus.kt | 214 ++++++++++++++++++ .../snippets/navigation/Destination.kt | 3 +- 3 files changed, 218 insertions(+), 1 deletion(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/Menus.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 357cf556f..645cd9e54 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -41,6 +41,7 @@ import com.example.compose.snippets.components.DatePickerExamples import com.example.compose.snippets.components.DialogExamples import com.example.compose.snippets.components.DividerExamples import com.example.compose.snippets.components.FloatingActionButtonExamples +import com.example.compose.snippets.components.MenusExamples import com.example.compose.snippets.components.PartialBottomSheet import com.example.compose.snippets.components.ProgressIndicatorExamples import com.example.compose.snippets.components.ScaffoldExample @@ -111,6 +112,7 @@ class SnippetsActivity : ComponentActivity() { TopComponentsDestination.TimePickerExamples -> TimePickerExamples() TopComponentsDestination.DatePickerExamples -> DatePickerExamples() TopComponentsDestination.CarouselExamples -> CarouselExamples() + TopComponentsDestination.MenusExample -> MenusExamples() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Menus.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Menus.kt new file mode 100644 index 000000000..c355f9489 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Menus.kt @@ -0,0 +1,214 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.outlined.Help +import androidx.compose.material.icons.automirrored.outlined.OpenInNew +import androidx.compose.material.icons.automirrored.outlined.Send +import androidx.compose.material.icons.filled.MoreVert +import androidx.compose.material.icons.outlined.Feedback +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material.icons.outlined.Person +import androidx.compose.material.icons.outlined.Settings +import androidx.compose.material3.Button +import androidx.compose.material3.DropdownMenu +import androidx.compose.material3.DropdownMenuItem +import androidx.compose.material3.FloatingActionButton +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Composable +fun MenusExamples() { + var currentExample by remember { mutableStateOf<(@Composable () -> Unit)?>(null) } + + Box(modifier = Modifier.fillMaxSize()) { + currentExample?.let { + it() + FloatingActionButton( + onClick = { currentExample = null }, + modifier = Modifier + .align(Alignment.BottomEnd) + .padding(16.dp) + ) { + Text(text = "Close example", modifier = Modifier.padding(16.dp)) + } + return + } + + Column(modifier = Modifier.padding(16.dp)) { + Button(onClick = { currentExample = { MinimalDropdownMenu() } }) { + Text("Minimal dropdown menu") + } + Button(onClick = { currentExample = { LongBasicDropdownMenu() } }) { + Text("Dropdown menu with many items") + } + Button(onClick = { currentExample = { DropdownMenuWithDetails() } }) { + Text("Dropdown menu with sections and icons") + } + } + } +} + +// [START android_compose_components_minimaldropdownmenu] +@Composable +fun MinimalDropdownMenu() { + var expanded by remember { mutableStateOf(false) } + Box( + modifier = Modifier + .padding(16.dp) + ) { + IconButton(onClick = { expanded = !expanded }) { + Icon(Icons.Default.MoreVert, contentDescription = "More options") + } + DropdownMenu( + expanded = expanded, + onDismissRequest = { expanded = false } + ) { + DropdownMenuItem( + text = { Text("Option 1") }, + onClick = { /* Do something... */ } + ) + DropdownMenuItem( + text = { Text("Option 2") }, + onClick = { /* Do something... */ } + ) + } + } +} +// [END android_compose_components_minimaldropdownmenu] + +@Preview +@Composable +fun MinimalDropdownMenuPreview() { + MinimalDropdownMenu() +} + +// [START android_compose_components_longbasicdropdownmenu] +@Composable +fun LongBasicDropdownMenu() { + var expanded by remember { mutableStateOf(false) } + // Placeholder list of 100 strings for demonstration + val menuItemData = List(100) { "Option ${it + 1}" } + + Box( + modifier = Modifier + .padding(16.dp) + ) { + IconButton(onClick = { expanded = !expanded }) { + Icon(Icons.Default.MoreVert, contentDescription = "More options") + } + DropdownMenu( + expanded = expanded, + onDismissRequest = { expanded = false } + ) { + menuItemData.forEach { option -> + DropdownMenuItem( + text = { Text(option) }, + onClick = { /* Do something... */ } + ) + } + } + } +} +// [END android_compose_components_longbasicdropdownmenu] + +@Preview +@Composable +fun LongBasicDropdownMenuPreview() { + LongBasicDropdownMenu() +} + +// [START android_compose_components_dropdownmenuwithdetails] +@Composable +fun DropdownMenuWithDetails() { + var expanded by remember { mutableStateOf(false) } + + Box( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + ) { + IconButton(onClick = { expanded = !expanded }) { + Icon(Icons.Default.MoreVert, contentDescription = "More options") + } + DropdownMenu( + expanded = expanded, + onDismissRequest = { expanded = false } + ) { + // First section + DropdownMenuItem( + text = { Text("Profile") }, + leadingIcon = { Icon(Icons.Outlined.Person, contentDescription = null) }, + onClick = { /* Do something... */ } + ) + DropdownMenuItem( + text = { Text("Settings") }, + leadingIcon = { Icon(Icons.Outlined.Settings, contentDescription = null) }, + onClick = { /* Do something... */ } + ) + + HorizontalDivider() + + // Second section + DropdownMenuItem( + text = { Text("Send Feedback") }, + leadingIcon = { Icon(Icons.Outlined.Feedback, contentDescription = null) }, + trailingIcon = { Icon(Icons.AutoMirrored.Outlined.Send, contentDescription = null) }, + onClick = { /* Do something... */ } + ) + + HorizontalDivider() + + // Third section + DropdownMenuItem( + text = { Text("About") }, + leadingIcon = { Icon(Icons.Outlined.Info, contentDescription = null) }, + onClick = { /* Do something... */ } + ) + DropdownMenuItem( + text = { Text("Help") }, + leadingIcon = { Icon(Icons.AutoMirrored.Outlined.Help, contentDescription = null) }, + trailingIcon = { Icon(Icons.AutoMirrored.Outlined.OpenInNew, contentDescription = null) }, + onClick = { /* Do something... */ } + ) + } + } +} +// [END android_compose_components_dropdownmenuwithdetails] + +@Preview +@Composable +fun DropdownMenuWithDetailsPreview() { + DropdownMenuWithDetails() +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index 20753d365..0bce08f0d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -44,5 +44,6 @@ enum class TopComponentsDestination(val route: String, val title: String) { PartialBottomSheet("partialBottomSheets", "Partial Bottom Sheet"), TimePickerExamples("timePickerExamples", "Time Pickers"), DatePickerExamples("datePickerExamples", "Date Pickers"), - CarouselExamples("carouselExamples", "Carousel") + CarouselExamples("carouselExamples", "Carousel"), + MenusExample("menusExamples", "Menus") } From fbfd07d9c17db10e628c84ec865d6628a8ae92c1 Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Fri, 11 Oct 2024 13:14:46 +0100 Subject: [PATCH 286/463] Filter chip dropdown menu (#375) * Filter chip dropdown menu * Apply Spotless --- .../compose/snippets/components/Menus.kt | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Menus.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Menus.kt index c355f9489..a3468a7c2 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/Menus.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Menus.kt @@ -16,16 +16,26 @@ package com.example.compose.snippets.components +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.DirectionsBike +import androidx.compose.material.icons.automirrored.filled.DirectionsRun +import androidx.compose.material.icons.automirrored.filled.DirectionsWalk import androidx.compose.material.icons.automirrored.outlined.Help import androidx.compose.material.icons.automirrored.outlined.OpenInNew import androidx.compose.material.icons.automirrored.outlined.Send +import androidx.compose.material.icons.filled.ArrowDropDown +import androidx.compose.material.icons.filled.Check +import androidx.compose.material.icons.filled.Hiking import androidx.compose.material.icons.filled.MoreVert +import androidx.compose.material.icons.filled.Tune import androidx.compose.material.icons.outlined.Feedback import androidx.compose.material.icons.outlined.Info import androidx.compose.material.icons.outlined.Person @@ -33,6 +43,7 @@ import androidx.compose.material.icons.outlined.Settings import androidx.compose.material3.Button import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem +import androidx.compose.material3.FilterChip import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon @@ -76,6 +87,9 @@ fun MenusExamples() { Button(onClick = { currentExample = { DropdownMenuWithDetails() } }) { Text("Dropdown menu with sections and icons") } + Button(onClick = { currentExample = { DropdownFilter() } }) { + Text("Menu for applying a filter, attached to a filter chip") + } } } } @@ -212,3 +226,79 @@ fun DropdownMenuWithDetails() { fun DropdownMenuWithDetailsPreview() { DropdownMenuWithDetails() } + +@Composable +fun DropdownFilter(modifier: Modifier = Modifier) { + Row( + modifier = modifier + .padding(16.dp) + .wrapContentSize(unbounded = true), + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Icon(Icons.Default.Tune, "Filters") + FilterChip(selected = false, onClick = { /*TODO*/ }, label = { Text("Time") }) + DropdownFilterChip() + FilterChip(selected = false, onClick = { /*TODO*/ }, label = { Text("Wheelchair accessible") }) + } +} + +// [START android_compose_components_dropdownfilterchip] +@Composable +fun DropdownFilterChip(modifier: Modifier = Modifier) { + var isDropdownExpanded by remember { mutableStateOf(false) } + var selectedChipText by remember { mutableStateOf(null) } + Box(modifier) { + FilterChip( + selected = selectedChipText != null, + onClick = { isDropdownExpanded = !isDropdownExpanded }, + label = { Text(if (selectedChipText == null) "Type" else "$selectedChipText") }, + leadingIcon = { if (selectedChipText != null) Icon(Icons.Default.Check, null) }, + trailingIcon = { Icon(Icons.Default.ArrowDropDown, null) }, + ) + DropdownMenu( + expanded = isDropdownExpanded, + onDismissRequest = { isDropdownExpanded = !isDropdownExpanded } + ) { + DropdownMenuItem( + text = { Text("Running") }, + leadingIcon = { Icon(Icons.AutoMirrored.Default.DirectionsRun, null) }, + onClick = { + selectedChipText = + if (selectedChipText == "Running") null else "Running" + } + ) + DropdownMenuItem( + text = { Text("Walking") }, + leadingIcon = { Icon(Icons.AutoMirrored.Default.DirectionsWalk, null) }, + onClick = { + selectedChipText = + if (selectedChipText == "Walking") null else "Walking" + } + ) + DropdownMenuItem( + text = { Text("Hiking") }, + leadingIcon = { Icon(Icons.Default.Hiking, null) }, + onClick = { + selectedChipText = + if (selectedChipText == "Hiking") null else "Hiking" + } + ) + DropdownMenuItem( + text = { Text("Cycling") }, + leadingIcon = { Icon(Icons.AutoMirrored.Default.DirectionsBike, null) }, + onClick = { + selectedChipText = + if (selectedChipText == "Cycling") null else "Cycling" + } + ) + } + } +} +// [END android_compose_components_dropdownfilterchip] + +@Preview +@Composable +private fun DropdownFilterPreview() { + DropdownFilter() +} From f67b8492ff5f850ba962102c7b5c65d83895bdd3 Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Fri, 11 Oct 2024 14:56:55 +0100 Subject: [PATCH 287/463] Add example of date picker textfield opening picker dialog on click (#376) * Add example of date picker textfield opening picker dialog on click * Apply Spotless --- .../snippets/components/DatePickers.kt | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/DatePickers.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/DatePickers.kt index 650b969a0..692199123 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/DatePickers.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/DatePickers.kt @@ -17,6 +17,9 @@ package com.example.compose.snippets.components import androidx.compose.foundation.background +import androidx.compose.foundation.gestures.awaitEachGesture +import androidx.compose.foundation.gestures.awaitFirstDown +import androidx.compose.foundation.gestures.waitForUpOrCancellation import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -49,12 +52,24 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.shadow +import androidx.compose.ui.input.pointer.PointerEventPass +import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Popup +import com.example.compose.snippets.touchinput.userinteractions.MyAppTheme import java.text.SimpleDateFormat import java.util.Date import java.util.Locale +@Preview +@Composable +private fun DatePickerPreview() { + MyAppTheme { + DatePickerExamples() + } +} + // [START android_compose_components_datepicker_examples] // [START_EXCLUDE] @Composable @@ -77,6 +92,9 @@ fun DatePickerExamples() { Text("Docked date picker:") DatePickerDocked() + Text("Open modal picker on click") + DatePickerFieldToModal() + Text("Modal date pickers:") Button(onClick = { showModal = true }) { Text("Show Modal Date Picker") @@ -259,6 +277,43 @@ fun DatePickerDocked() { } } +@Composable +fun DatePickerFieldToModal(modifier: Modifier = Modifier) { + var selectedDate by remember { mutableStateOf(null) } + var showModal by remember { mutableStateOf(false) } + + OutlinedTextField( + value = selectedDate?.let { convertMillisToDate(it) } ?: "", + onValueChange = { }, + label = { Text("DOB") }, + placeholder = { Text("MM/DD/YYYY") }, + trailingIcon = { + Icon(Icons.Default.DateRange, contentDescription = "Select date") + }, + modifier = modifier + .fillMaxWidth() + .pointerInput(selectedDate) { + awaitEachGesture { + // Modifier.clickable doesn't work for text fields, so we use Modifier.pointerInput + // in the Initial pass to observe events before the text field consumes them + // in the Main pass. + awaitFirstDown(pass = PointerEventPass.Initial) + val upEvent = waitForUpOrCancellation(pass = PointerEventPass.Initial) + if (upEvent != null) { + showModal = true + } + } + } + ) + + if (showModal) { + DatePickerModal( + onDateSelected = { selectedDate = it }, + onDismiss = { showModal = false } + ) + } +} + fun convertMillisToDate(millis: Long): String { val formatter = SimpleDateFormat("MM/dd/yyyy", Locale.getDefault()) return formatter.format(Date(millis)) From a0b94c02fb4043e2b4889e78a542d7562fbfd0e8 Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:14:14 +0100 Subject: [PATCH 288/463] Add auto advance pager snippets (#377) * Add auto advance pager snippets * Apply Spotless --------- Co-authored-by: jakeroseman --- .../compose/snippets/SnippetsActivity.kt | 2 + .../compose/snippets/layouts/PagerSnippets.kt | 109 ++++++++++++++++++ .../snippets/navigation/Destination.kt | 3 +- 3 files changed, 113 insertions(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 645cd9e54..40d0a2549 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -53,6 +53,7 @@ import com.example.compose.snippets.graphics.BitmapFromComposableFullSnippet import com.example.compose.snippets.graphics.BrushExamplesScreen import com.example.compose.snippets.images.ImageExamplesScreen import com.example.compose.snippets.landing.LandingScreen +import com.example.compose.snippets.layouts.PagerExamples import com.example.compose.snippets.navigation.Destination import com.example.compose.snippets.navigation.TopComponentsDestination import com.example.compose.snippets.ui.theme.SnippetsTheme @@ -87,6 +88,7 @@ class SnippetsActivity : ComponentActivity() { } Destination.ShapesExamples -> ApplyPolygonAsClipImage() Destination.SharedElementExamples -> PlaceholderSizeAnimated_Demo() + Destination.PagerExamples -> PagerExamples() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt index ec8e84cbf..45361ef88 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt @@ -20,7 +20,12 @@ package com.example.compose.snippets.layouts import android.util.Log import androidx.compose.foundation.Image +import androidx.compose.foundation.LocalIndication import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.interaction.collectIsDraggedAsState +import androidx.compose.foundation.interaction.collectIsPressedAsState import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -50,6 +55,8 @@ import androidx.compose.material3.TabRow import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment @@ -58,6 +65,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.dp @@ -65,6 +73,7 @@ import androidx.compose.ui.util.lerp import coil.compose.rememberAsyncImagePainter import com.example.compose.snippets.util.rememberRandomSampleImageUrl import kotlin.math.absoluteValue +import kotlinx.coroutines.delay import kotlinx.coroutines.launch /* @@ -83,6 +92,18 @@ import kotlinx.coroutines.launch * limitations under the License. */ +@Composable +fun PagerExamples() { + AutoAdvancePager( + listOf( + Color.Red, + Color.Gray, + Color.Green, + Color.White + ) + ) +} + @Preview @Composable fun HorizontalPagerSample() { @@ -392,6 +413,94 @@ fun PagerIndicator() { } } +@Composable +fun AutoAdvancePager(pageItems: List, modifier: Modifier = Modifier) { + Box(modifier = Modifier.fillMaxSize()) { + val pagerState = rememberPagerState(pageCount = { pageItems.size }) + val pagerIsDragged by pagerState.interactionSource.collectIsDraggedAsState() + + val pageInteractionSource = remember { MutableInteractionSource() } + val pageIsPressed by pageInteractionSource.collectIsPressedAsState() + + // Stop auto-advancing when pager is dragged or one of the pages is pressed + val autoAdvance = !pagerIsDragged && !pageIsPressed + + if (autoAdvance) { + LaunchedEffect(pagerState, pageInteractionSource) { + while (true) { + delay(2000) + val nextPage = (pagerState.currentPage + 1) % pageItems.size + pagerState.animateScrollToPage(nextPage) + } + } + } + + HorizontalPager( + state = pagerState + ) { page -> + Text( + text = "Page: $page", + textAlign = TextAlign.Center, + modifier = modifier + .fillMaxSize() + .background(pageItems[page]) + .clickable( + interactionSource = pageInteractionSource, + indication = LocalIndication.current + ) { + // Handle page click + } + .wrapContentSize(align = Alignment.Center) + ) + } + + PagerIndicator(pageItems.size, pagerState.currentPage) + } +} + +@Preview +@Composable +private fun AutoAdvancePagerPreview() { + val pageItems: List = listOf( + Color.Red, + Color.Gray, + Color.Green, + Color.White + ) + AutoAdvancePager(pageItems = pageItems) +} + +@Composable +fun PagerIndicator(pageCount: Int, currentPageIndex: Int, modifier: Modifier = Modifier) { + Box(modifier = Modifier.fillMaxSize()) { + Row( + modifier = Modifier + .wrapContentHeight() + .fillMaxWidth() + .align(Alignment.BottomCenter) + .padding(bottom = 8.dp), + horizontalArrangement = Arrangement.Center + ) { + repeat(pageCount) { iteration -> + val color = if (currentPageIndex == iteration) Color.DarkGray else Color.LightGray + Box( + modifier = modifier + .padding(2.dp) + .clip(CircleShape) + .background(color) + .size(16.dp) + ) + } + } + } +} + +@Preview +@Composable +private fun PagerIndicatorPreview() { + PagerIndicator(pageCount = 4, currentPageIndex = 1) +} + // [START android_compose_pager_custom_page_size] private val threePagesPerViewport = object : PageSize { override fun Density.calculateMainAxisPageSize( diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index 0bce08f0d..70368d318 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -23,7 +23,8 @@ enum class Destination(val route: String, val title: String) { ComponentsExamples("topComponents", "Top Compose Components"), ScreenshotExample("screenshotExample", "Screenshot Examples"), ShapesExamples("shapesExamples", "Shapes Examples"), - SharedElementExamples("sharedElement", "Shared elements") + SharedElementExamples("sharedElement", "Shared elements"), + PagerExamples("pagerExamples", "Pager examples") } // Enum class for compose components navigation screen. From 591dfa5cc87e9b1ee7adc59006443e88d1c2098e Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:39:40 +0100 Subject: [PATCH 289/463] Tooltip component examples (#373) * Tooltip component examples * Apply Spotless * Addressing PR comments * use LaunchedEffect to fix tooltip bug * Apply Spotless * Updated content descriptions --------- Co-authored-by: jakeroseman --- .../compose/snippets/SnippetsActivity.kt | 2 + .../compose/snippets/components/Tooltips.kt | 212 ++++++++++++++++++ .../snippets/navigation/Destination.kt | 3 +- 3 files changed, 216 insertions(+), 1 deletion(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/Tooltips.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 40d0a2549..c8aab7984 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -48,6 +48,7 @@ import com.example.compose.snippets.components.ScaffoldExample import com.example.compose.snippets.components.SliderExamples import com.example.compose.snippets.components.SwitchExamples import com.example.compose.snippets.components.TimePickerExamples +import com.example.compose.snippets.components.TooltipExamples import com.example.compose.snippets.graphics.ApplyPolygonAsClipImage import com.example.compose.snippets.graphics.BitmapFromComposableFullSnippet import com.example.compose.snippets.graphics.BrushExamplesScreen @@ -115,6 +116,7 @@ class SnippetsActivity : ComponentActivity() { TopComponentsDestination.DatePickerExamples -> DatePickerExamples() TopComponentsDestination.CarouselExamples -> CarouselExamples() TopComponentsDestination.MenusExample -> MenusExamples() + TopComponentsDestination.TooltipExamples -> TooltipExamples() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Tooltips.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Tooltips.kt new file mode 100644 index 000000000..e43ac2d97 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Tooltips.kt @@ -0,0 +1,212 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Camera +import androidx.compose.material.icons.filled.Favorite +import androidx.compose.material.icons.filled.Info +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.PlainTooltip +import androidx.compose.material3.RichTooltip +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.TooltipBox +import androidx.compose.material3.TooltipDefaults +import androidx.compose.material3.TooltipState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.DpSize +import androidx.compose.ui.unit.dp + +@Composable +fun TooltipExamples() { + Text( + "Long press an icon to see the tooltip.", + modifier = Modifier.fillMaxWidth().padding(16.dp), + textAlign = TextAlign.Center + ) + Row( + horizontalArrangement = Arrangement.SpaceEvenly, + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier.fillMaxSize() + ) { + PlainTooltipExample() + RichTooltipExample() + AdvancedRichTooltipExample() + } +} + +@Preview +@Composable +private fun TooltipExamplesPreview() { + TooltipExamples() +} + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_plaintooltipexample] +@Composable +fun PlainTooltipExample( + modifier: Modifier = Modifier, + plainTooltipText: String = "Add to favorites" +) { + var tooltipState by remember { mutableStateOf(TooltipState()) } + TooltipBox( + modifier = modifier, + positionProvider = TooltipDefaults.rememberPlainTooltipPositionProvider(), + tooltip = { + PlainTooltip { Text(plainTooltipText) } + }, + state = tooltipState + ) { + IconButton(onClick = { /* Do something... */ }) { + Icon( + imageVector = Icons.Filled.Favorite, + contentDescription = "Add to favorites" + ) + } + } + + // Reset tooltipState after closing the tooltip. + LaunchedEffect(tooltipState.isVisible) { + if (!tooltipState.isVisible) { + tooltipState = TooltipState() + } + } +} + +// [END android_compose_components_plaintooltipexample] + +@Preview +@Composable +private fun PlainTooltipSamplePreview() { + PlainTooltipExample() +} + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_richtooltipexample] +@Composable +fun RichTooltipExample( + modifier: Modifier = Modifier, + richTooltipSubheadText: String = "Rich Tooltip", + richTooltipText: String = "Rich tooltips support multiple lines of informational text." +) { + var tooltipState by remember { mutableStateOf(TooltipState(isPersistent = true)) } + + TooltipBox( + modifier = modifier, + positionProvider = TooltipDefaults.rememberRichTooltipPositionProvider(), + tooltip = { + RichTooltip( + title = { Text(richTooltipSubheadText) } + ) { + Text(richTooltipText) + } + }, + state = tooltipState + ) { + IconButton(onClick = { /* Icon button's click event */ }) { + Icon( + imageVector = Icons.Filled.Info, + contentDescription = "Show more information" + ) + } + } + + // Reset tooltipState after closing the tooltip. + LaunchedEffect(tooltipState.isVisible) { + if (!tooltipState.isVisible) { + tooltipState = TooltipState(isPersistent = true) + } + } +} +// [END android_compose_components_richtooltipexample] + +@Preview +@Composable +private fun RichTooltipSamplePreview() { + RichTooltipExample() +} + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_advancedrichtooltipexample] +@Composable +fun AdvancedRichTooltipExample( + modifier: Modifier = Modifier, + richTooltipSubheadText: String = "Custom Rich Tooltip", + richTooltipText: String = "Rich tooltips support multiple lines of informational text.", + richTooltipActionText: String = "Dismiss" +) { + var tooltipState by remember { mutableStateOf(TooltipState(isPersistent = true)) } + + TooltipBox( + modifier = modifier, + positionProvider = TooltipDefaults.rememberRichTooltipPositionProvider(), + tooltip = { + RichTooltip( + title = { Text(richTooltipSubheadText) }, + action = { + Row { + TextButton(onClick = { tooltipState.dismiss() }) { + Text(richTooltipActionText) + } + } + }, + caretSize = DpSize(32.dp, 16.dp) + ) { + Text(richTooltipText) + } + }, + state = tooltipState + ) { + IconButton(onClick = { tooltipState.dismiss() }) { + Icon( + imageVector = Icons.Filled.Camera, + contentDescription = "Open camera" + ) + } + } + + // Reset tooltipState after closing the tooltip. + LaunchedEffect(tooltipState.isVisible) { + if (!tooltipState.isVisible) { + tooltipState = TooltipState(isPersistent = true) + } + } +} +// [END android_compose_components_advancedrichtooltipexample] + +@Preview +@Composable +private fun RichTooltipWithCustomCaretSamplePreview() { + AdvancedRichTooltipExample() +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index 70368d318..189f473d5 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -46,5 +46,6 @@ enum class TopComponentsDestination(val route: String, val title: String) { TimePickerExamples("timePickerExamples", "Time Pickers"), DatePickerExamples("datePickerExamples", "Date Pickers"), CarouselExamples("carouselExamples", "Carousel"), - MenusExample("menusExamples", "Menus") + MenusExample("menusExamples", "Menus"), + TooltipExamples("tooltipExamples", "Tooltips") } From 4baf47718fa0e5e7e0f153da3722be1216ad9b04 Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Fri, 11 Oct 2024 19:57:31 +0100 Subject: [PATCH 290/463] Add pull to refresh snippets (#378) * Add pull to refresh snippets * Apply Spotless --- .../snippets/components/PullToRefreshBox.kt | 241 ++++++++++++++++++ 1 file changed, 241 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/PullToRefreshBox.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/PullToRefreshBox.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/PullToRefreshBox.kt new file mode 100644 index 000000000..81280151a --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/PullToRefreshBox.kt @@ -0,0 +1,241 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.animation.Crossfade +import androidx.compose.animation.core.tween +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.CloudDownload +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.ListItem +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.pulltorefresh.PullToRefreshBox +import androidx.compose.material3.pulltorefresh.PullToRefreshDefaults +import androidx.compose.material3.pulltorefresh.PullToRefreshDefaults.Indicator +import androidx.compose.material3.pulltorefresh.PullToRefreshDefaults.PositionalThreshold +import androidx.compose.material3.pulltorefresh.PullToRefreshState +import androidx.compose.material3.pulltorefresh.pullToRefreshIndicator +import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.example.compose.snippets.components.PullToRefreshIndicatorConstants.CROSSFADE_DURATION_MILLIS +import com.example.compose.snippets.components.PullToRefreshIndicatorConstants.SPINNER_SIZE +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch + +private object PullToRefreshIndicatorConstants { + const val CROSSFADE_DURATION_MILLIS = 100 + val SPINNER_SIZE = 16.dp +} + +@Preview +@Composable +fun PullToRefreshBasicPreview() { + PullToRefreshStatefulWrapper { itemCount, isRefreshing, onRefresh -> + val items = List(itemCount) { "Item ${itemCount - it}" } + PullToRefreshBasicSample(items, isRefreshing, onRefresh) + } +} + +@Preview +@Composable +fun PullToRefreshCustomStylePreview() { + PullToRefreshStatefulWrapper { itemCount, isRefreshing, onRefresh -> + val items = List(itemCount) { "Item ${itemCount - it}" } + PullToRefreshCustomStyleSample(items, isRefreshing, onRefresh) + } +} + +@Preview +@Composable +fun PullToRefreshCustomIndicatorPreview() { + PullToRefreshStatefulWrapper { itemCount, isRefreshing, onRefresh -> + val items = List(itemCount) { "Item ${itemCount - it}" } + PullToRefreshCustomIndicatorSample(items, isRefreshing, onRefresh) + } +} + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_pull_to_refresh_basic] +@Composable +fun PullToRefreshBasicSample( + items: List, + isRefreshing: Boolean, + onRefresh: () -> Unit, + modifier: Modifier = Modifier +) { + PullToRefreshBox( + isRefreshing = isRefreshing, + onRefresh = onRefresh, + modifier = modifier + ) { + LazyColumn(Modifier.fillMaxSize()) { + items(items) { + ListItem({ Text(text = it) }) + } + } + } +} +// [END android_compose_components_pull_to_refresh_basic] + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_pull_to_refresh_custom_style] +@Composable +fun PullToRefreshCustomStyleSample( + items: List, + isRefreshing: Boolean, + onRefresh: () -> Unit, + modifier: Modifier = Modifier +) { + val state = rememberPullToRefreshState() + + PullToRefreshBox( + isRefreshing = isRefreshing, + onRefresh = onRefresh, + modifier = modifier, + state = state, + indicator = { + Indicator( + modifier = Modifier.align(Alignment.TopCenter), + isRefreshing = isRefreshing, + containerColor = MaterialTheme.colorScheme.primaryContainer, + color = MaterialTheme.colorScheme.onPrimaryContainer, + state = state + ) + }, + ) { + LazyColumn(Modifier.fillMaxSize()) { + items(items) { + ListItem({ Text(text = it) }) + } + } + } +} +// [END android_compose_components_pull_to_refresh_custom_style] + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_pull_to_refresh_custom_indicator] +@Composable +fun PullToRefreshCustomIndicatorSample( + items: List, + isRefreshing: Boolean, + onRefresh: () -> Unit, + modifier: Modifier = Modifier +) { + val state = rememberPullToRefreshState() + + PullToRefreshBox( + isRefreshing = isRefreshing, + onRefresh = onRefresh, + modifier = modifier, + state = state, + indicator = { + MyCustomIndicator( + state = state, + isRefreshing = isRefreshing, + modifier = Modifier.align(Alignment.TopCenter) + ) + } + ) { + LazyColumn(Modifier.fillMaxSize()) { + items(items) { + ListItem({ Text(text = it) }) + } + } + } +} + +// [START_EXCLUDE] +@OptIn(ExperimentalMaterial3Api::class) +// [END_EXCLUDE] +@Composable +fun MyCustomIndicator( + state: PullToRefreshState, + isRefreshing: Boolean, + modifier: Modifier = Modifier, +) { + Box( + modifier = modifier.pullToRefreshIndicator( + state = state, + isRefreshing = isRefreshing, + containerColor = PullToRefreshDefaults.containerColor, + threshold = PositionalThreshold + ), + contentAlignment = Alignment.Center + ) { + Crossfade( + targetState = isRefreshing, + animationSpec = tween(durationMillis = CROSSFADE_DURATION_MILLIS), + modifier = Modifier.align(Alignment.Center) + ) { refreshing -> + if (refreshing) { + CircularProgressIndicator(Modifier.size(SPINNER_SIZE)) + } else { + val distanceFraction = { state.distanceFraction.coerceIn(0f, 1f) } + Icon( + imageVector = Icons.Filled.CloudDownload, + contentDescription = "Refresh", + modifier = Modifier + .size(18.dp) + .graphicsLayer { + val progress = distanceFraction() + this.alpha = progress + this.scaleX = progress + this.scaleY = progress + } + ) + } + } + } +} +// [END android_compose_components_pull_to_refresh_custom_indicator] + +@Composable +fun PullToRefreshStatefulWrapper( + content: @Composable (itemCount: Int, isRefreshing: Boolean, onRefresh: () -> Unit) -> Unit +) { + var itemCount by remember { mutableIntStateOf(15) } + var isRefreshing by remember { mutableStateOf(false) } + val coroutineScope = rememberCoroutineScope() + val onRefresh: () -> Unit = { + isRefreshing = true + coroutineScope.launch { + delay(1500) + itemCount += 5 + isRefreshing = false + } + } + content(itemCount, isRefreshing, onRefresh) +} From 5545f3751aaf989770dd6b67b518e81c368444fd Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Mon, 14 Oct 2024 12:21:49 +0100 Subject: [PATCH 291/463] Remove LaunchedEffect workaround (#379) * Remove LaunchedEffect workaround for library bug * Apply Spotless * Changed single var to val --------- Co-authored-by: jakeroseman --- .../compose/snippets/components/Tooltips.kt | 35 +++---------------- 1 file changed, 4 insertions(+), 31 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Tooltips.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Tooltips.kt index e43ac2d97..1b5d9ea04 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/Tooltips.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Tooltips.kt @@ -34,12 +34,9 @@ import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TooltipBox import androidx.compose.material3.TooltipDefaults -import androidx.compose.material3.TooltipState +import androidx.compose.material3.rememberTooltipState import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -79,14 +76,13 @@ fun PlainTooltipExample( modifier: Modifier = Modifier, plainTooltipText: String = "Add to favorites" ) { - var tooltipState by remember { mutableStateOf(TooltipState()) } TooltipBox( modifier = modifier, positionProvider = TooltipDefaults.rememberPlainTooltipPositionProvider(), tooltip = { PlainTooltip { Text(plainTooltipText) } }, - state = tooltipState + state = rememberTooltipState() ) { IconButton(onClick = { /* Do something... */ }) { Icon( @@ -95,13 +91,6 @@ fun PlainTooltipExample( ) } } - - // Reset tooltipState after closing the tooltip. - LaunchedEffect(tooltipState.isVisible) { - if (!tooltipState.isVisible) { - tooltipState = TooltipState() - } - } } // [END android_compose_components_plaintooltipexample] @@ -120,8 +109,6 @@ fun RichTooltipExample( richTooltipSubheadText: String = "Rich Tooltip", richTooltipText: String = "Rich tooltips support multiple lines of informational text." ) { - var tooltipState by remember { mutableStateOf(TooltipState(isPersistent = true)) } - TooltipBox( modifier = modifier, positionProvider = TooltipDefaults.rememberRichTooltipPositionProvider(), @@ -132,7 +119,7 @@ fun RichTooltipExample( Text(richTooltipText) } }, - state = tooltipState + state = rememberTooltipState() ) { IconButton(onClick = { /* Icon button's click event */ }) { Icon( @@ -141,13 +128,6 @@ fun RichTooltipExample( ) } } - - // Reset tooltipState after closing the tooltip. - LaunchedEffect(tooltipState.isVisible) { - if (!tooltipState.isVisible) { - tooltipState = TooltipState(isPersistent = true) - } - } } // [END android_compose_components_richtooltipexample] @@ -166,7 +146,7 @@ fun AdvancedRichTooltipExample( richTooltipText: String = "Rich tooltips support multiple lines of informational text.", richTooltipActionText: String = "Dismiss" ) { - var tooltipState by remember { mutableStateOf(TooltipState(isPersistent = true)) } + val tooltipState = rememberTooltipState() TooltipBox( modifier = modifier, @@ -195,13 +175,6 @@ fun AdvancedRichTooltipExample( ) } } - - // Reset tooltipState after closing the tooltip. - LaunchedEffect(tooltipState.isVisible) { - if (!tooltipState.isVisible) { - tooltipState = TooltipState(isPersistent = true) - } - } } // [END android_compose_components_advancedrichtooltipexample] From 90b8500ff3655f1559fcb6ea0476af6d5c277b19 Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Mon, 14 Oct 2024 19:05:17 +0100 Subject: [PATCH 292/463] Navigation drawer examples (#380) * Basic navigation drawer examples * Add previews * Fix merge issue * Apply Spotless * rearrange functions * Narrowing the examples to just the example with nested items * Apply Spotless * refactoring as dismissable drawer * Fixing imports * refactor, new region tags * Renaming functions * Apply Spotless * Add horizontal padding to the drawer content * Apply Spotless * Make drawer content scrollable to make it work on small screens / landscape --------- Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef --- .../compose/snippets/SnippetsActivity.kt | 2 + .../snippets/components/NavigationDrawer.kt | 147 ++++++++++++++++++ .../snippets/navigation/Destination.kt | 3 +- 3 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/NavigationDrawer.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index c8aab7984..33e8c3dd0 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -16,6 +16,7 @@ package com.example.compose.snippets +import NavigationDrawerExamples import android.os.Bundle import android.os.StrictMode import androidx.activity.ComponentActivity @@ -117,6 +118,7 @@ class SnippetsActivity : ComponentActivity() { TopComponentsDestination.CarouselExamples -> CarouselExamples() TopComponentsDestination.MenusExample -> MenusExamples() TopComponentsDestination.TooltipExamples -> TooltipExamples() + TopComponentsDestination.NavigationDrawerExamples -> NavigationDrawerExamples() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/NavigationDrawer.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/NavigationDrawer.kt new file mode 100644 index 000000000..993f1c99a --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/NavigationDrawer.kt @@ -0,0 +1,147 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.outlined.Help +import androidx.compose.material.icons.filled.Menu +import androidx.compose.material.icons.outlined.Settings +import androidx.compose.material3.DrawerValue +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ModalDrawerSheet +import androidx.compose.material3.ModalNavigationDrawer +import androidx.compose.material3.NavigationDrawerItem +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.material3.rememberDrawerState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import kotlinx.coroutines.launch + +@Composable +fun NavigationDrawerExamples() { + // Add more examples here in future if necessary. + + DetailedDrawerExample { innerPadding -> + Box(modifier = Modifier.padding(innerPadding)) { + Text( + "Swipe from left edge or use menu icon to open the dismissible drawer", + modifier = Modifier.padding(16.dp) + ) + } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_detaileddrawerexample] +@Composable +fun DetailedDrawerExample( + content: @Composable (PaddingValues) -> Unit +) { + val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed) + val scope = rememberCoroutineScope() + + ModalNavigationDrawer( + drawerContent = { + ModalDrawerSheet { + Column( + modifier = Modifier.padding(horizontal = 16.dp) + .verticalScroll(rememberScrollState()) + ) { + Spacer(Modifier.height(12.dp)) + Text("Drawer Title", modifier = Modifier.padding(16.dp), style = MaterialTheme.typography.titleLarge) + HorizontalDivider() + + Text("Section 1", modifier = Modifier.padding(16.dp), style = MaterialTheme.typography.titleMedium) + NavigationDrawerItem( + label = { Text("Item 1") }, + selected = false, + onClick = { /* Handle click */ } + ) + NavigationDrawerItem( + label = { Text("Item 2") }, + selected = false, + onClick = { /* Handle click */ } + ) + + HorizontalDivider(modifier = Modifier.padding(vertical = 8.dp)) + + Text("Section 2", modifier = Modifier.padding(16.dp), style = MaterialTheme.typography.titleMedium) + NavigationDrawerItem( + label = { Text("Settings") }, + selected = false, + icon = { Icon(Icons.Outlined.Settings, contentDescription = null) }, + badge = { Text("20") }, // Placeholder + onClick = { /* Handle click */ } + ) + NavigationDrawerItem( + label = { Text("Help and feedback") }, + selected = false, + icon = { Icon(Icons.AutoMirrored.Outlined.Help, contentDescription = null) }, + onClick = { /* Handle click */ }, + ) + Spacer(Modifier.height(12.dp)) + } + } + }, + drawerState = drawerState + ) { + Scaffold( + topBar = { + TopAppBar( + title = { Text("Navigation Drawer Example") }, + navigationIcon = { + IconButton(onClick = { + scope.launch { + if (drawerState.isClosed) { + drawerState.open() + } else { + drawerState.close() + } + } + }) { + Icon(Icons.Default.Menu, contentDescription = "Menu") + } + } + ) + } + ) { innerPadding -> + content(innerPadding) + } + } +} +// [END android_compose_components_detaileddrawerexample] + +@Preview +@Composable +fun DetailedDrawerExamplePreview() { + NavigationDrawerExamples() +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index 189f473d5..f913923e1 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -47,5 +47,6 @@ enum class TopComponentsDestination(val route: String, val title: String) { DatePickerExamples("datePickerExamples", "Date Pickers"), CarouselExamples("carouselExamples", "Carousel"), MenusExample("menusExamples", "Menus"), - TooltipExamples("tooltipExamples", "Tooltips") + TooltipExamples("tooltipExamples", "Tooltips"), + NavigationDrawerExamples("navigationDrawerExamples", "Navigation drawer") } From e9116f52fef14d6f76f257fd39c8f430fe9d2cbc Mon Sep 17 00:00:00 2001 From: "N. Shimizu" Date: Wed, 16 Oct 2024 12:29:54 +0900 Subject: [PATCH 293/463] Snippets for keyboard input (#368) * Add a sample code for Keyboard Shortcuts Helper * Add a sample code for keyboard actions * Fix the issue on casting a Context object into Activity --- .../keyboardinput/KeyboardShortcutsHelper.kt | 116 ++++++ .../touchinput/keyboardinput/commands.kt | 337 ++++++++++++++++++ 2 files changed, 453 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/touchinput/keyboardinput/KeyboardShortcutsHelper.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/touchinput/keyboardinput/commands.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/keyboardinput/KeyboardShortcutsHelper.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/keyboardinput/KeyboardShortcutsHelper.kt new file mode 100644 index 000000000..a7f21362f --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/keyboardinput/KeyboardShortcutsHelper.kt @@ -0,0 +1,116 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.touchinput.keyboardinput + +import android.app.Activity +import android.os.Build +import android.os.Bundle +import android.view.KeyEvent +import android.view.KeyboardShortcutGroup +import android.view.KeyboardShortcutInfo +import android.view.Menu +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.annotation.RequiresApi +import androidx.compose.material3.Button +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.ui.platform.LocalContext + +class MainActivity : ComponentActivity() { + // Activity codes such as overridden onStart method. + + @RequiresApi(Build.VERSION_CODES.N) + // [START android_compose_keyboard_shortcuts_helper] + override fun onProvideKeyboardShortcuts( + data: MutableList?, + menu: Menu?, + deviceId: Int + ) { + val shortcutGroup = + KeyboardShortcutGroup( + "Cursor movement", + listOf( + KeyboardShortcutInfo("Up", KeyEvent.KEYCODE_P, KeyEvent.META_CTRL_ON), + KeyboardShortcutInfo("Down", KeyEvent.KEYCODE_N, KeyEvent.META_CTRL_ON), + KeyboardShortcutInfo("Forward", KeyEvent.KEYCODE_F, KeyEvent.META_CTRL_ON), + KeyboardShortcutInfo("Backward", KeyEvent.KEYCODE_B, KeyEvent.META_CTRL_ON), + ) + ) + data?.add(shortcutGroup) + } + // [END android_compose_keyboard_shortcuts_helper] +} + +class AnotherActivity : ComponentActivity() { + + @RequiresApi(Build.VERSION_CODES.N) + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContent { + MaterialTheme { + // [START android_compose_keyboard_shortcuts_helper_request] + val activity = LocalContext.current as? Activity + + Button( + onClick = { + activity?.requestShowKeyboardShortcuts() + } + ) { + Text(text = "Show keyboard shortcuts") + } + // [END android_compose_keyboard_shortcuts_helper_request] + } + } + } + + @RequiresApi(Build.VERSION_CODES.N) + // [START android_compose_keyboard_shortcuts_helper_with_groups] + override fun onProvideKeyboardShortcuts( + data: MutableList?, + menu: Menu?, + deviceId: Int + ) { + val cursorMovement = KeyboardShortcutGroup( + "Cursor movement", + listOf( + KeyboardShortcutInfo("Up", KeyEvent.KEYCODE_P, KeyEvent.META_CTRL_ON), + KeyboardShortcutInfo("Down", KeyEvent.KEYCODE_N, KeyEvent.META_CTRL_ON), + KeyboardShortcutInfo("Forward", KeyEvent.KEYCODE_F, KeyEvent.META_CTRL_ON), + KeyboardShortcutInfo("Backward", KeyEvent.KEYCODE_B, KeyEvent.META_CTRL_ON), + ) + ) + + val messageEdit = KeyboardShortcutGroup( + "Message editing", + listOf( + KeyboardShortcutInfo("Select All", KeyEvent.KEYCODE_A, KeyEvent.META_CTRL_ON), + KeyboardShortcutInfo( + "Send a message", + KeyEvent.KEYCODE_ENTER, + KeyEvent.META_SHIFT_ON + ) + ) + ) + + data?.add(cursorMovement) + data?.add(messageEdit) + } + // [END android_compose_keyboard_shortcuts_helper_with_groups] +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/keyboardinput/commands.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/keyboardinput/commands.kt new file mode 100644 index 000000000..d0c08c544 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/keyboardinput/commands.kt @@ -0,0 +1,337 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.touchinput.keyboardinput + +import android.content.Context +import android.widget.Toast +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.focusable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxScope +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.Card +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusDirection +import androidx.compose.ui.focus.onFocusEvent +import androidx.compose.ui.input.key.Key +import androidx.compose.ui.input.key.KeyEvent +import androidx.compose.ui.input.key.KeyEventType +import androidx.compose.ui.input.key.isAltPressed +import androidx.compose.ui.input.key.isCtrlPressed +import androidx.compose.ui.input.key.isMetaPressed +import androidx.compose.ui.input.key.isShiftPressed +import androidx.compose.ui.input.key.key +import androidx.compose.ui.input.key.onKeyEvent +import androidx.compose.ui.input.key.onPreviewKeyEvent +import androidx.compose.ui.input.key.type +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalFocusManager +import androidx.compose.ui.text.input.TextFieldValue +import androidx.compose.ui.unit.dp + +@Suppress("unused") +@Composable +fun CommandsScreen() { + val context = LocalContext.current + var playerState by rememberSaveable { mutableStateOf(false) } + + val doSomething = { + showToast(context, "Doing something") + } + + val doAnotherThing = { + showToast(context, "Doing another thing") + } + + val togglePlayPause = { + playerState = !playerState + val message = if (playerState) { + "Playing" + } else { + "Paused" + } + showToast(context, message) + } + + val actionC = { + showToast(context, "Action C") + } + + Column( + verticalArrangement = Arrangement.spacedBy(16.dp), + modifier = Modifier + .verticalScroll(rememberScrollState()) + .padding(8.dp) + ) { + KeyEvents(doSomething) + ModifierKeys(doSomething) + SpacebarAndEnterKeyTriggersClickEvents(togglePlayPause) + UnconsumedKeyEvents(doSomething, doAnotherThing, actionC) + PreviewKeyEvents() + InterceptKeyEvents( + doSomething, + { keyEvent -> + showToast(context, "onPreviewKeyEvent: ${keyEvent.key.keyCode}") + }, + { keyEvent -> + showToast(context, "onKeyEvent: ${keyEvent.key.keyCode}") + } + ) + } +} + +fun showToast(context: Context, message: String) { + val toast = Toast.makeText(context, message, Toast.LENGTH_SHORT) + toast.show() +} + +@Composable +private fun BoxWithFocusIndication( + modifier: Modifier = Modifier, + content: @Composable BoxScope.() -> Unit +) { + var isFocused by remember { mutableStateOf(false) } + val backgroundColor = if (isFocused) { + MaterialTheme.colorScheme.surfaceVariant + } else { + MaterialTheme.colorScheme.surface + } + Box( + modifier = modifier + .onFocusEvent { + isFocused = it.isFocused + } + .background(backgroundColor), + content = content + ) +} + +@Composable +private fun KeyEvents( + doSomething: () -> Unit, + modifier: Modifier = Modifier, +) { + BoxWithFocusIndication(modifier) { + // [START android_compose_touchinput_keyboardinput_keyevents] + Box( + modifier = Modifier + .onKeyEvent { + if ( + it.type == KeyEventType.KeyUp && + it.key == Key.S + ) { + doSomething() + true + } else { + false + } + } + .focusable() + ) { + Text("Press S key") + } + // [END android_compose_touchinput_keyboardinput_keyevents] + } +} + +@Composable +private fun ModifierKeys( + doSomething: () -> Unit, + modifier: Modifier = Modifier, +) { + BoxWithFocusIndication(modifier = modifier) { + // [START android_compose_touchinput_keyboardinput_modifierkeys] + Box( + modifier = Modifier + .focusable() + .onKeyEvent { + if ( + it.type == KeyEventType.KeyUp && + it.key == Key.S && + !it.isAltPressed && + !it.isCtrlPressed && + !it.isMetaPressed && + !it.isShiftPressed + ) { + doSomething() + true + } else { + false + } + } + ) { + Text("Press S key with a modifier key") + } + // [END android_compose_touchinput_keyboardinput_modifierkeys] + } +} + +@Composable +private fun SpacebarAndEnterKeyTriggersClickEvents( + togglePausePlay: () -> Unit, + modifier: Modifier = Modifier, +) { + BoxWithFocusIndication(modifier = modifier) { + // [START android_compose_touchinput_keyboardinput_spacebar] + MediaPlayer(modifier = Modifier.clickable { togglePausePlay() }) + // [END android_compose_touchinput_keyboardinput_spacebar] + } +} + +@Composable +private fun MediaPlayer( + modifier: Modifier = Modifier, +) { + Box( + modifier = modifier + .size(200.dp) + .background(MaterialTheme.colorScheme.primaryContainer) + ) +} + +@Composable +private fun UnconsumedKeyEvents( + actionA: () -> Unit, + actionB: () -> Unit, + actionC: () -> Unit, + modifier: Modifier = Modifier, +) { + BoxWithFocusIndication(modifier = modifier) { + // [START android_compose_touchinput_keyboardinput_unconsumedkeyevents] + OuterComponent( + modifier = Modifier.onKeyEvent { + when { + it.type == KeyEventType.KeyUp && it.key == Key.S -> { + actionB() // This function is never called. + true + } + + it.type == KeyEventType.KeyUp && it.key == Key.D -> { + actionC() + true + } + + else -> false + } + } + ) { + InnerComponent( + modifier = Modifier.onKeyEvent { + if (it.type == KeyEventType.KeyUp && it.key == Key.S) { + actionA() + true + } else { + false + } + } + ) + } + // [END android_compose_touchinput_keyboardinput_unconsumedkeyevents] + } +} + +@Composable +private fun OuterComponent( + modifier: Modifier = Modifier, + content: @Composable BoxScope.() -> Unit, +) = + Box(content = content, modifier = modifier.focusable()) + +@Composable +private fun InnerComponent( + modifier: Modifier = Modifier +) { + Card(modifier = modifier.focusable()) { + Text("Press S key or D key", modifier = Modifier.padding(16.dp)) + } +} + +@Composable +private fun PreviewKeyEvents() { + // [START android_compose_touchinput_keyboardinput_previewkeyevents] + val focusManager = LocalFocusManager.current + var textFieldValue by remember { mutableStateOf(TextFieldValue()) } + + TextField( + textFieldValue, + onValueChange = { + textFieldValue = it + }, + modifier = Modifier.onPreviewKeyEvent { + if (it.type == KeyEventType.KeyUp && it.key == Key.Tab) { + focusManager.moveFocus(FocusDirection.Next) + true + } else { + false + } + } + ) + // [END android_compose_touchinput_keyboardinput_previewkeyevents] +} + +@Composable +private fun InterceptKeyEvents( + previewSKey: () -> Unit, + actionForPreview: (KeyEvent) -> Unit, + actionForKeyEvent: (KeyEvent) -> Unit, + modifier: Modifier = Modifier, +) { + BoxWithFocusIndication(modifier = modifier) { + // [START android_compose_touchinput_keyboardinput_interceptevents] + Column( + modifier = Modifier.onPreviewKeyEvent { + if (it.key == Key.S) { + previewSKey() + true + } else { + false + } + } + ) { + Box( + modifier = Modifier + .focusable() + .onPreviewKeyEvent { + actionForPreview(it) + false + } + .onKeyEvent { + actionForKeyEvent(it) + true + } + ) { + Text("Press any key") + } + } + // [END android_compose_touchinput_keyboardinput_interceptevents] + } +} From 2af26d9016ff82b9f6b08a35a522c0d278a2b471 Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Wed, 16 Oct 2024 12:29:03 +0100 Subject: [PATCH 294/463] Snippet for animated sorted list with add/remove buttons. (#381) * Snippet for animated sorted list with add/remove buttons. * Apply Spotless * Simplify adding an item to displayedItems * Use ViewModel to correctly extract business logic from UI --------- Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef --- .../snippets/lists/AnimatedOrderedList.kt | 217 ++++++++++++++++++ 1 file changed, 217 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/lists/AnimatedOrderedList.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/AnimatedOrderedList.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/AnimatedOrderedList.kt new file mode 100644 index 000000000..4d60e66b2 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/AnimatedOrderedList.kt @@ -0,0 +1,217 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.lists + +import android.util.Log +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.Button +import androidx.compose.material3.ListItem +import androidx.compose.material3.Scaffold +import androidx.compose.material3.SegmentedButton +import androidx.compose.material3.SegmentedButtonDefaults +import androidx.compose.material3.SingleChoiceSegmentedButtonRow +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.lifecycle.ViewModel +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow + +class AnimatedOrderedListViewModel : ViewModel() { + private val _data = listOf("One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten") + private val _displayedItems: MutableStateFlow> = MutableStateFlow(_data) + val displayedItems: StateFlow> = _displayedItems + + fun resetOrder() { + _displayedItems.value = _data.filter { it in _displayedItems.value } + } + + fun sortAlphabetically() { + _displayedItems.value = _displayedItems.value.sortedBy { it } + } + + fun sortByLength() { + _displayedItems.value = _displayedItems.value.sortedBy { it.length } + } + + fun addItem() { + // Avoid duplicate items + val remainingItems = _data.filter { it !in _displayedItems.value } + if (remainingItems.isNotEmpty()) _displayedItems.value += remainingItems.first() + } + + fun removeItem() { + _displayedItems.value = _displayedItems.value.dropLast(1) + } +} + +@Composable +fun AnimatedOrderedListScreen( + viewModel: AnimatedOrderedListViewModel, + modifier: Modifier = Modifier, +) { + val displayedItems by viewModel.displayedItems.collectAsStateWithLifecycle() + + ListAnimatedItemsExample( + displayedItems, + onAddItem = viewModel::addItem, + onRemoveItem = viewModel::removeItem, + resetOrder = viewModel::resetOrder, + onSortAlphabetically = viewModel::sortAlphabetically, + onSortByLength = viewModel::sortByLength, + modifier = modifier + ) +} + +// [START android_compose_layouts_list_listanimateditems] +@Composable +fun ListAnimatedItems( + items: List, + modifier: Modifier = Modifier +) { + LazyColumn(modifier) { + // Use a unique key per item, so that animations work as expected. + items(items, key = { it }) { + ListItem( + headlineContent = { Text(it) }, + modifier = Modifier + .animateItem( + // Optionally add custom animation specs + ) + .fillParentMaxWidth() + .padding(horizontal = 8.dp, vertical = 0.dp), + ) + } + } +} +// [END android_compose_layouts_list_listanimateditems] + +// [START android_compose_layouts_list_listanimateditemsexample] +@Composable +private fun ListAnimatedItemsExample( + data: List, + modifier: Modifier = Modifier, + onAddItem: () -> Unit = {}, + onRemoveItem: () -> Unit = {}, + resetOrder: () -> Unit = {}, + onSortAlphabetically: () -> Unit = {}, + onSortByLength: () -> Unit = {}, +) { + val canAddItem = data.size < 10 + val canRemoveItem = data.isNotEmpty() + + Scaffold(modifier) { paddingValues -> + Column( + modifier = Modifier + .padding(paddingValues) + .fillMaxSize() + ) { + // Buttons that change the value of displayedItems. + AddRemoveButtons(canAddItem, canRemoveItem, onAddItem, onRemoveItem) + OrderButtons(resetOrder, onSortAlphabetically, onSortByLength) + + // List that displays the values of displayedItems. + ListAnimatedItems(data) + } + } +} +// [END android_compose_layouts_list_listanimateditemsexample] + +// [START android_compose_layouts_list_addremovebuttons] +@Composable +private fun AddRemoveButtons( + canAddItem: Boolean, + canRemoveItem: Boolean, + onAddItem: () -> Unit, + onRemoveItem: () -> Unit +) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.Center + ) { + Button(enabled = canAddItem, onClick = onAddItem) { + Text("Add Item") + } + Spacer(modifier = Modifier.padding(25.dp)) + Button(enabled = canRemoveItem, onClick = onRemoveItem) { + Text("Delete Item") + } + } +} +// [END android_compose_layouts_list_addremovebuttons] + +// [START android_compose_layouts_list_orderbuttons] +@Composable +private fun OrderButtons( + resetOrder: () -> Unit, + orderAlphabetically: () -> Unit, + orderByLength: () -> Unit +) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.Center + ) { + var selectedIndex by remember { mutableIntStateOf(0) } + val options = listOf("Reset", "Alphabetical", "Length") + + SingleChoiceSegmentedButtonRow { + options.forEachIndexed { index, label -> + SegmentedButton( + shape = SegmentedButtonDefaults.itemShape( + index = index, + count = options.size + ), + onClick = { + Log.d("AnimatedOrderedList", "selectedIndex: $selectedIndex") + selectedIndex = index + when (options[selectedIndex]) { + "Reset" -> resetOrder() + "Alphabetical" -> orderAlphabetically() + "Length" -> orderByLength() + } + }, + selected = index == selectedIndex + ) { + Text(label) + } + } + } + } +} +// [END android_compose_layouts_list_orderbuttons] + +@Preview +@Composable +fun AnimatedOrderedListScreenPreview() { + val viewModel = remember { AnimatedOrderedListViewModel() } + AnimatedOrderedListScreen(viewModel) +} From 514653c318c747c557f70e32aad2cc7051d44115 Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Thu, 24 Oct 2024 15:25:33 +0100 Subject: [PATCH 295/463] Add basic segmented button examples (#383) * Add basic segmented button examples * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman --- .../compose/snippets/SnippetsActivity.kt | 2 + .../snippets/components/SegmentedButton.kt | 139 ++++++++++++++++++ .../snippets/navigation/Destination.kt | 3 +- 3 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/SegmentedButton.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 33e8c3dd0..f07c46133 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -46,6 +46,7 @@ import com.example.compose.snippets.components.MenusExamples import com.example.compose.snippets.components.PartialBottomSheet import com.example.compose.snippets.components.ProgressIndicatorExamples import com.example.compose.snippets.components.ScaffoldExample +import com.example.compose.snippets.components.SegmentedButtonExamples import com.example.compose.snippets.components.SliderExamples import com.example.compose.snippets.components.SwitchExamples import com.example.compose.snippets.components.TimePickerExamples @@ -119,6 +120,7 @@ class SnippetsActivity : ComponentActivity() { TopComponentsDestination.MenusExample -> MenusExamples() TopComponentsDestination.TooltipExamples -> TooltipExamples() TopComponentsDestination.NavigationDrawerExamples -> NavigationDrawerExamples() + TopComponentsDestination.SegmentedButtonExamples -> SegmentedButtonExamples() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/SegmentedButton.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/SegmentedButton.kt new file mode 100644 index 000000000..21fbd9d65 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/SegmentedButton.kt @@ -0,0 +1,139 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.DirectionsWalk +import androidx.compose.material.icons.filled.DirectionsBus +import androidx.compose.material.icons.filled.DirectionsCar +import androidx.compose.material3.Icon +import androidx.compose.material3.MultiChoiceSegmentedButtonRow +import androidx.compose.material3.SegmentedButton +import androidx.compose.material3.SegmentedButtonDefaults +import androidx.compose.material3.SingleChoiceSegmentedButtonRow +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableStateListOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Composable +fun SegmentedButtonExamples() { + Column( + modifier = Modifier + .fillMaxSize() + .padding(16.dp), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally + + ) { + SingleChoiceSegmentedButton() + Spacer(modifier = Modifier.height(16.dp)) + MultiChoiceSegmentedButton() + } +} + +// [START android_compose_components_singlechoicesegmentedbutton] +@Composable +fun SingleChoiceSegmentedButton(modifier: Modifier = Modifier) { + var selectedIndex by remember { mutableIntStateOf(0) } + val options = listOf("Day", "Month", "Week") + + SingleChoiceSegmentedButtonRow { + options.forEachIndexed { index, label -> + SegmentedButton( + shape = SegmentedButtonDefaults.itemShape( + index = index, + count = options.size + ), + onClick = { selectedIndex = index }, + selected = index == selectedIndex, + label = { Text(label) } + ) + } + } +} +// [END android_compose_components_singlechoicesegmentedbutton] + +@Preview +@Composable +private fun SingleChoiceSegmentedButtonPreview() { + SingleChoiceSegmentedButton() +} + +// [START android_compose_components_multichoicesegmentedbutton] +@Composable +fun MultiChoiceSegmentedButton(modifier: Modifier = Modifier) { + val selectedOptions = remember { + mutableStateListOf(false, false, false) + } + val options = listOf("Walk", "Ride", "Drive") + + MultiChoiceSegmentedButtonRow { + options.forEachIndexed { index, label -> + SegmentedButton( + shape = SegmentedButtonDefaults.itemShape( + index = index, + count = options.size + ), + checked = selectedOptions[index], + onCheckedChange = { + selectedOptions[index] = !selectedOptions[index] + }, + icon = { SegmentedButtonDefaults.Icon(selectedOptions[index]) }, + label = { + when (label) { + "Walk" -> Icon( + imageVector = + Icons.AutoMirrored.Filled.DirectionsWalk, + contentDescription = "Directions Walk" + ) + "Ride" -> Icon( + imageVector = + Icons.Default.DirectionsBus, + contentDescription = "Directions Bus" + ) + "Drive" -> Icon( + imageVector = + Icons.Default.DirectionsCar, + contentDescription = "Directions Car" + ) + } + } + ) + } + } +} +// [END android_compose_components_multichoicesegmentedbutton] + +@Preview +@Composable +private fun MultiChoiceSegmentedButtonPreview() { + MultiChoiceSegmentedButton() +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index f913923e1..783963906 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -48,5 +48,6 @@ enum class TopComponentsDestination(val route: String, val title: String) { CarouselExamples("carouselExamples", "Carousel"), MenusExample("menusExamples", "Menus"), TooltipExamples("tooltipExamples", "Tooltips"), - NavigationDrawerExamples("navigationDrawerExamples", "Navigation drawer") + NavigationDrawerExamples("navigationDrawerExamples", "Navigation drawer"), + SegmentedButtonExamples("segmentedButtonExamples", "Segmented button") } From 5ccd4a83345cb23f46cd58924660fd23dbeacb94 Mon Sep 17 00:00:00 2001 From: Hoyt Summers Pittman Date: Mon, 28 Oct 2024 12:45:19 -0400 Subject: [PATCH 296/463] Adding views snippets module with Generated Preview samples (#384) * Adding views snippets module with Generated Preview samples * fixup --------- Co-authored-by: Summers Pittman --- gradle/libs.versions.toml | 2 +- settings.gradle.kts | 2 + views/.gitignore | 1 + views/README.md | 1 + views/build.gradle.kts | 56 ++++++++++++++ views/consumer-rules.pro | 0 views/proguard-rules.pro | 21 ++++++ views/src/main/AndroidManifest.xml | 20 +++++ .../views/appwidget/AppWidgetSnippets.kt | 73 +++++++++++++++++++ views/src/main/res/layout/widget_preview.xml | 24 ++++++ 10 files changed, 199 insertions(+), 1 deletion(-) create mode 100644 views/.gitignore create mode 100644 views/README.md create mode 100644 views/build.gradle.kts create mode 100644 views/consumer-rules.pro create mode 100644 views/proguard-rules.pro create mode 100644 views/src/main/AndroidManifest.xml create mode 100644 views/src/main/java/com/example/example/snippet/views/appwidget/AppWidgetSnippets.kt create mode 100644 views/src/main/res/layout/widget_preview.xml diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6aed96f52..7d649bdc2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,7 +11,7 @@ androidx-coordinator-layout = "1.2.0" androidx-corektx = "1.13.1" androidx-emoji2-views = "1.5.0" androidx-fragment-ktx = "1.8.4" -androidx-glance-appwidget = "1.1.0" +androidx-glance-appwidget = "1.1.1" androidx-lifecycle-compose = "2.8.6" androidx-lifecycle-runtime-compose = "2.8.6" androidx-navigation = "2.8.2" diff --git a/settings.gradle.kts b/settings.gradle.kts index f9ba4f22a..223663831 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -27,4 +27,6 @@ include( ":kotlin", ":compose:snippets", ":wear", + ":views", ) + diff --git a/views/.gitignore b/views/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/views/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/views/README.md b/views/README.md new file mode 100644 index 000000000..a9256a204 --- /dev/null +++ b/views/README.md @@ -0,0 +1 @@ +This is a sample project that contains the code snippets seen on https://android.devsite.corp.google.com/develop/ui/views diff --git a/views/build.gradle.kts b/views/build.gradle.kts new file mode 100644 index 000000000..80ee4edc8 --- /dev/null +++ b/views/build.gradle.kts @@ -0,0 +1,56 @@ +//Copyright 2024 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//https://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +// limitations under the License. + +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.android) +} + +android { + namespace = "com.example.example.snippet.views" + compileSdk = 35 + + defaultConfig { + minSdk = 35 + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles("consumer-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = "1.8" + } +} + +dependencies { + + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.appcompat) + implementation(libs.google.android.material) + implementation(libs.androidx.glance.appwidget) + +} \ No newline at end of file diff --git a/views/consumer-rules.pro b/views/consumer-rules.pro new file mode 100644 index 000000000..e69de29bb diff --git a/views/proguard-rules.pro b/views/proguard-rules.pro new file mode 100644 index 000000000..481bb4348 --- /dev/null +++ b/views/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/views/src/main/AndroidManifest.xml b/views/src/main/AndroidManifest.xml new file mode 100644 index 000000000..65ba8e1e0 --- /dev/null +++ b/views/src/main/AndroidManifest.xml @@ -0,0 +1,20 @@ + + + + + \ No newline at end of file diff --git a/views/src/main/java/com/example/example/snippet/views/appwidget/AppWidgetSnippets.kt b/views/src/main/java/com/example/example/snippet/views/appwidget/AppWidgetSnippets.kt new file mode 100644 index 000000000..cd6ac4855 --- /dev/null +++ b/views/src/main/java/com/example/example/snippet/views/appwidget/AppWidgetSnippets.kt @@ -0,0 +1,73 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.example.snippet.views.appwidget + +import android.appwidget.AppWidgetManager +import android.appwidget.AppWidgetProvider +import android.appwidget.AppWidgetProviderInfo +import android.content.ComponentName +import android.content.Context +import android.widget.RemoteViews +import androidx.glance.GlanceId +import androidx.glance.appwidget.GlanceAppWidget +import androidx.glance.appwidget.compose +import com.example.example.snippet.views.R + +class ExampleAppWidget:GlanceAppWidget() { + override suspend fun provideGlance(context: Context, id: GlanceId) { + TODO("Not yet implemented") + } + +} + +private object GeneratedPreviewWithoutGlance { + + lateinit var appContext: Context + + fun MyWidgetPreview() { + // [START android_view_appwidget_generatedpreview_with_remoteview] + AppWidgetManager.getInstance(appContext).setWidgetPreview( + ComponentName( + appContext, + ExampleAppWidgetReceiver::class.java + ), + AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN, + RemoteViews("com.example", R.layout.widget_preview) + ) + // [END android_view_appwidget_generatedpreview_with_remoteview] + } + + suspend fun MyGlanceWidgetPreview() { + // [START android_view_appwidget_generatedpreview_with_glance] + AppWidgetManager.getInstance(appContext).setWidgetPreview( + ComponentName( + appContext, + ExampleAppWidgetReceiver::class.java + ), + AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN, + ExampleAppWidget().compose( + context = appContext + ), + ) + + // [END android_view_appwidget_generatedpreview_with_glance] + } +} + +class ExampleAppWidgetReceiver: AppWidgetProvider() { + +} diff --git a/views/src/main/res/layout/widget_preview.xml b/views/src/main/res/layout/widget_preview.xml new file mode 100644 index 000000000..c9f449bb1 --- /dev/null +++ b/views/src/main/res/layout/widget_preview.xml @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file From 195bd61f42e9ab554f99c9111cb1d619a459c78f Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Tue, 29 Oct 2024 16:04:22 +0000 Subject: [PATCH 297/463] Adding top bar multi selection examples (#387) * Adding top bar multi selection examples * Apply Spotless * Remember some vals --------- Co-authored-by: jakeroseman --- .../compose/snippets/components/AppBar.kt | 167 ++++++++++++++++++ 1 file changed, 167 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt index 8199b00cd..354efe635 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/AppBar.kt @@ -16,12 +16,17 @@ package com.example.compose.snippets.components +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.combinedClickable +import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.Add @@ -30,6 +35,7 @@ import androidx.compose.material.icons.filled.Edit import androidx.compose.material.icons.filled.Image import androidx.compose.material.icons.filled.Menu import androidx.compose.material.icons.filled.Mic +import androidx.compose.material.icons.filled.Share import androidx.compose.material3.BottomAppBar import androidx.compose.material3.BottomAppBarDefaults import androidx.compose.material3.Button @@ -40,6 +46,7 @@ import androidx.compose.material3.FloatingActionButtonDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.LargeTopAppBar +import androidx.compose.material3.ListItem import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MediumTopAppBar import androidx.compose.material3.Scaffold @@ -52,6 +59,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.input.nestedscroll.nestedScroll @@ -76,6 +84,7 @@ fun AppBarExamples( "topBarMedium" -> MediumTopAppBarExample() "topBarLarge" -> LargeTopAppBarExample() "topBarNavigation" -> TopBarNavigationExample { navigateBack() } + "multiSelection" -> AppBarMultiSelectionExample() else -> AppBarOptions( toBottom = { selection = "bottomBar" }, toTopBarSmall = { selection = "topBar" }, @@ -83,6 +92,7 @@ fun AppBarExamples( toTopBarMedium = { selection = "topBarMedium" }, toTopBarLarge = { selection = "topBarLarge" }, toTopBarNavigation = { selection = "topBarNavigation" }, + toMultiSelection = { selection = "multiSelection" }, ) } } @@ -96,6 +106,7 @@ fun AppBarOptions( toTopBarMedium: () -> Unit, toTopBarLarge: () -> Unit, toTopBarNavigation: () -> Unit, + toMultiSelection: () -> Unit, ) { Column() { Button({ toBottom() }) { @@ -116,6 +127,9 @@ fun AppBarOptions( Button({ toTopBarNavigation() }) { Text("Top bar navigation example") } + Button({ toMultiSelection() }) { + Text("Top bar with multi selection list") + } } } @@ -382,3 +396,156 @@ fun ScrollContent(innerPadding: PaddingValues) { } } } + +@OptIn(ExperimentalMaterial3Api::class) +// [START android_compose_components_appbarselectionactions] +@Composable +fun AppBarSelectionActions( + selectedItems: Set, + modifier: Modifier = Modifier, +) { + val hasSelection = selectedItems.isNotEmpty() + val topBarText = if (hasSelection) { + "Selected ${selectedItems.size} items" + } else { + "List of items" + } + + TopAppBar( + title = { + Text(topBarText) + }, + colors = TopAppBarDefaults.topAppBarColors( + containerColor = MaterialTheme.colorScheme.primaryContainer, + titleContentColor = MaterialTheme.colorScheme.primary, + ), + actions = { + if (hasSelection) { + IconButton(onClick = { + /* click action */ + }) { + Icon( + imageVector = Icons.Filled.Share, + contentDescription = "Share items" + ) + } + } + }, + ) +} +// [END android_compose_components_appbarselectionactions] + +@Preview +@Composable +private fun AppBarSelectionActionsPreview() { + val selectedItems = setOf(1, 2, 3) + + AppBarSelectionActions(selectedItems) +} + +@OptIn(ExperimentalFoundationApi::class) +@Preview +// [START android_compose_components_appbarmultiselectionexample] +@Composable +private fun AppBarMultiSelectionExample( + modifier: Modifier = Modifier, +) { + val listItems by remember { mutableStateOf(listOf(1, 2, 3, 4, 5, 6)) } + var selectedItems by rememberSaveable { mutableStateOf(setOf()) } + + Scaffold( + topBar = { AppBarSelectionActions(selectedItems) } + ) { innerPadding -> + LazyColumn(contentPadding = innerPadding) { + itemsIndexed(listItems) { _, index -> + val isItemSelected = selectedItems.contains(index) + ListItemSelectable( + selected = isItemSelected, + Modifier + .combinedClickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null, + onClick = { + /* click action */ + }, + onLongClick = { + if (isItemSelected) selectedItems -= index else selectedItems += index + } + ) + ) + } + } + } +} +// [END android_compose_components_appbarmultiselectionexample] + +// [START android_compose_components_listitemselectable] +@Composable +fun ListItemSelectable( + selected: Boolean, + modifier: Modifier = Modifier +) { + Box(modifier = modifier) { + ListItem( + headlineContent = { Text("Long press to select or deselect item") }, + leadingContent = { + if (selected) { + Icon( + Icons.Filled.Check, + contentDescription = "Localized description", + ) + } + } + ) + } +} +// [END android_compose_components_listitemselectable] + +@Preview +@Composable +private fun ListItemSelectablePreview() { + ListItemSelectable(true) +} + +@OptIn(ExperimentalFoundationApi::class) +// [START android_compose_components_lazylistmultiselection +@Composable +fun LazyListMultiSelection( + listItems: List, + modifier: Modifier = Modifier, + contentPadding: PaddingValues = PaddingValues(0.dp), +) { + var selectedItems by rememberSaveable { mutableStateOf(setOf()) } + + LazyColumn(contentPadding = contentPadding) { + itemsIndexed(listItems) { _, index -> + val selected = selectedItems.contains(index) + ListItemSelectable( + selected = selected, + Modifier + .combinedClickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null, + onClick = { + /* click action */ + }, + onLongClick = { + if (selected) selectedItems -= index else selectedItems += index + } + ) + ) + } + } +} +// [END android_compose_components_lazylistmultiselection + +@Preview +@Composable +private fun LazyListMultiSelectionPreview() { + val listItems = listOf(1, 2, 3) + + LazyListMultiSelection( + listItems, + modifier = Modifier + ) +} From d081491af31dd87fcf4b657320e98ee9c3a67643 Mon Sep 17 00:00:00 2001 From: Chiara Chiappini Date: Thu, 31 Oct 2024 09:07:54 +0000 Subject: [PATCH 298/463] Include AppScaffold in navigation Snippet (#385) --- .../com/example/wear/snippets/navigation/Navigation.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/wear/src/main/java/com/example/wear/snippets/navigation/Navigation.kt b/wear/src/main/java/com/example/wear/snippets/navigation/Navigation.kt index 5c7fbe062..42507078c 100644 --- a/wear/src/main/java/com/example/wear/snippets/navigation/Navigation.kt +++ b/wear/src/main/java/com/example/wear/snippets/navigation/Navigation.kt @@ -47,8 +47,8 @@ import com.google.android.horologist.compose.rotaryinput.rotaryWithScroll @Composable fun navigation() { + // [START android_wear_navigation] AppScaffold { - // [START android_wear_navigation] val navController = rememberSwipeDismissableNavController() SwipeDismissableNavHost( navController = navController, @@ -63,16 +63,20 @@ fun navigation() { MessageDetail(id = it.arguments?.getString("id")!!) } } - // [END android_wear_navigation] } + // [START_EXCLUDE] } @OptIn(ExperimentalHorologistApi::class) @Composable fun MessageDetail(id: String) { + // [END_EXCLUDE] + // .. Screen level content goes here val scrollState = rememberScrollState() ScreenScaffold(scrollState = scrollState) { + // Screen content goes here + // [END android_wear_navigation] val padding = ScalingLazyColumnDefaults.padding( first = ItemType.Text, last = ItemType.Text From 81c1a2a1d0cb80dd91576236d381ac8f464b30e3 Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:42:17 +0000 Subject: [PATCH 299/463] Animate image size on scroll (#390) * Add animate image size on scroll example * Add simple comments and rename some variables * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman --- .../snippets/images/AnimateImageSnippets.kt | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/images/AnimateImageSnippets.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/images/AnimateImageSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/images/AnimateImageSnippets.kt new file mode 100644 index 000000000..2eab0220d --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/images/AnimateImageSnippets.kt @@ -0,0 +1,118 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.images + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableFloatStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.graphics.painter.ColorPainter +import androidx.compose.ui.input.nestedscroll.NestedScrollConnection +import androidx.compose.ui.input.nestedscroll.NestedScrollSource +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.IntOffset +import androidx.compose.ui.unit.dp + +// [START android_compose_images_imageresizeonscrollexample] +@Composable +fun ImageResizeOnScrollExample( + modifier: Modifier = Modifier, + maxImageSize: Dp = 300.dp, + minImageSize: Dp = 100.dp +) { + var currentImageSize by remember { mutableStateOf(maxImageSize) } + var imageScale by remember { mutableFloatStateOf(1f) } + + val nestedScrollConnection = remember { + object : NestedScrollConnection { + override fun onPreScroll(available: Offset, source: NestedScrollSource): Offset { + // Calculate the change in image size based on scroll delta + val delta = available.y + val newImageSize = currentImageSize + delta.dp + val previousImageSize = currentImageSize + + // Constrain the image size within the allowed bounds + currentImageSize = newImageSize.coerceIn(minImageSize, maxImageSize) + val consumed = currentImageSize - previousImageSize + + // Calculate the scale for the image + imageScale = currentImageSize / maxImageSize + + // Return the consumed scroll amount + return Offset(0f, consumed.value) + } + } + } + + Box(Modifier.nestedScroll(nestedScrollConnection)) { + LazyColumn( + Modifier + .fillMaxWidth() + .padding(15.dp) + .offset { + IntOffset(0, currentImageSize.roundToPx()) + } + ) { + // Placeholder list items + items(100, key = { it }) { + Text( + text = "Item: $it", + style = MaterialTheme.typography.bodyLarge + ) + } + } + + Image( + painter = ColorPainter(Color.Red), + contentDescription = "Red color image", + Modifier + .size(maxImageSize) + .align(Alignment.TopCenter) + .graphicsLayer { + scaleX = imageScale + scaleY = imageScale + // Center the image vertically as it scales + translationY = -(maxImageSize.toPx() - currentImageSize.toPx()) / 2f + } + ) + } +} +// [END android_compose_images_imageresizeonscrollexample] + +@Preview(showBackground = true) +@Composable +private fun ImageSizeOnScrollScreenPreview() { + ImageResizeOnScrollExample() +} From 1da22a01f7dbe6c610374e0db501827e8ada15df Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Tue, 5 Nov 2024 16:33:13 +0000 Subject: [PATCH 300/463] Add basic HTML text styling example (#389) * Add basic HTML text styling example * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman --- .../compose/snippets/text/HtmlStyling.kt | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/text/HtmlStyling.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/HtmlStyling.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/HtmlStyling.kt new file mode 100644 index 000000000..607fdf462 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/HtmlStyling.kt @@ -0,0 +1,62 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.text + +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.TextLinkStyles +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.text.fromHtml +import androidx.compose.ui.text.style.TextDecoration +import androidx.compose.ui.tooling.preview.Preview + +// [START android_compose_text_annotatedhtmlstringwithlink] +@Composable +fun AnnotatedHtmlStringWithLink( + modifier: Modifier = Modifier, + htmlText: String = """ +

Jetpack Compose

+
+ """.trimIndent() +) { + Text( + AnnotatedString.fromHtml( + htmlText, + linkStyles = TextLinkStyles( + style = SpanStyle( + textDecoration = TextDecoration.Underline, + fontStyle = FontStyle.Italic, + color = Color.Blue + ) + ) + ), + modifier + ) +} +// [END android_compose_text_annotatedhtmlstringwithlink] + +@Preview(showBackground = true) +@Composable +private fun AnnotatedHtmlStringWithLinkPreview() { + AnnotatedHtmlStringWithLink() +} From f595a0d317fd8aca6b33d4344bf87696cd45c481 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Wed, 6 Nov 2024 13:47:07 +0000 Subject: [PATCH 301/463] =?UTF-8?q?=F0=9F=A4=96=20Update=20Dependencies=20?= =?UTF-8?q?(#391)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🤖 Update Dependencies * Update compileSdk to 35 --------- Co-authored-by: Jolanda Verhoef --- gradle/libs.versions.toml | 38 +++++++++++++++++++------------------- wear/build.gradle.kts | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7d649bdc2..6d03c099c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,20 +1,20 @@ [versions] accompanist = "0.36.0" -androidGradlePlugin = "8.7.0" -androidx-activity-compose = "1.9.2" +androidGradlePlugin = "8.7.2" +androidx-activity-compose = "1.9.3" androidx-appcompat = "1.7.0" -androidx-compose-bom = "2024.09.03" +androidx-compose-bom = "2024.10.01" androidx-compose-ui-test = "1.7.0-alpha08" -androidx-constraintlayout = "2.1.4" -androidx-constraintlayout-compose = "1.0.1" +androidx-constraintlayout = "2.2.0" +androidx-constraintlayout-compose = "1.1.0" androidx-coordinator-layout = "1.2.0" -androidx-corektx = "1.13.1" +androidx-corektx = "1.15.0" androidx-emoji2-views = "1.5.0" -androidx-fragment-ktx = "1.8.4" +androidx-fragment-ktx = "1.8.5" androidx-glance-appwidget = "1.1.1" -androidx-lifecycle-compose = "2.8.6" -androidx-lifecycle-runtime-compose = "2.8.6" -androidx-navigation = "2.8.2" +androidx-lifecycle-compose = "2.8.7" +androidx-lifecycle-runtime-compose = "2.8.7" +androidx-navigation = "2.8.3" androidx-paging = "3.3.2" androidx-test = "1.6.1" androidx-test-espresso = "3.6.1" @@ -22,8 +22,8 @@ androidx-window = "1.3.0" androidxHiltNavigationCompose = "1.2.0" coil = "2.7.0" # @keep -compileSdk = "34" -compose-latest = "1.7.3" +compileSdk = "35" +compose-latest = "1.7.5" composeUiTooling = "1.4.0" coreSplashscreen = "1.0.1" coroutines = "1.9.0" @@ -33,13 +33,13 @@ gradle-versions = "0.51.0" hilt = "2.52" horologist = "0.6.20" junit = "4.13.2" -kotlin = "2.0.20" +kotlin = "2.0.21" kotlinxSerializationJson = "1.7.3" -ksp = "2.0.20-1.0.25" -maps-compose = "6.1.2" -material = "1.13.0-alpha06" +ksp = "2.0.21-1.0.26" +maps-compose = "6.2.0" +material = "1.13.0-alpha07" material3-adaptive = "1.0.0" -material3-adaptive-navigation-suite = "1.3.0" +material3-adaptive-navigation-suite = "1.3.1" media3 = "1.4.1" # @keep minSdk = "21" @@ -47,7 +47,7 @@ playServicesWearable = "18.2.0" recyclerview = "1.3.2" # @keep targetSdk = "34" -version-catalog-update = "0.8.4" +version-catalog-update = "0.8.5" wearComposeFoundation = "1.4.0" wearComposeMaterial = "1.4.0" @@ -108,7 +108,7 @@ androidx-test-core = { module = "androidx.test:core", version.ref = "androidx-te androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-test-espresso" } androidx-test-runner = "androidx.test:runner:1.6.2" androidx-window-core = { module = "androidx.window:window-core", version.ref = "androidx-window" } -androidx-work-runtime-ktx = "androidx.work:work-runtime-ktx:2.9.1" +androidx-work-runtime-ktx = "androidx.work:work-runtime-ktx:2.10.0" coil-kt-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } compose-foundation = { module = "androidx.wear.compose:compose-foundation", version.ref = "wearComposeFoundation" } compose-material = { module = "androidx.wear.compose:compose-material", version.ref = "wearComposeMaterial" } diff --git a/wear/build.gradle.kts b/wear/build.gradle.kts index 9725e5396..13fff7944 100644 --- a/wear/build.gradle.kts +++ b/wear/build.gradle.kts @@ -6,7 +6,7 @@ plugins { android { namespace = "com.example.wear" - compileSdk = 34 + compileSdk = 35 defaultConfig { applicationId = "com.example.wear" From f4e49876ac3fad90376323fa23b6991581d547c7 Mon Sep 17 00:00:00 2001 From: Tram Bui <62119967+trambui09@users.noreply.github.com> Date: Thu, 21 Nov 2024 13:27:59 -0800 Subject: [PATCH 302/463] add in predictive back snippets for NavHost and predictive back handler (#394) * add in predictive back snippets * Apply Spotless * add in basic predictivebackhandler composable example * Apply Spotless --------- Co-authored-by: trambui09 --- .../predictiveback/PredictiveBackSnippets.kt | 190 ++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/predictiveback/PredictiveBackSnippets.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/predictiveback/PredictiveBackSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/predictiveback/PredictiveBackSnippets.kt new file mode 100644 index 000000000..88ec5c4a1 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/predictiveback/PredictiveBackSnippets.kt @@ -0,0 +1,190 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.predictiveback + +import android.os.SystemClock +import androidx.activity.BackEventCompat +import androidx.activity.compose.PredictiveBackHandler +import androidx.compose.animation.EnterTransition +import androidx.compose.animation.core.Animatable +import androidx.compose.animation.scaleOut +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Surface +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableFloatStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.TransformOrigin +import androidx.compose.ui.input.pointer.util.VelocityTracker +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.unit.dp +import androidx.navigation.NavHostController +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import kotlin.coroutines.cancellation.CancellationException +import kotlinx.coroutines.flow.Flow + +@Composable +private fun PredictiveBackOverrideExit( + modifier: Modifier, +) { + val navController = rememberNavController() + + // [START android_compose_predictiveback_navhost] + NavHost( + navController = navController, + startDestination = "home", + popExitTransition = { + scaleOut( + targetScale = 0.9f, + transformOrigin = TransformOrigin(pivotFractionX = 0.5f, pivotFractionY = 0.5f) + ) + }, + popEnterTransition = { + EnterTransition.None + }, + modifier = modifier, + ) + // [END android_compose_predictiveback_navhost] + { + composable("home") { + HomeScreen( + modifier = modifier, + navController = navController, + ) + } + composable("settings") { + SettingsScreen( + modifier = modifier, + navController = navController, + ) + } + } +} + +@Composable +private fun HomeScreen( + modifier: Modifier = Modifier, + navController: NavHostController +) { +} + +@Composable +private fun SettingsScreen( + modifier: Modifier = Modifier, + navController: NavHostController +) { +} + +@Composable +private fun PredictiveBackHandlerBasicExample() { + + var boxScale by remember { mutableFloatStateOf(1F) } + + Box( + modifier = Modifier + .fillMaxSize(boxScale) + .background(Color.Blue) + ) + + // [START android_compose_predictivebackhandler_basic] + PredictiveBackHandler(true) { progress: Flow -> + // code for gesture back started + try { + progress.collect { backEvent -> + // code for progress + boxScale = 1F - (1F * backEvent.progress) + } + // code for completion + } catch (e: CancellationException) { + // code for cancellation + boxScale = 1F + } + } + // [END android_compose_predictivebackhandler_basic] +} + +@Composable +private fun PredictiveBackHandlerManualProgress() { + + Surface( + modifier = Modifier.fillMaxSize() + ) { + var drawerState by remember { + mutableStateOf(DrawerState.Closed) + } + + val translationX = remember { + Animatable(0f) + } + + val drawerWidth = with(LocalDensity.current) { + DrawerWidth.toPx() + } + translationX.updateBounds(0f, drawerWidth) + + val coroutineScope = rememberCoroutineScope() + + suspend fun closeDrawer(velocity: Float = 0f) { + translationX.animateTo(targetValue = 0f, initialVelocity = velocity) + drawerState = DrawerState.Closed + } + suspend fun openDrawer(velocity: Float = 0f) { + translationX.animateTo(targetValue = drawerWidth, initialVelocity = velocity) + drawerState = DrawerState.Open + } + + val velocityTracker = remember { + VelocityTracker() + } + + // [START android_compose_predictivebackhandler_manualprogress] + PredictiveBackHandler(drawerState == DrawerState.Open) { progress -> + try { + progress.collect { backEvent -> + val targetSize = (drawerWidth - (drawerWidth * backEvent.progress)) + translationX.snapTo(targetSize) + velocityTracker.addPosition( + SystemClock.uptimeMillis(), + Offset(backEvent.touchX, backEvent.touchY) + ) + } + closeDrawer(velocityTracker.calculateVelocity().x) + } catch (e: CancellationException) { + openDrawer(velocityTracker.calculateVelocity().x) + } + velocityTracker.resetTracking() + } + // [END android_compose_predictivebackhandler_manualprogress] + } +} + +private enum class DrawerState { + Open, + Closed +} + +private val DrawerWidth = 300.dp From 515b08ec9726abb958c04b3e62b6f9b2250438dc Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Wed, 27 Nov 2024 11:53:52 +0000 Subject: [PATCH 303/463] Add region tags to auto advance pager examples (#398) --- .../com/example/compose/snippets/layouts/PagerSnippets.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt index 45361ef88..899163367 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt @@ -413,6 +413,7 @@ fun PagerIndicator() { } } +// [START android_compose_autoadvancepager] @Composable fun AutoAdvancePager(pageItems: List, modifier: Modifier = Modifier) { Box(modifier = Modifier.fillMaxSize()) { @@ -457,6 +458,7 @@ fun AutoAdvancePager(pageItems: List, modifier: Modifier = Modifier) { PagerIndicator(pageItems.size, pagerState.currentPage) } } +// [END android_compose_autoadvancepager] @Preview @Composable @@ -470,6 +472,7 @@ private fun AutoAdvancePagerPreview() { AutoAdvancePager(pageItems = pageItems) } +// [START android_compose_pagerindicator] @Composable fun PagerIndicator(pageCount: Int, currentPageIndex: Int, modifier: Modifier = Modifier) { Box(modifier = Modifier.fillMaxSize()) { @@ -494,6 +497,7 @@ fun PagerIndicator(pageCount: Int, currentPageIndex: Int, modifier: Modifier = M } } } +// [END android_compose_pagerindicator] @Preview @Composable From fb654a90218dec10d36fc058b7350505f391bc30 Mon Sep 17 00:00:00 2001 From: Michael Stillwell Date: Wed, 27 Nov 2024 13:45:18 +0000 Subject: [PATCH 304/463] Init Wear Tiles snippets (#400) * Init Wear Tiles snippets * Add snippet markers * Add manifest snippet markers * Rename manifest snippet markers --- gradle/libs.versions.toml | 22 ++++++++ wear/build.gradle.kts | 11 ++++ wear/src/main/AndroidManifest.xml | 18 ++++++ .../com/example/wear/snippets/tile/Tile.kt | 53 ++++++++++++++++++ wear/src/main/res/drawable/tile_preview.png | Bin 0 -> 7335 bytes wear/src/main/res/values/strings.xml | 2 + 6 files changed, 106 insertions(+) create mode 100644 wear/src/main/java/com/example/wear/snippets/tile/Tile.kt create mode 100644 wear/src/main/res/drawable/tile_preview.png diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6d03c099c..6c83d9d77 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -30,6 +30,7 @@ coroutines = "1.9.0" glide = "1.0.0-beta01" google-maps = "19.0.0" gradle-versions = "0.51.0" +guava = "33.2.1-android" hilt = "2.52" horologist = "0.6.20" junit = "4.13.2" @@ -44,12 +45,22 @@ media3 = "1.4.1" # @keep minSdk = "21" playServicesWearable = "18.2.0" +protolayout = "1.3.0-alpha04" +protolayoutExpression = "1.3.0-alpha04" +protolayoutMaterial = "1.3.0-alpha04" recyclerview = "1.3.2" # @keep targetSdk = "34" +tiles = "1.5.0-alpha04" +tilesRenderer = "1.5.0-alpha04" +tilesTesting = "1.5.0-alpha04" +tilesTooling = "1.5.0-alpha04" +tilesToolingPreview = "1.5.0-alpha04" version-catalog-update = "0.8.5" +wear = "1.3.0" wearComposeFoundation = "1.4.0" wearComposeMaterial = "1.4.0" +wearToolingPreview = "1.0.0" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } @@ -103,10 +114,20 @@ androidx-media3-common = { module = "androidx.media3:media3-common", version.ref androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "media3" } androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "androidx-navigation" } androidx-paging-compose = { module = "androidx.paging:paging-compose", version.ref = "androidx-paging" } +androidx-protolayout = { module = "androidx.wear.protolayout:protolayout", version.ref = "protolayout" } +androidx-protolayout-expression = { module = "androidx.wear.protolayout:protolayout-expression", version.ref = "protolayoutExpression" } +androidx-protolayout-material = { module = "androidx.wear.protolayout:protolayout-material", version.ref = "protolayoutMaterial" } androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" } androidx-test-core = { module = "androidx.test:core", version.ref = "androidx-test" } androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-test-espresso" } androidx-test-runner = "androidx.test:runner:1.6.2" +androidx-tiles = { module = "androidx.wear.tiles:tiles", version.ref = "tiles" } +androidx-tiles-renderer = { module = "androidx.wear.tiles:tiles-renderer", version.ref = "tilesRenderer" } +androidx-tiles-testing = { module = "androidx.wear.tiles:tiles-testing", version.ref = "tilesTesting" } +androidx-tiles-tooling = { module = "androidx.wear.tiles:tiles-tooling", version.ref = "tilesTooling" } +androidx-tiles-tooling-preview = { module = "androidx.wear.tiles:tiles-tooling-preview", version.ref = "tilesToolingPreview" } +androidx-wear = { module = "androidx.wear:wear", version.ref = "wear" } +androidx-wear-tooling-preview = { module = "androidx.wear:wear-tooling-preview", version.ref = "wearToolingPreview" } androidx-window-core = { module = "androidx.window:window-core", version.ref = "androidx-window" } androidx-work-runtime-ktx = "androidx.work:work-runtime-ktx:2.10.0" coil-kt-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } @@ -117,6 +138,7 @@ glide-compose = { module = "com.github.bumptech.glide:compose", version.ref = "g google-android-material = { module = "com.google.android.material:material", version.ref = "material" } googlemaps-compose = { module = "com.google.maps.android:maps-compose", version.ref = "maps-compose" } googlemaps-maps = { module = "com.google.android.gms:play-services-maps", version.ref = "google-maps" } +guava = { module = "com.google.guava:guava", version.ref = "guava" } hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" } hilt-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hilt" } horologist-compose-layout = { module = "com.google.android.horologist:horologist-compose-layout", version.ref = "horologist" } diff --git a/wear/build.gradle.kts b/wear/build.gradle.kts index 13fff7944..154e7d37e 100644 --- a/wear/build.gradle.kts +++ b/wear/build.gradle.kts @@ -55,6 +55,17 @@ dependencies { implementation(libs.compose.ui.tooling) implementation(libs.play.services.wearable) + implementation(libs.androidx.tiles) + implementation(libs.androidx.wear) + implementation(libs.androidx.protolayout) + implementation(libs.androidx.protolayout.material) + implementation(libs.androidx.protolayout.expression) + debugImplementation(libs.androidx.tiles.renderer) + testImplementation(libs.androidx.tiles.testing) + implementation(libs.androidx.wear.tooling.preview) + implementation(libs.androidx.tiles.tooling.preview) + debugImplementation(libs.androidx.tiles.tooling) + implementation(libs.guava) implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.compose.ui) implementation(libs.androidx.compose.ui.tooling.preview) diff --git a/wear/src/main/AndroidManifest.xml b/wear/src/main/AndroidManifest.xml index f0d2328e2..84c4785a2 100644 --- a/wear/src/main/AndroidManifest.xml +++ b/wear/src/main/AndroidManifest.xml @@ -34,6 +34,24 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/wear/src/main/java/com/example/wear/snippets/tile/Tile.kt b/wear/src/main/java/com/example/wear/snippets/tile/Tile.kt new file mode 100644 index 000000000..74a294832 --- /dev/null +++ b/wear/src/main/java/com/example/wear/snippets/tile/Tile.kt @@ -0,0 +1,53 @@ +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.wear.snippets.tile + +import androidx.wear.protolayout.ColorBuilders.argb +import androidx.wear.protolayout.ResourceBuilders.Resources +import androidx.wear.protolayout.TimelineBuilders.Timeline +import androidx.wear.protolayout.material.Text +import androidx.wear.protolayout.material.Typography +import androidx.wear.tiles.RequestBuilders +import androidx.wear.tiles.RequestBuilders.ResourcesRequest +import androidx.wear.tiles.TileBuilders.Tile +import androidx.wear.tiles.TileService +import com.google.common.util.concurrent.Futures + +private const val RESOURCES_VERSION = "1" + +// [START android_wear_tile_mytileservice] +class MyTileService : TileService() { + + override fun onTileRequest(requestParams: RequestBuilders.TileRequest) = + Futures.immediateFuture(Tile.Builder() + .setResourcesVersion(RESOURCES_VERSION) + .setTileTimeline( + Timeline.fromLayoutElement( + Text.Builder(this, "Hello World!") + .setTypography(Typography.TYPOGRAPHY_BODY1) + .setColor(argb(0xFFFFFFFF.toInt())) + .build())) + .build()) + + override fun onTileResourcesRequest(requestParams: ResourcesRequest) = + Futures.immediateFuture(Resources.Builder() + .setVersion(RESOURCES_VERSION) + .build() + ) + +} +// [END android_wear_tile_mytileservice] \ No newline at end of file diff --git a/wear/src/main/res/drawable/tile_preview.png b/wear/src/main/res/drawable/tile_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..b2a254a16c2d32f4b8df60587fd240228e1f0505 GIT binary patch literal 7335 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 Input Voice Text Entry Message List + Hello Tile + Hello Tile Description \ No newline at end of file From c699e70b7ad6df9e7982424c6e91bc4fc27f86ca Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Thu, 28 Nov 2024 14:08:20 +0000 Subject: [PATCH 305/463] Create misc module, add broadcast receiver snippets (#397) * Create misc module, add broadcast receiver snippets * Apply Spotless --- .github/workflows/apply_spotless.yml | 11 +- .github/workflows/build.yml | 2 + misc/.gitignore | 1 + misc/build.gradle.kts | 72 +++++ {shared => misc}/proguard-rules.pro | 0 misc/src/main/AndroidManifest.xml | 50 ++++ .../BroadcastReceiverJavaSnippets.java | 120 ++++++++ .../snippets/BroadcastReceiverSnippets.kt | 272 ++++++++++++++++++ .../com/example/snippets/DataRepository.kt | 33 +++ .../java/com/example/snippets/MainActivity.kt | 66 +++++ .../com/example/snippets/MyApplication.kt | 23 ++ .../snippets/navigation/Destination.kt | 22 ++ .../snippets/navigation/LandingScreen.kt | 101 +++++++ .../com/example/snippets/ui/theme/Color.kt | 27 ++ .../com/example/snippets/ui/theme/Theme.kt | 73 +++++ .../com/example/snippets/ui/theme/Type.kt | 50 ++++ .../res/drawable/ic_launcher_background.xml | 133 +++++---- .../res/drawable/ic_launcher_foreground.xml | 30 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 1 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 1 + .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1404 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2898 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 982 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1772 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1900 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3918 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2884 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 5914 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 7778 bytes misc/src/main/res/values/colors.xml | 10 + misc/src/main/res/values/strings.xml | 3 + misc/src/main/res/values/themes.xml | 5 + settings.gradle.kts | 5 +- shared/.gitignore | 1 - shared/build.gradle.kts | 37 --- shared/src/main/AndroidManifest.xml | 3 - .../drawable-v24/ic_launcher_foreground.xml | 34 --- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 2963 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 4905 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2060 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 2783 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4490 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 6895 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 6387 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 10413 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 9128 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 15132 -> 0 bytes shared/src/main/res/values/colors.xml | 6 - shared/src/main/res/values/strings.xml | 3 - shared/src/main/res/values/styles.xml | 11 - .../example/wear/snippets/rotary/Rotary.kt | 2 +- .../com/example/wear/snippets/tile/Tile.kt | 32 ++- 53 files changed, 1056 insertions(+), 184 deletions(-) create mode 100644 misc/.gitignore create mode 100644 misc/build.gradle.kts rename {shared => misc}/proguard-rules.pro (100%) create mode 100644 misc/src/main/AndroidManifest.xml create mode 100644 misc/src/main/java/com/example/snippets/BroadcastReceiverJavaSnippets.java create mode 100644 misc/src/main/java/com/example/snippets/BroadcastReceiverSnippets.kt create mode 100644 misc/src/main/java/com/example/snippets/DataRepository.kt create mode 100644 misc/src/main/java/com/example/snippets/MainActivity.kt create mode 100644 misc/src/main/java/com/example/snippets/MyApplication.kt create mode 100644 misc/src/main/java/com/example/snippets/navigation/Destination.kt create mode 100644 misc/src/main/java/com/example/snippets/navigation/LandingScreen.kt create mode 100644 misc/src/main/java/com/example/snippets/ui/theme/Color.kt create mode 100644 misc/src/main/java/com/example/snippets/ui/theme/Theme.kt create mode 100644 misc/src/main/java/com/example/snippets/ui/theme/Type.kt rename {shared => misc}/src/main/res/drawable/ic_launcher_background.xml (54%) create mode 100644 misc/src/main/res/drawable/ic_launcher_foreground.xml rename {shared => misc}/src/main/res/mipmap-anydpi-v26/ic_launcher.xml (79%) rename {shared => misc}/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml (79%) create mode 100644 misc/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 misc/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 misc/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 misc/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 misc/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 misc/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 misc/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 misc/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 misc/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 misc/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 misc/src/main/res/values/colors.xml create mode 100644 misc/src/main/res/values/strings.xml create mode 100644 misc/src/main/res/values/themes.xml delete mode 100644 shared/.gitignore delete mode 100644 shared/build.gradle.kts delete mode 100644 shared/src/main/AndroidManifest.xml delete mode 100644 shared/src/main/res/drawable-v24/ic_launcher_foreground.xml delete mode 100644 shared/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 shared/src/main/res/mipmap-hdpi/ic_launcher_round.png delete mode 100644 shared/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 shared/src/main/res/mipmap-mdpi/ic_launcher_round.png delete mode 100644 shared/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 shared/src/main/res/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 shared/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 shared/src/main/res/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 shared/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 shared/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png delete mode 100644 shared/src/main/res/values/colors.xml delete mode 100644 shared/src/main/res/values/strings.xml delete mode 100644 shared/src/main/res/values/styles.xml diff --git a/.github/workflows/apply_spotless.yml b/.github/workflows/apply_spotless.yml index db01dad52..5ba1f6fe5 100644 --- a/.github/workflows/apply_spotless.yml +++ b/.github/workflows/apply_spotless.yml @@ -44,10 +44,13 @@ jobs: - name: Run spotlessApply run: ./gradlew :compose:spotlessApply --init-script gradle/init.gradle.kts --no-configuration-cache --stacktrace + - name: Run spotlessApply for Wear + run: ./gradlew :wear:spotlessApply --init-script gradle/init.gradle.kts --no-configuration-cache --stacktrace + + - name: Run spotlessApply for Misc + run: ./gradlew :misc:spotlessApply --init-script gradle/init.gradle.kts --no-configuration-cache --stacktrace + - name: Auto-commit if spotlessApply has changes uses: stefanzweifel/git-auto-commit-action@v5 with: - commit_message: Apply Spotless - - - name: Run spotlessApply for Wear - run: ./gradlew :wear:spotlessApply --init-script gradle/init.gradle.kts --no-configuration-cache --stacktrace + commit_message: Apply Spotless \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8337b4237..97b36f468 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -45,3 +45,5 @@ jobs: run: ./gradlew :kotlin:build - name: Build Wear snippets run: ./gradlew :wear:build + - name: Build misc snippets + run: ./gradlew :misc:build diff --git a/misc/.gitignore b/misc/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/misc/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/misc/build.gradle.kts b/misc/build.gradle.kts new file mode 100644 index 000000000..de867bb88 --- /dev/null +++ b/misc/build.gradle.kts @@ -0,0 +1,72 @@ +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.ksp) + alias(libs.plugins.hilt) + alias(libs.plugins.compose.compiler) +} + +android { + compileSdk = libs.versions.compileSdk.get().toInt() + namespace = "com.example.snippets" + + defaultConfig { + applicationId = "com.example.snippets" + minSdk = libs.versions.minSdk.get().toInt() + targetSdk = libs.versions.targetSdk.get().toInt() + versionCode = 1 + versionName = "1.0" + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + kotlin { + jvmToolchain(17) + } + + buildTypes { + getByName("debug") { + signingConfig = signingConfigs.getByName("debug") + } + + getByName("release") { + isMinifyEnabled = false + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro") + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + buildFeatures { + compose = true + // Disable unused AGP features + viewBinding = true + } + +} +dependencies { + val composeBom = platform(libs.androidx.compose.bom) + implementation(composeBom) + androidTestImplementation(composeBom) + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.activity.compose) + implementation(libs.androidx.compose.runtime) + implementation(libs.androidx.compose.foundation) + implementation(libs.androidx.compose.foundation.layout) + implementation(libs.androidx.compose.ui.util) + implementation(libs.androidx.compose.ui.tooling.preview) + implementation(libs.androidx.compose.material3) + + implementation(libs.hilt.android) + implementation(libs.androidx.hilt.navigation.compose) + implementation(libs.kotlinx.serialization.json) + ksp(libs.hilt.compiler) + + implementation(libs.androidx.lifecycle.runtime) + testImplementation(libs.junit) + androidTestImplementation(libs.junit) + androidTestImplementation(libs.androidx.test.core) + androidTestImplementation(libs.androidx.test.runner) + androidTestImplementation(libs.androidx.test.espresso.core) +} diff --git a/shared/proguard-rules.pro b/misc/proguard-rules.pro similarity index 100% rename from shared/proguard-rules.pro rename to misc/proguard-rules.pro diff --git a/misc/src/main/AndroidManifest.xml b/misc/src/main/AndroidManifest.xml new file mode 100644 index 000000000..0a7a5c6f0 --- /dev/null +++ b/misc/src/main/AndroidManifest.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/misc/src/main/java/com/example/snippets/BroadcastReceiverJavaSnippets.java b/misc/src/main/java/com/example/snippets/BroadcastReceiverJavaSnippets.java new file mode 100644 index 000000000..083639954 --- /dev/null +++ b/misc/src/main/java/com/example/snippets/BroadcastReceiverJavaSnippets.java @@ -0,0 +1,120 @@ +package com.example.snippets; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; + +import androidx.activity.ComponentActivity; +import androidx.core.content.ContextCompat; + +import java.util.Objects; + +import javax.inject.Inject; + +import dagger.hilt.android.qualifiers.ApplicationContext; + +// Warning for reader: This file has the Java code snippets for completeness of the corresponding +// documentation page, but these snippets are not part of the actual sample. Refer to the Kotlin +// code for the actual sample. +public class BroadcastReceiverJavaSnippets { + + // [START android_broadcast_receiver_2_class_java] + public static class MyBroadcastReceiver extends BroadcastReceiver { + + @Inject + DataRepository dataRepository; + + @Override + public void onReceive(Context context, Intent intent) { + if (Objects.equals(intent.getAction(), "com.example.snippets.ACTION_UPDATE_DATA")) { + String data = intent.getStringExtra("com.example.snippets.DATA"); + // Do something with the data, for example send it to a data repository: + if (data != null) { dataRepository.updateData(data); } + } + } + } + // [END android_broadcast_receiver_2_class_java] + + /** @noinspection ConstantValue, unused */ + public static class BroadcastReceiverViewModel { + Context context; + + public BroadcastReceiverViewModel(@ApplicationContext Context context) { + this.context = context; + } + + // [START android_broadcast_receiver_3_definition_java] + MyBroadcastReceiver myBroadcastReceiver = new MyBroadcastReceiver(); + // [END android_broadcast_receiver_3_definition_java] + + public void registerBroadcastReceiver() { + // [START android_broadcast_receiver_4_intent_filter_java] + IntentFilter filter = new IntentFilter("com.example.snippets.ACTION_UPDATE_DATA"); + // [END android_broadcast_receiver_4_intent_filter_java] + // [START android_broadcast_receiver_5_exported_java] + boolean listenToBroadcastsFromOtherApps = false; + int receiverFlags = listenToBroadcastsFromOtherApps + ? ContextCompat.RECEIVER_EXPORTED + : ContextCompat.RECEIVER_NOT_EXPORTED; + // [END android_broadcast_receiver_5_exported_java] + + // [START android_broadcast_receiver_6_register_java] + ContextCompat.registerReceiver(context, myBroadcastReceiver, filter, receiverFlags); + // [END android_broadcast_receiver_6_register_java] + + // [START android_broadcast_receiver_12_register_with_permission_java] + ContextCompat.registerReceiver( + context, myBroadcastReceiver, filter, + android.Manifest.permission.ACCESS_COARSE_LOCATION, + null, // scheduler that defines thread, null means run on main thread + receiverFlags + ); + // [END android_broadcast_receiver_12_register_with_permission_java] + } + + public void unregisterBroadcastReceiver() { + context.unregisterReceiver(myBroadcastReceiver); + } + + public void sendBroadcast(String newData, boolean usePermission) { + if(usePermission) { + // [START android_broadcast_receiver_8_send_java] + Intent intent = new Intent("com.example.snippets.ACTION_UPDATE_DATA"); + intent.putExtra("com.example.snippets.DATA", newData); + intent.setPackage("com.example.snippets"); + context.sendBroadcast(intent); + // [END android_broadcast_receiver_8_send_java] + } else { + Intent intent = new Intent("com.example.snippets.ACTION_UPDATE_DATA"); + intent.putExtra("com.example.snippets.DATA", newData); + intent.setPackage("com.example.snippets"); + // [START android_broadcast_receiver_9_send_with_permission_java] + context.sendBroadcast(intent, android.Manifest.permission.ACCESS_COARSE_LOCATION); + // [END android_broadcast_receiver_9_send_with_permission_java] + } + } + } + + /** @noinspection InnerClassMayBeStatic*/ + // [START android_broadcast_receiver_13_activity_java] + class MyActivity extends ComponentActivity { + MyBroadcastReceiver myBroadcastReceiver; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + // [START_EXCLUDE] + IntentFilter filter = new IntentFilter("com.example.snippets.ACTION_UPDATE_DATA"); + boolean listenToBroadcastsFromOtherApps = false; + int receiverFlags = listenToBroadcastsFromOtherApps + ? ContextCompat.RECEIVER_EXPORTED + : ContextCompat.RECEIVER_NOT_EXPORTED; + // [END_EXCLUDE] + ContextCompat.registerReceiver(this, myBroadcastReceiver, filter, receiverFlags); + // Set content + } + } + // [END android_broadcast_receiver_13_activity_java] +} diff --git a/misc/src/main/java/com/example/snippets/BroadcastReceiverSnippets.kt b/misc/src/main/java/com/example/snippets/BroadcastReceiverSnippets.kt new file mode 100644 index 000000000..dda35cbe0 --- /dev/null +++ b/misc/src/main/java/com/example/snippets/BroadcastReceiverSnippets.kt @@ -0,0 +1,272 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.snippets + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.Button +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.unit.dp +import androidx.core.content.ContextCompat +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.ViewModel +import androidx.lifecycle.compose.LifecycleStartEffect +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import dagger.hilt.android.AndroidEntryPoint +import dagger.hilt.android.lifecycle.HiltViewModel +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject + +// Warning for reader: This file contains both the code snippets for apps _sending_ broadcasts, as +// those that are _receiving_ broadcasts. Do not consider this a reference implementation. +// +// The actual sample demonstrates how data can be passed from a broadcast receiver back to the UI, +// through an intermediary data repository. + +@AndroidEntryPoint +// [START android_broadcast_receiver_2_class] +class MyBroadcastReceiver : BroadcastReceiver() { + + @Inject + lateinit var dataRepository: DataRepository + + override fun onReceive(context: Context, intent: Intent) { + if (intent.action == "com.example.snippets.ACTION_UPDATE_DATA") { + val data = intent.getStringExtra("com.example.snippets.DATA") ?: "No data" + // Do something with the data, for example send it to a data repository: + dataRepository.updateData(data) + } + } +} +// [END android_broadcast_receiver_2_class] + +@HiltViewModel +class BroadcastReceiverViewModel @Inject constructor( + @ApplicationContext private val context: Context, + dataRepository: DataRepository +) : ViewModel() { + val data = dataRepository.data + + @Suppress("MemberVisibilityCanBePrivate") + // [START android_broadcast_receiver_3_definition] + val myBroadcastReceiver = MyBroadcastReceiver() + // [END android_broadcast_receiver_3_definition] + + fun registerBroadcastReceiver() { + // [START android_broadcast_receiver_4_intent_filter] + val filter = IntentFilter("com.example.snippets.ACTION_UPDATE_DATA") + // [END android_broadcast_receiver_4_intent_filter] + // [START android_broadcast_receiver_5_exported] + val listenToBroadcastsFromOtherApps = false + val receiverFlags = if (listenToBroadcastsFromOtherApps) { + ContextCompat.RECEIVER_EXPORTED + } else { + ContextCompat.RECEIVER_NOT_EXPORTED + } + // [END android_broadcast_receiver_5_exported] + + // [START android_broadcast_receiver_6_register] + ContextCompat.registerReceiver(context, myBroadcastReceiver, filter, receiverFlags) + // [END android_broadcast_receiver_6_register] + + // [START android_broadcast_receiver_12_register_with_permission] + ContextCompat.registerReceiver( + context, myBroadcastReceiver, filter, + android.Manifest.permission.ACCESS_COARSE_LOCATION, + null, // scheduler that defines thread, null means run on main thread + receiverFlags + ) + // [END android_broadcast_receiver_12_register_with_permission] + } + + fun unregisterBroadcastReceiver() { + context.unregisterReceiver(myBroadcastReceiver) + } + + fun sendBroadcast(newData: String, usePermission: Boolean = false) { + if (!usePermission) { + // [START android_broadcast_receiver_8_send] + val intent = Intent("com.example.snippets.ACTION_UPDATE_DATA").apply { + putExtra("com.example.snippets.DATA", newData) + setPackage("com.example.snippets") + } + context.sendBroadcast(intent) + // [END android_broadcast_receiver_8_send] + } else { + val intent = Intent("com.example.snippets.ACTION_UPDATE_DATA").apply { + putExtra("com.example.snippets.DATA", newData) + setPackage("com.example.snippets") + } + // [START android_broadcast_receiver_9_send_with_permission] + context.sendBroadcast(intent, android.Manifest.permission.ACCESS_COARSE_LOCATION) + // [END android_broadcast_receiver_9_send_with_permission] + } + } +} + +@Suppress("NAME_SHADOWING") +@Composable +fun LifecycleScopedBroadcastReceiver( + registerReceiver: () -> Unit, + unregisterReceiver: () -> Unit +) { + val registerReceiver by rememberUpdatedState(registerReceiver) + val unregisterReceiver by rememberUpdatedState(unregisterReceiver) + // [START android_broadcast_receiver_7_lifecycle_scoped] + LifecycleStartEffect(true) { + registerReceiver() + onStopOrDispose { unregisterReceiver() } + } + // [END android_broadcast_receiver_7_lifecycle_scoped] +} + +@Composable +fun BroadcastReceiverSample( + modifier: Modifier = Modifier, + viewModel: BroadcastReceiverViewModel = hiltViewModel() +) { + val data by viewModel.data.collectAsStateWithLifecycle() + BroadcastReceiverSample( + modifier = modifier, + data = data, + registerBroadcastReceiver = viewModel::registerBroadcastReceiver, + unregisterBroadcastReceiver = viewModel::unregisterBroadcastReceiver, + sendBroadcast = viewModel::sendBroadcast + ) +} + +@Composable +fun BroadcastReceiverSample( + modifier: Modifier = Modifier, + data: String, + registerBroadcastReceiver: () -> Unit, + unregisterBroadcastReceiver: () -> Unit, + sendBroadcast: (newData: String) -> Unit +) { + var newData by remember { mutableStateOf("") } + Scaffold { innerPadding -> + Column( + modifier + .padding(innerPadding) + .padding(16.dp) + ) { + Text("Fill in a word, send broadcast, and see it added to the bottom") + Spacer(Modifier.height(16.dp)) + TextField(newData, onValueChange = { newData = it }, Modifier.widthIn(min = 160.dp)) + Spacer(Modifier.height(16.dp)) + Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) { + Button(onClick = { sendBroadcast(newData) }) { + Text("Send broadcast") + } + } + Spacer(Modifier.height(16.dp)) + Text(data, Modifier.verticalScroll(rememberScrollState())) + } + } + LifecycleScopedBroadcastReceiver(registerBroadcastReceiver, unregisterBroadcastReceiver) +} + +class MyBroadcastReceiverWithPermission : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + // no-op, only used to demonstrate manifest registration of receiver with permission + } +} + +// Ignore following code - it's only used to demonstrate best practices, not part of the sample +@Suppress("unused") +// [START android_broadcast_receiver_13_activity] +class MyActivity : ComponentActivity() { + private val myBroadcastReceiver = MyBroadcastReceiver() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + // [START_EXCLUDE] + val filter = IntentFilter("com.example.snippets.ACTION_UPDATE_DATA") + val listenToBroadcastsFromOtherApps = false + val receiverFlags = if (listenToBroadcastsFromOtherApps) { + ContextCompat.RECEIVER_EXPORTED + } else { + ContextCompat.RECEIVER_NOT_EXPORTED + } + + // [END_EXCLUDE] + ContextCompat.registerReceiver(this, myBroadcastReceiver, filter, receiverFlags) + setContent { MyApp() } + } + + override fun onDestroy() { + super.onDestroy() + // When you forget to unregister your receiver here, you're causing a leak! + this.unregisterReceiver(myBroadcastReceiver) + } +} +// [END android_broadcast_receiver_13_activity] + +@Composable +fun MyApp() {} + +@Suppress("unused") +// [START android_broadcast_receiver_14_stateless] +@Composable +fun MyStatefulScreen() { + val myBroadcastReceiver = remember { MyBroadcastReceiver() } + val context = LocalContext.current + LifecycleStartEffect(true) { + // [START_EXCLUDE] + val filter = IntentFilter("com.example.snippets.ACTION_UPDATE_DATA") + val listenToBroadcastsFromOtherApps = false + val flags = if (listenToBroadcastsFromOtherApps) { + ContextCompat.RECEIVER_EXPORTED + } else { + ContextCompat.RECEIVER_NOT_EXPORTED + } + // [END_EXCLUDE] + ContextCompat.registerReceiver(context, myBroadcastReceiver, filter, flags) + onStopOrDispose { context.unregisterReceiver(myBroadcastReceiver) } + } + MyStatelessScreen() +} + +@Composable +fun MyStatelessScreen() { + // Implement your screen +} +// [END android_broadcast_receiver_14_stateless] diff --git a/misc/src/main/java/com/example/snippets/DataRepository.kt b/misc/src/main/java/com/example/snippets/DataRepository.kt new file mode 100644 index 000000000..7e626e5a8 --- /dev/null +++ b/misc/src/main/java/com/example/snippets/DataRepository.kt @@ -0,0 +1,33 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.snippets + +import javax.inject.Inject +import javax.inject.Singleton +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow + +@Singleton +class DataRepository @Inject constructor() { + // You would normally save this data in a database or other persistent storage + private val _data: MutableStateFlow = MutableStateFlow("This text will be updated") + val data: StateFlow = _data + + fun updateData(data: String) { + _data.value += "\n$data" + } +} diff --git a/misc/src/main/java/com/example/snippets/MainActivity.kt b/misc/src/main/java/com/example/snippets/MainActivity.kt new file mode 100644 index 000000000..a687939e9 --- /dev/null +++ b/misc/src/main/java/com/example/snippets/MainActivity.kt @@ -0,0 +1,66 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.snippets + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.ui.Modifier +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import com.example.snippets.navigation.Destination +import com.example.snippets.navigation.LandingScreen +import com.example.snippets.ui.theme.SnippetsTheme +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class MainActivity : ComponentActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContent { + SnippetsTheme { + val navController = rememberNavController() + // A surface container using the 'background' color from the theme + Surface( + modifier = Modifier.fillMaxSize(), + color = MaterialTheme.colorScheme.background + ) { + NavHost(navController, startDestination = "LandingScreen") { + composable("LandingScreen") { + LandingScreen { navController.navigate(it.route) } + } + Destination.entries.forEach { destination -> + composable(destination.route) { + when (destination) { + Destination.BroadcastReceiverExamples -> BroadcastReceiverSample() + // Add your destination here + } + } + } + } + } + } + } + } +} diff --git a/misc/src/main/java/com/example/snippets/MyApplication.kt b/misc/src/main/java/com/example/snippets/MyApplication.kt new file mode 100644 index 000000000..4e4a187c6 --- /dev/null +++ b/misc/src/main/java/com/example/snippets/MyApplication.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.snippets + +import android.app.Application +import dagger.hilt.android.HiltAndroidApp + +@HiltAndroidApp +class MyApplication : Application() diff --git a/misc/src/main/java/com/example/snippets/navigation/Destination.kt b/misc/src/main/java/com/example/snippets/navigation/Destination.kt new file mode 100644 index 000000000..59f424a7b --- /dev/null +++ b/misc/src/main/java/com/example/snippets/navigation/Destination.kt @@ -0,0 +1,22 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.snippets.navigation + +enum class Destination(val route: String, val title: String) { + BroadcastReceiverExamples("broadcastReceiverExamples", "Broadcast Receiver Examples"), + // Add your example here +} diff --git a/misc/src/main/java/com/example/snippets/navigation/LandingScreen.kt b/misc/src/main/java/com/example/snippets/navigation/LandingScreen.kt new file mode 100644 index 000000000..f096906dd --- /dev/null +++ b/misc/src/main/java/com/example/snippets/navigation/LandingScreen.kt @@ -0,0 +1,101 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.snippets.navigation + +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ListItem +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun LandingScreen( + navigate: (Destination) -> Unit +) { + Scaffold( + topBar = { + TopAppBar(title = { + Text(text = "Android snippets",) + }) + } + ) { padding -> + NavigationItems(modifier = Modifier.padding(padding)) { navigate(it) } + } +} + +@Composable +fun NavigationItems( + modifier: Modifier = Modifier, + navigate: (Destination) -> Unit +) { + LazyColumn( + modifier = modifier + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + items(Destination.entries) { destination -> + NavigationItem(destination) { + navigate( + destination + ) + } + } + } +} + +@Composable +fun NavigationItem(destination: Destination, onClick: () -> Unit) { + ListItem( + headlineContent = { + Text(destination.title) + }, + modifier = Modifier + .heightIn(min = 48.dp) + .clickable { + onClick() + } + ) +} diff --git a/misc/src/main/java/com/example/snippets/ui/theme/Color.kt b/misc/src/main/java/com/example/snippets/ui/theme/Color.kt new file mode 100644 index 000000000..662ef48ff --- /dev/null +++ b/misc/src/main/java/com/example/snippets/ui/theme/Color.kt @@ -0,0 +1,27 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.snippets.ui.theme + +import androidx.compose.ui.graphics.Color + +val Purple80 = Color(0xFFD0BCFF) +val PurpleGrey80 = Color(0xFFCCC2DC) +val Pink80 = Color(0xFFEFB8C8) + +val Purple40 = Color(0xFF6650a4) +val PurpleGrey40 = Color(0xFF625b71) +val Pink40 = Color(0xFF7D5260) diff --git a/misc/src/main/java/com/example/snippets/ui/theme/Theme.kt b/misc/src/main/java/com/example/snippets/ui/theme/Theme.kt new file mode 100644 index 000000000..4dcf62e85 --- /dev/null +++ b/misc/src/main/java/com/example/snippets/ui/theme/Theme.kt @@ -0,0 +1,73 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.snippets.ui.theme + +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalContext + +private val DarkColorScheme = darkColorScheme( + primary = Purple80, + secondary = PurpleGrey80, + tertiary = Pink80 +) + +private val LightColorScheme = lightColorScheme( + primary = Purple40, + secondary = PurpleGrey40, + tertiary = Pink40 + + /* Other default colors to override + background = Color(0xFFFFFBFE), + surface = Color(0xFFFFFBFE), + onPrimary = Color.White, + onSecondary = Color.White, + onTertiary = Color.White, + onBackground = Color(0xFF1C1B1F), + onSurface = Color(0xFF1C1B1F), + */ +) + +@Composable +fun SnippetsTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + // Dynamic color is available on Android 12+ + dynamicColor: Boolean = true, + content: @Composable () -> Unit +) { + val colorScheme = when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + + darkTheme -> DarkColorScheme + else -> LightColorScheme + } + + MaterialTheme( + colorScheme = colorScheme, + typography = Typography, + content = content + ) +} diff --git a/misc/src/main/java/com/example/snippets/ui/theme/Type.kt b/misc/src/main/java/com/example/snippets/ui/theme/Type.kt new file mode 100644 index 000000000..f383a07ba --- /dev/null +++ b/misc/src/main/java/com/example/snippets/ui/theme/Type.kt @@ -0,0 +1,50 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.snippets.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +// Set of Material typography styles to start with +val Typography = Typography( + bodyLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp + ) + /* Other default text styles to override + titleLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 22.sp, + lineHeight = 28.sp, + letterSpacing = 0.sp + ), + labelSmall = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Medium, + fontSize = 11.sp, + lineHeight = 16.sp, + letterSpacing = 0.5.sp + ) + */ +) diff --git a/shared/src/main/res/drawable/ic_launcher_background.xml b/misc/src/main/res/drawable/ic_launcher_background.xml similarity index 54% rename from shared/src/main/res/drawable/ic_launcher_background.xml rename to misc/src/main/res/drawable/ic_launcher_background.xml index 336b6dca0..07d5da9cb 100644 --- a/shared/src/main/res/drawable/ic_launcher_background.xml +++ b/misc/src/main/res/drawable/ic_launcher_background.xml @@ -1,171 +1,170 @@ - + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> diff --git a/misc/src/main/res/drawable/ic_launcher_foreground.xml b/misc/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 000000000..2b068d114 --- /dev/null +++ b/misc/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/shared/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/misc/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 79% rename from shared/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to misc/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index eca70cfe5..6f3b755bf 100644 --- a/shared/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/misc/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -2,4 +2,5 @@ + \ No newline at end of file diff --git a/shared/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/misc/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 79% rename from shared/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to misc/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index eca70cfe5..6f3b755bf 100644 --- a/shared/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/misc/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -2,4 +2,5 @@ + \ No newline at end of file diff --git a/misc/src/main/res/mipmap-hdpi/ic_launcher.webp b/misc/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..c209e78ecd372343283f4157dcfd918ec5165bb3 GIT binary patch literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG literal 0 HcmV?d00001 diff --git a/misc/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/misc/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9 GIT binary patch literal 2898 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 literal 0 HcmV?d00001 diff --git a/misc/src/main/res/mipmap-mdpi/ic_launcher.webp b/misc/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..4f0f1d64e58ba64d180ce43ee13bf9a17835fbca GIT binary patch literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&il$0000G0000l001ul06|PpNU8t;00Dqo+t#w^ z^1csucXz7-Qrhzl9HuHB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!TQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

FJ$wK}0tWNB{uH;AM~i literal 0 HcmV?d00001 diff --git a/misc/src/main/res/mipmap-xhdpi/ic_launcher.webp b/misc/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..948a3070fe34c611c42c0d3ad3013a0dce358be0 GIT binary patch literal 1900 zcmV-y2b1_xNk&Fw2LJ$9MM6+kP&il$0000G0001A003VA06|PpNH75a00DqwTbm-~ zullQTcXxO9ki!OCRx^i?oR|n!<8G0=kI^!JSjFi-LL*`V;ET0H2IXfU0*i>o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? literal 0 HcmV?d00001 diff --git a/misc/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/misc/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f GIT binary patch literal 3918 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp zwO~NVXwXCl;jE<}>%@xz|=8fIJAB?>+E{7)|4l${4ngA3G|=r z2Dyv;VVWSgZx9Wj>qUjleGl3Ei9K4>h!(lPS%8VOG>Xu0%6VDz^O=bjJmuP7>DeUv zrbI}MlHB^^d?{zv6d=@_ZD2lg1&G7UjnVN{1}9WkaM3H~btX0GtSzB+tZ^qRgWo4m z!GmimlG$=wgXCnr6j@m<1gAL46#T~5Bnm=2{^@>|t&`9mkEPddj zAvG~@Tv~TAm2i%VW}R-g(Z0)z-Y|szHr@rk>4MAyG*Ma*7Yh#H7(!-5>DZ@8r;_dx z{prSe<>~099F8vsYd2xff7uAS%7{S)f(|@me3t2$iy&NEc7OUEchp@9A|X;;IA>8!oX+y(BKJ$EzV* znR$z;!L$s7uy@{OT~nG#B!NRraT8(X##Ho!0r_o@gg0CA-9H^;-uE&?$2$nHv_00o z%cbuUc-tCx$Uh&EZ4Nf4Zgqv)Y6>usG3>GeQnxx_Z6+PcbX-+ysbt1hQ`K1LDpOE? zrAhIZhSN9yVIAOa22gn577tbc&i3|3V8NWy&!tw##`}9*x}gtI^h1DzZRA>UuaJG) zaZ7j)dq!O}{?#8Y7~7i6fHh4{`pL?>-18|p!S75Y#^DM>-S3)vuZG+Q7l@ek zQP~#cBpWgg#mApc_sPYjpw8odQuRokmTkzcNl`^CcKB7e&;zViV;{Y{o^Y$%7i0m# z62%#1Lq!RC?}lK>%mp}T!3Xv;L*0v*>USLm``N%>w>@fwC+#T&Tx2bN4w(20JB}oU zuSa6v^kXi0xPs?pbaOHnyiqq6By1EZY9OZ^^QA>{q-Hsd&m`pbQ%8121aWG-F5xf zlZ%;B{;C>X19|`^_?dVyCq>n+41w7|!tUS!{9rHlbhX=SZO5CQ^;!Du_E7*`GiR^Q w)2!4MKjfSAeNo!9>IaV6aUZ*?W>} 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

UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s literal 0 HcmV?d00001 diff --git a/misc/src/main/res/values/colors.xml b/misc/src/main/res/values/colors.xml new file mode 100644 index 000000000..f8c6127d3 --- /dev/null +++ b/misc/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/misc/src/main/res/values/strings.xml b/misc/src/main/res/values/strings.xml new file mode 100644 index 000000000..870fc4736 --- /dev/null +++ b/misc/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Background Snippets + \ No newline at end of file diff --git a/misc/src/main/res/values/themes.xml b/misc/src/main/res/values/themes.xml new file mode 100644 index 000000000..65078ebe0 --- /dev/null +++ b/misc/src/main/res/values/themes.xml @@ -0,0 +1,5 @@ + + + + - - diff --git a/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt b/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt index a6115816f..97bace500 100644 --- a/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt +++ b/wear/src/main/java/com/example/wear/snippets/rotary/Rotary.kt @@ -243,7 +243,7 @@ fun SnapScrollableScreen() { } @Composable -fun PositionScrollIndicator(){ +fun PositionScrollIndicator() { // [START android_wear_rotary_position_indicator] val listState = rememberScalingLazyListState() Scaffold( diff --git a/wear/src/main/java/com/example/wear/snippets/tile/Tile.kt b/wear/src/main/java/com/example/wear/snippets/tile/Tile.kt index 74a294832..58cbaa758 100644 --- a/wear/src/main/java/com/example/wear/snippets/tile/Tile.kt +++ b/wear/src/main/java/com/example/wear/snippets/tile/Tile.kt @@ -33,21 +33,25 @@ private const val RESOURCES_VERSION = "1" class MyTileService : TileService() { override fun onTileRequest(requestParams: RequestBuilders.TileRequest) = - Futures.immediateFuture(Tile.Builder() - .setResourcesVersion(RESOURCES_VERSION) - .setTileTimeline( - Timeline.fromLayoutElement( - Text.Builder(this, "Hello World!") - .setTypography(Typography.TYPOGRAPHY_BODY1) - .setColor(argb(0xFFFFFFFF.toInt())) - .build())) - .build()) + Futures.immediateFuture( + Tile.Builder() + .setResourcesVersion(RESOURCES_VERSION) + .setTileTimeline( + Timeline.fromLayoutElement( + Text.Builder(this, "Hello World!") + .setTypography(Typography.TYPOGRAPHY_BODY1) + .setColor(argb(0xFFFFFFFF.toInt())) + .build() + ) + ) + .build() + ) override fun onTileResourcesRequest(requestParams: ResourcesRequest) = - Futures.immediateFuture(Resources.Builder() - .setVersion(RESOURCES_VERSION) - .build() + Futures.immediateFuture( + Resources.Builder() + .setVersion(RESOURCES_VERSION) + .build() ) - } -// [END android_wear_tile_mytileservice] \ No newline at end of file +// [END android_wear_tile_mytileservice] From 6f61cb5f4f7b71fca66a46cd4e32cab20d771a06 Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Wed, 4 Dec 2024 18:18:10 +0000 Subject: [PATCH 306/463] Add live search with FilterTextView example (#402) * Add live search with FilterTextView example * Apply Spotless --------- Co-authored-by: jakeroseman --- .../compose/snippets/text/FilterText.kt | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/text/FilterText.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/FilterText.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/FilterText.kt new file mode 100644 index 000000000..6967ea4f8 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/FilterText.kt @@ -0,0 +1,105 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.text + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.material3.ListItem +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.lifecycle.ViewModel +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import androidx.lifecycle.viewmodel.compose.viewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow + +// [START android_compose_text_filtertextviewmodel] +class FilterTextViewModel : ViewModel() { + private val items = listOf( + "Cupcake", + "Donut", + "Eclair", + "Froyo", + "Gingerbread", + "Honeycomb", + "Ice Cream Sandwich" + ) + + private val _filteredItems = MutableStateFlow(items) + var filteredItems: StateFlow> = _filteredItems + + fun filterText(input: String) { + // This filter returns the full items list when input is an empty string. + _filteredItems.value = items.filter { it.contains(input, ignoreCase = true) } + } +} +// [END android_compose_text_filtertextviewmodel] + +// [START android_compose_text_filtertextview] +@Composable +fun FilterTextView(modifier: Modifier = Modifier, viewModel: FilterTextViewModel = viewModel()) { + val filteredItems by viewModel.filteredItems.collectAsStateWithLifecycle() + var text by rememberSaveable { mutableStateOf("") } + + Column( + modifier = Modifier + .fillMaxSize() + .padding(all = 10.dp) + ) { + OutlinedTextField( + value = text, + onValueChange = { + text = it + viewModel.filterText(text) + }, + label = { Text("Filter Text") }, + modifier = Modifier.fillMaxWidth() + ) + + LazyColumn { + items( + count = filteredItems.size, + key = { index -> filteredItems[index] } + ) { + ListItem( + headlineContent = { Text(filteredItems[it]) }, + modifier = Modifier + .fillParentMaxWidth() + .padding(10.dp) + ) + } + } + } +} +// [END android_compose_text_filtertextview] + +@Preview(showBackground = true) +@Composable +private fun FilterTextViewPreview() { + FilterTextView() +} From 0d07b08ebffe0d648d499ab8003c9bad1fc4f3e3 Mon Sep 17 00:00:00 2001 From: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Date: Wed, 4 Dec 2024 18:53:41 +0000 Subject: [PATCH 307/463] Add single option radio button example (#401) * Add single option radio button example * Apply Spotless * Apply Spotless --------- Co-authored-by: jakeroseman --- .../snippets/components/RadioButton.kt | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/components/RadioButton.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/RadioButton.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/RadioButton.kt new file mode 100644 index 000000000..93961f245 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/RadioButton.kt @@ -0,0 +1,77 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.components + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.selection.selectable +import androidx.compose.foundation.selection.selectableGroup +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.RadioButton +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.semantics.Role +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +// [START android_compose_components_radiobuttonsingleselection] +@Composable +fun RadioButtonSingleSelection(modifier: Modifier = Modifier) { + val radioOptions = listOf("Calls", "Missed", "Friends") + val (selectedOption, onOptionSelected) = remember { mutableStateOf(radioOptions[0]) } + // Note that Modifier.selectableGroup() is essential to ensure correct accessibility behavior + Column(modifier.selectableGroup()) { + radioOptions.forEach { text -> + Row( + Modifier + .fillMaxWidth() + .height(56.dp) + .selectable( + selected = (text == selectedOption), + onClick = { onOptionSelected(text) }, + role = Role.RadioButton + ) + .padding(horizontal = 16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + RadioButton( + selected = (text == selectedOption), + onClick = null // null recommended for accessibility with screen readers + ) + Text( + text = text, + style = MaterialTheme.typography.bodyLarge, + modifier = Modifier.padding(start = 16.dp) + ) + } + } + } +} +// [END android_compose_components_radiobuttonsingleselection] + +@Preview +@Composable +private fun RadioButtonSingleSelectionPreview() { + RadioButtonSingleSelection() +} From c79a414f423d09d009c92d69fb71e882e6edd39b Mon Sep 17 00:00:00 2001 From: Tram Bui <62119967+trambui09@users.noreply.github.com> Date: Fri, 6 Dec 2024 09:49:02 -0800 Subject: [PATCH 308/463] update to use type safe routes (#399) --- .../snippets/predictiveback/PredictiveBackSnippets.kt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/predictiveback/PredictiveBackSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/predictiveback/PredictiveBackSnippets.kt index 88ec5c4a1..fb94e1186 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/predictiveback/PredictiveBackSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/predictiveback/PredictiveBackSnippets.kt @@ -46,6 +46,10 @@ import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import kotlin.coroutines.cancellation.CancellationException import kotlinx.coroutines.flow.Flow +import kotlinx.serialization.Serializable + +@Serializable data object Home +@Serializable data object Settings @Composable private fun PredictiveBackOverrideExit( @@ -56,7 +60,7 @@ private fun PredictiveBackOverrideExit( // [START android_compose_predictiveback_navhost] NavHost( navController = navController, - startDestination = "home", + startDestination = Home, popExitTransition = { scaleOut( targetScale = 0.9f, @@ -70,13 +74,13 @@ private fun PredictiveBackOverrideExit( ) // [END android_compose_predictiveback_navhost] { - composable("home") { + composable { HomeScreen( modifier = modifier, navController = navController, ) } - composable("settings") { + composable { SettingsScreen( modifier = modifier, navController = navController, @@ -119,6 +123,7 @@ private fun PredictiveBackHandlerBasicExample() { boxScale = 1F - (1F * backEvent.progress) } // code for completion + boxScale = 0F } catch (e: CancellationException) { // code for cancellation boxScale = 1F From 273d39951753854a1c8c052e757bd75849dca179 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Mon, 9 Dec 2024 13:29:53 +0000 Subject: [PATCH 309/463] Migrated relevant MotionCompose snippets into snippets (#411) * Migrated relevant MotionCompose snippets into snippets * Apply Spotless --------- Co-authored-by: riggaroo --- .../snippets/animations/demo/Cheese.kt | 182 +++++++++++ .../animations/demo/SimpleScaffold.kt | 58 ++++ .../demo/custom/CustomCanvasAnimation.kt | 110 +++++++ .../snippets/animations/demo/fade/FadeDemo.kt | 107 +++++++ .../demo/fadethrough/FadeThroughDemo.kt | 256 ++++++++++++++++ .../demo/sharedaxis/SharedAxisDemo.kt | 282 ++++++++++++++++++ .../sharedtransform/SharedTransformDemo.kt | 261 ++++++++++++++++ .../src/main/res/drawable-nodpi/cheese_1.jpg | Bin 0 -> 92915 bytes .../src/main/res/drawable-nodpi/cheese_2.jpg | Bin 0 -> 219481 bytes .../src/main/res/drawable-nodpi/cheese_3.jpg | Bin 0 -> 185185 bytes .../src/main/res/drawable-nodpi/cheese_4.jpg | Bin 0 -> 262322 bytes .../src/main/res/drawable-nodpi/cheese_5.jpg | Bin 0 -> 432062 bytes .../snippets/src/main/res/values/strings.xml | 2 + gradle/libs.versions.toml | 8 +- 14 files changed, 1262 insertions(+), 4 deletions(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/Cheese.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/SimpleScaffold.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/custom/CustomCanvasAnimation.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/fade/FadeDemo.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/fadethrough/FadeThroughDemo.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/sharedaxis/SharedAxisDemo.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/sharedtransform/SharedTransformDemo.kt create mode 100644 compose/snippets/src/main/res/drawable-nodpi/cheese_1.jpg create mode 100644 compose/snippets/src/main/res/drawable-nodpi/cheese_2.jpg create mode 100644 compose/snippets/src/main/res/drawable-nodpi/cheese_3.jpg create mode 100644 compose/snippets/src/main/res/drawable-nodpi/cheese_4.jpg create mode 100644 compose/snippets/src/main/res/drawable-nodpi/cheese_5.jpg diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/Cheese.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/Cheese.kt new file mode 100644 index 000000000..2468bce9f --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/Cheese.kt @@ -0,0 +1,182 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.animations.demo + +import androidx.annotation.DrawableRes +import com.example.compose.snippets.R + +val CheeseImages = listOf( + R.drawable.cheese_1, + R.drawable.cheese_2, + R.drawable.cheese_3, + R.drawable.cheese_4, + R.drawable.cheese_5 +) + +val CheeseNames = listOf( + "Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi", + "Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu", "Airag", "Airedale", + "Aisy Cendre", "Allgauer Emmentaler", "Alverca", "Ambert", "American Cheese", + "Ami du Chambertin", "Anejo Enchilado", "Anneau du Vic-Bilh", "Anthoriro", "Appenzell", + "Aragon", "Ardi Gasna", "Ardrahan", "Armenian String", "Aromes au Gene de Marc", + "Asadero", "Asiago", "Aubisque Pyrenees", "Autun", "Avaxtskyr", "Baby Swiss", + "Babybel", "Baguette Laonnaise", "Bakers", "Baladi", "Balaton", "Bandal", "Banon", + "Barry's Bay Cheddar", "Basing", "Basket Cheese", "Bath Cheese", "Bavarian Bergkase", + "Baylough", "Beaufort", "Beauvoorde", "Beenleigh Blue", "Beer Cheese", "Bel Paese", + "Bergader", "Bergere Bleue", "Berkswell", "Beyaz Peynir", "Bierkase", "Bishop Kennedy", + "Blarney", "Bleu d'Auvergne", "Bleu de Gex", "Bleu de Laqueuille", + "Bleu de Septmoncel", "Bleu Des Causses", "Blue", "Blue Castello", "Blue Rathgore", + "Blue Vein (Australian)", "Blue Vein Cheeses", "Bocconcini", "Bocconcini (Australian)", + "Boeren Leidenkaas", "Bonchester", "Bosworth", "Bougon", "Boule Du Roves", + "Boulette d'Avesnes", "Boursault", "Boursin", "Bouyssou", "Bra", "Braudostur", + "Breakfast Cheese", "Brebis du Lavort", "Brebis du Lochois", "Brebis du Puyfaucon", + "Bresse Bleu", "Brick", "Brie", "Brie de Meaux", "Brie de Melun", "Brillat-Savarin", + "Brin", "Brin d' Amour", "Brin d'Amour", "Brinza (Burduf Brinza)", + "Briquette de Brebis", "Briquette du Forez", "Broccio", "Broccio Demi-Affine", + "Brousse du Rove", "Bruder Basil", "Brusselae Kaas (Fromage de Bruxelles)", "Bryndza", + "Buchette d'Anjou", "Buffalo", "Burgos", "Butte", "Butterkase", "Button (Innes)", + "Buxton Blue", "Cabecou", "Caboc", "Cabrales", "Cachaille", "Caciocavallo", "Caciotta", + "Caerphilly", "Cairnsmore", "Calenzana", "Cambazola", "Camembert de Normandie", + "Canadian Cheddar", "Canestrato", "Cantal", "Caprice des Dieux", "Capricorn Goat", + "Capriole Banon", "Carre de l'Est", "Casciotta di Urbino", "Cashel Blue", "Castellano", + "Castelleno", "Castelmagno", "Castelo Branco", "Castigliano", "Cathelain", + "Celtic Promise", "Cendre d'Olivet", "Cerney", "Chabichou", "Chabichou du Poitou", + "Chabis de Gatine", "Chaource", "Charolais", "Chaumes", "Cheddar", + "Cheddar Clothbound", "Cheshire", "Chevres", "Chevrotin des Aravis", "Chontaleno", + "Civray", "Coeur de Camembert au Calvados", "Coeur de Chevre", "Colby", "Cold Pack", + "Comte", "Coolea", "Cooleney", "Coquetdale", "Corleggy", "Cornish Pepper", + "Cotherstone", "Cotija", "Cottage Cheese", "Cottage Cheese (Australian)", + "Cougar Gold", "Coulommiers", "Coverdale", "Crayeux de Roncq", "Cream Cheese", + "Cream Havarti", "Crema Agria", "Crema Mexicana", "Creme Fraiche", "Crescenza", + "Croghan", "Crottin de Chavignol", "Crottin du Chavignol", "Crowdie", "Crowley", + "Cuajada", "Curd", "Cure Nantais", "Curworthy", "Cwmtawe Pecorino", + "Cypress Grove Chevre", "Danablu (Danish Blue)", "Danbo", "Danish Fontina", + "Daralagjazsky", "Dauphin", "Delice des Fiouves", "Denhany Dorset Drum", "Derby", + "Dessertnyj Belyj", "Devon Blue", "Devon Garland", "Dolcelatte", "Doolin", + "Doppelrhamstufel", "Dorset Blue Vinney", "Double Gloucester", "Double Worcester", + "Dreux a la Feuille", "Dry Jack", "Duddleswell", "Dunbarra", "Dunlop", "Dunsyre Blue", + "Duroblando", "Durrus", "Dutch Mimolette (Commissiekaas)", "Edam", "Edelpilz", + "Emental Grand Cru", "Emlett", "Emmental", "Epoisses de Bourgogne", "Esbareich", + "Esrom", "Etorki", "Evansdale Farmhouse Brie", "Evora De L'Alentejo", "Exmoor Blue", + "Explorateur", "Feta", "Feta (Australian)", "Figue", "Filetta", "Fin-de-Siecle", + "Finlandia Swiss", "Finn", "Fiore Sardo", "Fleur du Maquis", "Flor de Guia", + "Flower Marie", "Folded", "Folded cheese with mint", "Fondant de Brebis", + "Fontainebleau", "Fontal", "Fontina Val d'Aosta", "Formaggio di capra", "Fougerus", + "Four Herb Gouda", "Fourme d' Ambert", "Fourme de Haute Loire", "Fourme de Montbrison", + "Fresh Jack", "Fresh Mozzarella", "Fresh Ricotta", "Fresh Truffles", "Fribourgeois", + "Friesekaas", "Friesian", "Friesla", "Frinault", "Fromage a Raclette", "Fromage Corse", + "Fromage de Montagne de Savoie", "Fromage Frais", "Fruit Cream Cheese", + "Frying Cheese", "Fynbo", "Gabriel", "Galette du Paludier", "Galette Lyonnaise", + "Galloway Goat's Milk Gems", "Gammelost", "Gaperon a l'Ail", "Garrotxa", "Gastanberra", + "Geitost", "Gippsland Blue", "Gjetost", "Gloucester", "Golden Cross", "Gorgonzola", + "Gornyaltajski", "Gospel Green", "Gouda", "Goutu", "Gowrie", "Grabetto", "Graddost", + "Grafton Village Cheddar", "Grana", "Grana Padano", "Grand Vatel", + "Grataron d' Areches", "Gratte-Paille", "Graviera", "Greuilh", "Greve", + "Gris de Lille", "Gruyere", "Gubbeen", "Guerbigny", "Halloumi", + "Halloumy (Australian)", "Haloumi-Style Cheese", "Harbourne Blue", "Havarti", + "Heidi Gruyere", "Hereford Hop", "Herrgardsost", "Herriot Farmhouse", "Herve", + "Hipi Iti", "Hubbardston Blue Cow", "Hushallsost", "Iberico", "Idaho Goatster", + "Idiazabal", "Il Boschetto al Tartufo", "Ile d'Yeu", "Isle of Mull", "Jarlsberg", + "Jermi Tortes", "Jibneh Arabieh", "Jindi Brie", "Jubilee Blue", "Juustoleipa", + "Kadchgall", "Kaseri", "Kashta", "Kefalotyri", "Kenafa", "Kernhem", "Kervella Affine", + "Kikorangi", "King Island Cape Wickham Brie", "King River Gold", "Klosterkaese", + "Knockalara", "Kugelkase", "L'Aveyronnais", "L'Ecir de l'Aubrac", "La Taupiniere", + "La Vache Qui Rit", "Laguiole", "Lairobell", "Lajta", "Lanark Blue", "Lancashire", + "Langres", "Lappi", "Laruns", "Lavistown", "Le Brin", "Le Fium Orbo", "Le Lacandou", + "Le Roule", "Leafield", "Lebbene", "Leerdammer", "Leicester", "Leyden", "Limburger", + "Lincolnshire Poacher", "Lingot Saint Bousquet d'Orb", "Liptauer", "Little Rydings", + "Livarot", "Llanboidy", "Llanglofan Farmhouse", "Loch Arthur Farmhouse", + "Loddiswell Avondale", "Longhorn", "Lou Palou", "Lou Pevre", "Lyonnais", "Maasdam", + "Macconais", "Mahoe Aged Gouda", "Mahon", "Malvern", "Mamirolle", "Manchego", + "Manouri", "Manur", "Marble Cheddar", "Marbled Cheeses", "Maredsous", "Margotin", + "Maribo", "Maroilles", "Mascares", "Mascarpone", "Mascarpone (Australian)", + "Mascarpone Torta", "Matocq", "Maytag Blue", "Meira", "Menallack Farmhouse", + "Menonita", "Meredith Blue", "Mesost", "Metton (Cancoillotte)", "Meyer Vintage Gouda", + "Mihalic Peynir", "Milleens", "Mimolette", "Mine-Gabhar", "Mini Baby Bells", "Mixte", + "Molbo", "Monastery Cheeses", "Mondseer", "Mont D'or Lyonnais", "Montasio", + "Monterey Jack", "Monterey Jack Dry", "Morbier", "Morbier Cru de Montagne", + "Mothais a la Feuille", "Mozzarella", "Mozzarella (Australian)", + "Mozzarella di Bufala", "Mozzarella Fresh, in water", "Mozzarella Rolls", "Munster", + "Murol", "Mycella", "Myzithra", "Naboulsi", "Nantais", "Neufchatel", + "Neufchatel (Australian)", "Niolo", "Nokkelost", "Northumberland", "Oaxaca", + "Olde York", "Olivet au Foin", "Olivet Bleu", "Olivet Cendre", + "Orkney Extra Mature Cheddar", "Orla", "Oschtjepka", "Ossau Fermier", "Ossau-Iraty", + "Oszczypek", "Oxford Blue", "P'tit Berrichon", "Palet de Babligny", "Paneer", "Panela", + "Pannerone", "Pant ys Gawn", "Parmesan (Parmigiano)", "Parmigiano Reggiano", + "Pas de l'Escalette", "Passendale", "Pasteurized Processed", "Pate de Fromage", + "Patefine Fort", "Pave d'Affinois", "Pave d'Auge", "Pave de Chirac", "Pave du Berry", + "Pecorino", "Pecorino in Walnut Leaves", "Pecorino Romano", "Peekskill Pyramid", + "Pelardon des Cevennes", "Pelardon des Corbieres", "Penamellera", "Penbryn", + "Pencarreg", "Perail de Brebis", "Petit Morin", "Petit Pardou", "Petit-Suisse", + "Picodon de Chevre", "Picos de Europa", "Piora", "Pithtviers au Foin", + "Plateau de Herve", "Plymouth Cheese", "Podhalanski", "Poivre d'Ane", "Polkolbin", + "Pont l'Eveque", "Port Nicholson", "Port-Salut", "Postel", "Pouligny-Saint-Pierre", + "Pourly", "Prastost", "Pressato", "Prince-Jean", "Processed Cheddar", "Provolone", + "Provolone (Australian)", "Pyengana Cheddar", "Pyramide", "Quark", + "Quark (Australian)", "Quartirolo Lombardo", "Quatre-Vents", "Quercy Petit", + "Queso Blanco", "Queso Blanco con Frutas --Pina y Mango", "Queso de Murcia", + "Queso del Montsec", "Queso del Tietar", "Queso Fresco", "Queso Fresco (Adobera)", + "Queso Iberico", "Queso Jalapeno", "Queso Majorero", "Queso Media Luna", + "Queso Para Frier", "Queso Quesadilla", "Rabacal", "Raclette", "Ragusano", "Raschera", + "Reblochon", "Red Leicester", "Regal de la Dombes", "Reggianito", "Remedou", + "Requeson", "Richelieu", "Ricotta", "Ricotta (Australian)", "Ricotta Salata", "Ridder", + "Rigotte", "Rocamadour", "Rollot", "Romano", "Romans Part Dieu", "Roncal", "Roquefort", + "Roule", "Rouleau De Beaulieu", "Royalp Tilsit", "Rubens", "Rustinu", "Saaland Pfarr", + "Saanenkaese", "Saga", "Sage Derby", "Sainte Maure", "Saint-Marcellin", + "Saint-Nectaire", "Saint-Paulin", "Salers", "Samso", "San Simon", "Sancerre", + "Sap Sago", "Sardo", "Sardo Egyptian", "Sbrinz", "Scamorza", "Schabzieger", "Schloss", + "Selles sur Cher", "Selva", "Serat", "Seriously Strong Cheddar", "Serra da Estrela", + "Sharpam", "Shelburne Cheddar", "Shropshire Blue", "Siraz", "Sirene", "Smoked Gouda", + "Somerset Brie", "Sonoma Jack", "Sottocenare al Tartufo", "Soumaintrain", + "Sourire Lozerien", "Spenwood", "Sraffordshire Organic", "St. Agur Blue Cheese", + "Stilton", "Stinking Bishop", "String", "Sussex Slipcote", "Sveciaost", "Swaledale", + "Sweet Style Swiss", "Swiss", "Syrian (Armenian String)", "Tala", "Taleggio", "Tamie", + "Tasmania Highland Chevre Log", "Taupiniere", "Teifi", "Telemea", "Testouri", + "Tete de Moine", "Tetilla", "Texas Goat Cheese", "Tibet", "Tillamook Cheddar", + "Tilsit", "Timboon Brie", "Toma", "Tomme Brulee", "Tomme d'Abondance", + "Tomme de Chevre", "Tomme de Romans", "Tomme de Savoie", "Tomme des Chouans", "Tommes", + "Torta del Casar", "Toscanello", "Touree de L'Aubier", "Tourmalet", + "Trappe (Veritable)", "Trois Cornes De Vendee", "Tronchon", "Trou du Cru", "Truffe", + "Tupi", "Turunmaa", "Tymsboro", "Tyn Grug", "Tyning", "Ubriaco", "Ulloa", + "Vacherin-Fribourgeois", "Valencay", "Vasterbottenost", "Venaco", "Vendomois", + "Vieux Corse", "Vignotte", "Vulscombe", "Waimata Farmhouse Blue", + "Washed Rind Cheese (Australian)", "Waterloo", "Weichkaese", "Wellington", + "Wensleydale", "White Stilton", "Whitestone Farmhouse", "Wigmore", "Woodside Cabecou", + "Xanadu", "Xynotyro", "Yarg Cornish", "Yarra Valley Pyramid", "Yorkshire Blue", + "Zamorano", "Zanetti Grana Padano", "Zanetti Parmigiano Reggiano" +) + +data class Cheese( + val id: Long, + val name: String, + @DrawableRes val image: Int +) { + companion object { + fun all(): List { + return CheeseNames.mapIndexed { i, name -> + Cheese( + id = (i + 1).toLong(), + name = name, + image = CheeseImages[ + ((name.hashCode() % CheeseImages.size) + CheeseImages.size) % + CheeseImages.size + ] + ) + } + } + } +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/SimpleScaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/SimpleScaffold.kt new file mode 100644 index 000000000..987d545a3 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/SimpleScaffold.kt @@ -0,0 +1,58 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.animations.demo + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxScope +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.statusBarsPadding +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun SimpleScaffold( + title: String, + modifier: Modifier = Modifier, + content: @Composable BoxScope.() -> Unit +) { + Scaffold( + topBar = { + TopAppBar( + title = { + Text(text = title) + }, + modifier = Modifier + .statusBarsPadding() + ) + }, + modifier = modifier + ) { padding -> + Box( + modifier = Modifier + .fillMaxSize() + .padding(padding) + ) { + content() + } + } +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/custom/CustomCanvasAnimation.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/custom/CustomCanvasAnimation.kt new file mode 100644 index 000000000..e82794346 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/custom/CustomCanvasAnimation.kt @@ -0,0 +1,110 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.animations.demo.custom + +import androidx.compose.animation.core.Animatable +import androidx.compose.animation.core.Spring +import androidx.compose.animation.core.SpringSpec +import androidx.compose.animation.core.spring +import androidx.compose.foundation.Canvas +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.size +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.layout.onSizeChanged +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.IntSize +import androidx.compose.ui.unit.dp +import kotlinx.coroutines.delay + +/** + * A custom loading animation example using Canvas and draw APIs, combined with + * Animatable to show the use of the animateTo() function used sequentially. + */ +@Composable +@Preview +fun CustomCanvasBouncyLoader() { + val yOffset = remember { + Animatable(0f) + } + val scale = remember { + Animatable(1f) + } + LaunchedEffect("bouncyLoader") { + delay(400) + // We use the Animatable.animateTo() API here to demonstrate the coroutine usage - each + // item is animating one after the other, as the animateTo function is sequential. + // Animate y to half the height + yOffset.animateTo(0.5f, bouncyAnimationSpec) + scale.animateTo(3f, bouncyAnimationSpec) + delay(500) + scale.animateTo(10f, bouncyAnimationSpec) + delay(500) + scale.animateTo(50f, bouncyAnimationSpec) + } + val size = remember { + mutableStateOf(IntSize.Zero) + } + Box( + Modifier + .fillMaxSize() + .onSizeChanged { + // We get the size change of the whole composable, and use this to determine how + // big the ball should be. + size.value = it + } + ) { + GradientCircle( + Modifier + .align(Alignment.TopCenter) + .size(26.dp) + .graphicsLayer { + // We use .graphicsLayer here to perform the animation as we are animating + // multiple properties of our Gradient circle at once, and this is more + // efficient than using multiple modifiers. + // .graphicsLayer also defers these changes to the Draw phase of Compose, + // therefore minimizing recompositions required to do this. + scaleX = scale.value + scaleY = scale.value + translationY = yOffset.value * size.value.height + } + ) + } +} + +@Composable +private fun GradientCircle(modifier: Modifier = Modifier) { + val brush = remember { + Brush.verticalGradient(listOf(Color(0xFFF56E34), Color(0xFF234EDA))) + } + Canvas(modifier = modifier) { + drawCircle(brush = brush) + } +} + +private val bouncyAnimationSpec: SpringSpec = spring( + dampingRatio = Spring.DampingRatioMediumBouncy, + stiffness = Spring.StiffnessLow +) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/fade/FadeDemo.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/fade/FadeDemo.kt new file mode 100644 index 000000000..c46735f25 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/fade/FadeDemo.kt @@ -0,0 +1,107 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.animations.demo.fade + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedContentTransitionScope +import androidx.compose.animation.ContentTransform +import androidx.compose.animation.core.LinearOutSlowInEasing +import androidx.compose.animation.core.snap +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Button +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.example.compose.snippets.animations.demo.CheeseImages +import com.example.compose.snippets.animations.demo.SimpleScaffold + +/** + * A fade creates a smooth sequence between elements that fully overlap each other, such as + * photos inside of a card or another container. When a new element enters, it fades in + * over the current element. + */ +@Preview +@Composable +fun FadeDemo() { + SimpleScaffold(title = "Fade") { + + val painters = CheeseImages.map { painterResource(it) } + var index by remember { mutableIntStateOf(0) } + + AnimatedContent( + targetState = index, + modifier = Modifier.align(Alignment.Center), + transitionSpec = fade() + ) { targetIndex -> + Image( + painter = painters[targetIndex], + contentDescription = "Cheese", + modifier = Modifier + .size(256.dp, 192.dp) + .clip(shape = RoundedCornerShape(16.dp)), + contentScale = ContentScale.Crop + ) + } + + Button( + onClick = { index = (index + 1) % painters.size }, + modifier = Modifier + .align(Alignment.BottomCenter) + .padding(64.dp) + ) { + Text(text = "NEXT") + } + } +} + +/** + * Creates a transitionSpec for configuring [AnimatedContent] to the fade pattern. + */ +private fun fade( + durationMillis: Int = 300 +): AnimatedContentTransitionScope.() -> ContentTransform { + return { + ContentTransform( + // The initial content should stay until the target content is completely opaque. + initialContentExit = fadeOut(animationSpec = snap(delayMillis = durationMillis)), + // The target content fades in. This is shown on top of the initial content. + targetContentEnter = fadeIn( + animationSpec = tween( + durationMillis = durationMillis, + // LinearOutSlowInEasing is suitable for incoming elements. + easing = LinearOutSlowInEasing + ) + ) + ) + } +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/fadethrough/FadeThroughDemo.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/fadethrough/FadeThroughDemo.kt new file mode 100644 index 000000000..efdd35745 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/fadethrough/FadeThroughDemo.kt @@ -0,0 +1,256 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.animations.demo.fadethrough + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedContentTransitionScope +import androidx.compose.animation.ContentTransform +import androidx.compose.animation.SizeTransform +import androidx.compose.animation.core.FastOutLinearInEasing +import androidx.compose.animation.core.LinearOutSlowInEasing +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.IntrinsicSize +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Favorite +import androidx.compose.material.icons.filled.Share +import androidx.compose.material3.Button +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.example.compose.snippets.R +import com.example.compose.snippets.animations.demo.SimpleScaffold + +/** + * Fade through involves one element fading out completely before a new one fades in. These + * transitions can be applied to text, icons, and other elements that don't perfectly + * overlap. This technique lets the background show through during a transition, and it can + * provide continuity between screens when paired with a shared transformation. + */ +@Preview +@Composable +fun FadeThroughDemo() { + SimpleScaffold(title = "Fade through") { + var expanded by rememberSaveable { mutableStateOf(false) } + DemoCard( + expanded = expanded, + modifier = Modifier.align(Alignment.Center) + ) + + Button( + onClick = { expanded = !expanded }, + modifier = Modifier + .align(Alignment.BottomCenter) + .padding(64.dp) + ) { + Text(text = "TOGGLE") + } + } +} + +/** + * Shows the card. The card can be either expanded or collapsed, and the transition between the two + * states is animated with the fade-through effect. + * + * @param expanded Whether the card is expanded or collapsed. + */ +@Composable +private fun DemoCard( + expanded: Boolean, + modifier: Modifier = Modifier +) { + Surface( + modifier = modifier, + tonalElevation = 2.dp, + shape = RoundedCornerShape(16.dp) + ) { + // Use `AnimatedContent` to switch between different content. + AnimatedContent( + // `targetState` specifies the input state. + targetState = expanded, + // `transitionSpec` defines the behavior of the transition animation. + transitionSpec = fadeThrough() + ) { targetExpanded -> + if (targetExpanded) { + ExpandedContent() + } else { + CollapsedContent() + } + } + } +} + +/** + * Creates a transitionSpec for configuring [AnimatedContent] to the fade through pattern. + * See [Fade through](https://material.io/design/motion/the-motion-system.html#fade-through) for + * the motion spec. + */ +fun fadeThrough( + durationMillis: Int = 300 +): AnimatedContentTransitionScope.() -> ContentTransform { + return { + ContentTransform( + // The initial content fades out. + initialContentExit = fadeOut( + animationSpec = tween( + // The duration is 3/8 of the overall duration. + durationMillis = durationMillis * 3 / 8, + // FastOutLinearInEasing is suitable for elements exiting the screen. + easing = FastOutLinearInEasing + ) + ), + // The target content fades in after the current content fades out. + targetContentEnter = fadeIn( + animationSpec = tween( + // The duration is 5/8 of the overall duration. + durationMillis = durationMillis * 5 / 8, + // Delays the EnterTransition by the duration of the ExitTransition. + delayMillis = durationMillis * 3 / 8, + // LinearOutSlowInEasing is suitable for incoming elements. + easing = LinearOutSlowInEasing + ) + ), + // The size changes along with the content transition. + sizeTransform = SizeTransform( + sizeAnimationSpec = { _, _ -> + tween(durationMillis = durationMillis) + } + ) + ) + } +} + +@Composable +private fun CollapsedContent() { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier.padding(16.dp), + horizontalArrangement = Arrangement.spacedBy(16.dp) + ) { + Image( + painter = painterResource(R.drawable.cheese_1), + contentDescription = null, + modifier = Modifier + .size(64.dp) + .clip(CircleShape) + ) + Text( + text = "Cheese", + style = MaterialTheme.typography.headlineSmall + ) + } +} + +@Composable +private fun ExpandedContent() { + Column( + modifier = Modifier.width(IntrinsicSize.Min) + ) { + Image( + painter = painterResource(R.drawable.cheese_1), + contentDescription = null, + modifier = Modifier.size(320.dp, 128.dp), + contentScale = ContentScale.Crop + ) + Spacer(modifier = Modifier.height(16.dp)) + Text( + text = "Cheese", + style = MaterialTheme.typography.headlineSmall, + modifier = Modifier.padding(horizontal = 16.dp) + ) + Text( + text = "Hello, world", + style = MaterialTheme.typography.titleMedium, + modifier = Modifier.padding(horizontal = 16.dp) + ) + Spacer(modifier = Modifier.height(16.dp)) + Text( + text = stringResource(R.string.lorem_ipsum), + style = MaterialTheme.typography.bodyMedium, + modifier = Modifier.padding(horizontal = 16.dp), + maxLines = 2, + overflow = TextOverflow.Ellipsis + ) + Spacer(modifier = Modifier.height(16.dp)) + Row( + modifier = Modifier.padding(horizontal = 16.dp), + horizontalArrangement = Arrangement.spacedBy(4.dp) + ) { + TextButton(onClick = { /* Do nothing */ }) { + Text(text = "DETAIL") + } + TextButton(onClick = { /* Do nothing */ }) { + Text(text = "ORDER") + } + Spacer(modifier = Modifier.weight(1f)) + IconButton(onClick = { /* Do nothing */ }) { + Icon( + imageVector = Icons.Default.Favorite, + contentDescription = "Favorite" + ) + } + IconButton(onClick = { /* Do nothing */ }) { + Icon( + imageVector = Icons.Default.Share, + contentDescription = "Share" + ) + } + } + Spacer(modifier = Modifier.height(8.dp)) + } +} + +@Preview +@Composable +private fun PreviewDemoCardCollapsed() { + DemoCard(expanded = false) +} + +@Preview +@Composable +private fun PreviewDemoCardExpanded() { + DemoCard(expanded = true) +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/sharedaxis/SharedAxisDemo.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/sharedaxis/SharedAxisDemo.kt new file mode 100644 index 000000000..ceb7b4a61 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/sharedaxis/SharedAxisDemo.kt @@ -0,0 +1,282 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.animations.demo.sharedaxis + +import androidx.annotation.DrawableRes +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibilityScope +import androidx.compose.animation.ContentTransform +import androidx.compose.animation.animateColor +import androidx.compose.animation.core.FastOutLinearInEasing +import androidx.compose.animation.core.FiniteAnimationSpec +import androidx.compose.animation.core.LinearOutSlowInEasing +import androidx.compose.animation.core.tween +import androidx.compose.animation.core.updateTransition +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.slideInVertically +import androidx.compose.animation.slideOutVertically +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.navigationBarsPadding +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.wrapContentSize +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.datasource.LoremIpsum +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.compose.snippets.animations.demo.CheeseImages +import com.example.compose.snippets.animations.demo.CheeseNames +import com.example.compose.snippets.animations.demo.SimpleScaffold + +/** + * The shared axis pattern is used for transitions between UI elements that have a spatial + * or navigational relationship. This demo uses a shared transformation on the Y-axis to + * reinforce the sequential order of elements. + */ +@Composable +fun SharedAxisDemo() { + SimpleScaffold(title = "Layout > Shared axis (Y-axis)") { + val pages = remember { createPages() } + // Indicator column + var id by rememberSaveable { mutableIntStateOf(1) } + Row(modifier = Modifier.padding(end = 16.dp)) { + PageIndicatorsColumn( + pages = pages, + selectedId = id, + onIndicatorClick = { id = it } + ) + + // SharedYAxis animates the content change. + SharedYAxis(targetState = pages.first { it.id == id }) { page -> + PageContent(page = page) + } + } + } +} + +/** + * Animates content change with the vertical shared axis pattern. + * + * See [Shared axis](https://material.io/design/motion/the-motion-system.html#shared-axis) for the + * detail about this motion pattern. + */ +@Composable +private fun > SharedYAxis( + targetState: T, + modifier: Modifier = Modifier, + content: @Composable AnimatedVisibilityScope.(T) -> Unit +) { + val exitDurationMillis = 80 + val enterDurationMillis = 220 + + // This local function creates the AnimationSpec for outgoing elements. + fun exitSpec(): FiniteAnimationSpec = + tween( + durationMillis = exitDurationMillis, + easing = FastOutLinearInEasing + ) + + // This local function creates the AnimationSpec for incoming elements. + fun enterSpec(): FiniteAnimationSpec = + tween( + // The enter animation runs right after the exit animation. + delayMillis = exitDurationMillis, + durationMillis = enterDurationMillis, + easing = LinearOutSlowInEasing + ) + + val slideDistance = with(LocalDensity.current) { 30.dp.roundToPx() } + + AnimatedContent( + targetState = targetState, + transitionSpec = { + // The state type () is Comparable. + // We compare the initial state and the target state to determine whether we are moving + // down or up. + if (initialState < targetState) { // Move down + ContentTransform( + // Outgoing elements fade out and slide up to the top. + initialContentExit = fadeOut(exitSpec()) + + slideOutVertically(exitSpec()) { -slideDistance }, + // Incoming elements fade in and slide up from the bottom. + targetContentEnter = fadeIn(enterSpec()) + + slideInVertically(enterSpec()) { slideDistance } + ) + } else { // Move up + ContentTransform( + // Outgoing elements fade out and slide down to the bottom. + initialContentExit = fadeOut(exitSpec()) + + slideOutVertically(exitSpec()) { slideDistance }, + // Outgoing elements fade in and slide down from the top. + targetContentEnter = fadeIn(enterSpec()) + + slideInVertically(enterSpec()) { -slideDistance } + ) + } + }, + modifier = modifier, + content = content + ) +} + +private class Page( + val id: Int, + @DrawableRes + val image: Int, + val title: String, + val body: String +) : Comparable { + + override fun compareTo(other: Page): Int { + return id.compareTo(other.id) + } +} + +private fun createPages(): List { + val body = LoremIpsum().values.joinToString(separator = " ").replace('\n', ' ') + return (0..4).map { i -> + Page( + id = i + 1, + image = CheeseImages[i % CheeseImages.size], + title = CheeseNames[i * 128], + body = body + ) + } +} + +@Composable +private fun PageIndicatorsColumn( + pages: List, + selectedId: Int, + onIndicatorClick: (index: Int) -> Unit, + modifier: Modifier = Modifier +) { + Column( + modifier = modifier + .verticalScroll(rememberScrollState()) + .padding(16.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(32.dp), + ) { + for (page in pages) { + PageIndicator( + index = page.id, + selected = selectedId == page.id, + onClick = { onIndicatorClick(page.id) } + ) + } + } +} + +@Composable +private fun PageIndicator( + index: Int, + selected: Boolean, + onClick: () -> Unit +) { + val transition = updateTransition(targetState = selected, label = "indicator") + val backgroundColor by transition.animateColor(label = "background color") { targetSelected -> + if (targetSelected) { + MaterialTheme.colorScheme.primary + } else { + MaterialTheme.colorScheme.surfaceVariant + } + } + val textColor by transition.animateColor(label = "text color") { targetSelected -> + if (targetSelected) { + MaterialTheme.colorScheme.onPrimary + } else { + MaterialTheme.colorScheme.onSurfaceVariant + } + } + IconButton(onClick = onClick) { + Text( + text = index.toString(), + modifier = Modifier + .size(32.dp) + .background(backgroundColor, CircleShape) + .wrapContentSize(), + color = textColor, + fontSize = 20.sp, + fontWeight = FontWeight.Bold + ) + } +} + +@Composable +private fun PageContent( + page: Page, + modifier: Modifier = Modifier +) { + Column( + modifier = modifier + .verticalScroll(rememberScrollState()) + .navigationBarsPadding(), + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + Image( + painter = painterResource(page.image), + contentDescription = null, + modifier = Modifier + .fillMaxWidth() + .aspectRatio(16f / 9f) + .clip(RoundedCornerShape(16.dp)), + contentScale = ContentScale.Crop + ) + Text( + text = page.title, + style = MaterialTheme.typography.titleLarge + ) + Text( + text = page.body, + textAlign = TextAlign.Justify + ) + } +} + +@Preview(showBackground = true) +@Composable +private fun PreviewSharedAxisDemo() { + SharedAxisDemo() +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/sharedtransform/SharedTransformDemo.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/sharedtransform/SharedTransformDemo.kt new file mode 100644 index 000000000..3e913c782 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/demo/sharedtransform/SharedTransformDemo.kt @@ -0,0 +1,261 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.animations.demo.sharedtransform + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.animateColor +import androidx.compose.animation.core.updateTransition +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.datasource.LoremIpsum +import androidx.compose.ui.unit.dp +import androidx.constraintlayout.compose.ConstraintLayout +import com.example.compose.snippets.R +import com.example.compose.snippets.animations.demo.SimpleScaffold +import com.example.compose.snippets.animations.demo.fadethrough.fadeThrough +import com.example.compose.snippets.ui.theme.SnippetsTheme + +/** + * Complex layout changes use a shared transformation to create smooth transitions from + * one layout to the next. Elements are grouped together and transform as a single unit, + * rather than animating independently. This avoids multiple transformations overlapping + * and competing for attention. + */ +@Composable +fun SharedTransformDemo() { + SimpleScaffold(title = "Shared transform") { + DemoCard( + modifier = Modifier + .align(Alignment.Center) + .padding(horizontal = 32.dp) + .widthIn(max = 384.dp) + .fillMaxWidth() + ) + } +} + +@Composable +private fun DemoCard( + modifier: Modifier = Modifier +) { + Surface( + modifier = modifier, + tonalElevation = 2.dp, + shape = RoundedCornerShape(16.dp), + ) { + // The content of this card is laid out by this ConstraintLayout. + ConstraintLayout { + // The card is either expanded or collapsed. + var expanded by rememberSaveable { mutableStateOf(false) } + + // The ConstraintLayout has 4 constrained elements. They animate separately during the + // animation, except for the icon that is shared in both the expanded and the + // collapsed states. + val (content, icon, divider, button) = createRefs() + + // This transition object coordinates different kinds of animations. + val transition = updateTransition(targetState = expanded, label = "card") + + // This is the main content of the card. + // By using the AnimatedContent composable as an extension function of the transition + // object, the animation runs in sync with other animations of the transition. + // The height of this element animates on the state change (SizeTransform), and the + // ConstraintLayout can lay out its children based on the constraints continuously + // during the animation. + transition.AnimatedContent( + // We use the fade-through effect for elements that change between the states. + transitionSpec = fadeThrough(), + modifier = Modifier.constrainAs(content) { + top.linkTo(parent.top, margin = 16.dp) + start.linkTo(parent.start) + end.linkTo(parent.end) + } + ) { targetExpanded -> + CardContent(expanded = targetExpanded) + } + + // The icon is shared between the expanded and collapsed states. + CardIcon( + modifier = Modifier.constrainAs(icon) { + top.linkTo(parent.top, margin = 16.dp) + end.linkTo(parent.end, margin = 16.dp) + } + ) + + // The divider becomes transparent in the collapsed state. + val dividerColor by transition.animateColor(label = "divider color") { targetExpanded -> + if (targetExpanded) { + MaterialTheme.colorScheme.onSurface.copy(alpha = 0.12f) + } else { + Color.Transparent + } + } + HorizontalDivider( + modifier = Modifier.constrainAs(divider) { + top.linkTo(content.bottom) + start.linkTo(parent.start) + end.linkTo(parent.end) + }, + color = dividerColor + ) + + // The expand/collapse button is shared between the expanded and collapsed states. + TextButton( + onClick = { expanded = !expanded }, + modifier = Modifier.constrainAs(button) { + top.linkTo(divider.bottom, margin = 8.dp) + start.linkTo(parent.start, margin = 8.dp) + // The button is constrained to the bottom of the parent so that it remains + // visible during the animations. + bottom.linkTo(parent.bottom, margin = 8.dp) + } + ) { + // The AnimatedContent extension function can be used for any descendant elements, + // not just direct children. + transition.AnimatedContent(transitionSpec = fadeThrough()) { targetExpanded -> + Text(text = if (targetExpanded) "COLLAPSE" else "EXPAND") + } + } + } + } +} + +private val CheeseImages = listOf( + R.drawable.cheese_1 to "Cheese 1", + R.drawable.cheese_2 to "Cheese 2", + R.drawable.cheese_3 to "Cheese 3", + R.drawable.cheese_4 to "Cheese 4", + R.drawable.cheese_5 to "Cheese 5" +) + +@Composable +private fun CardContent(expanded: Boolean, modifier: Modifier = Modifier) { + Column(modifier = modifier) { + if (expanded) { + ContentTitle(modifier = Modifier.padding(horizontal = 16.dp)) + ContentMaker( + modifier = Modifier.padding(top = 8.dp, start = 16.dp, end = 16.dp, bottom = 16.dp) + ) + ContentImagesRow(images = CheeseImages.subList(0, 2)) + Spacer(modifier = Modifier.height(1.dp)) + ContentImagesRow(images = CheeseImages.subList(2, 5)) + ContentBody(maxLines = 2, modifier = Modifier.padding(16.dp)) + } else { + ContentMaker(modifier = Modifier.padding(horizontal = 16.dp)) + ContentTitle(modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp)) + ContentBody(maxLines = 1, Modifier.padding(start = 16.dp, end = 16.dp, bottom = 16.dp)) + ContentImagesRow(images = CheeseImages) + } + } +} + +@Composable +private fun ContentTitle(modifier: Modifier = Modifier) { + Text( + text = "Cheeses", + modifier = modifier, + style = MaterialTheme.typography.titleLarge + ) +} + +@Composable +private fun ContentMaker(modifier: Modifier = Modifier) { + Text( + text = "Maker: Android Cheese", + modifier = modifier, + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.8f) + ) +} + +@Composable +private fun CardIcon(modifier: Modifier = Modifier) { + Image( + painter = painterResource(R.drawable.cheese_1), + contentDescription = null, + modifier = modifier + .size(48.dp) + .clip(CircleShape) + ) +} + +@Composable +private fun ContentImagesRow(images: List>, modifier: Modifier = Modifier) { + Row(modifier = modifier, horizontalArrangement = Arrangement.spacedBy(1.dp)) { + for ((resourceId, contentDescription) in images) { + Image( + painter = painterResource(resourceId), + contentDescription = contentDescription, + contentScale = ContentScale.Crop, + modifier = Modifier + .weight(1f) + .aspectRatio(1f) + ) + } + } +} + +@Composable +private fun ContentBody(maxLines: Int, modifier: Modifier = Modifier) { + Text( + text = LoremIpsum(32).values.joinToString(" ").replace('\n', ' '), + modifier = modifier, + style = MaterialTheme.typography.bodyMedium, + maxLines = maxLines, + overflow = TextOverflow.Ellipsis, + textAlign = TextAlign.Justify, + color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.8f) + ) +} + +@Preview(showBackground = true) +@Composable +private fun PreviewExpandedContent() { + SnippetsTheme { + SharedTransformDemo() + } +} diff --git a/compose/snippets/src/main/res/drawable-nodpi/cheese_1.jpg b/compose/snippets/src/main/res/drawable-nodpi/cheese_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..65be51c6b192dd754581f9402bca2b06df57290e GIT binary patch literal 92915 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ℜzxJb@s8F+Jurt- 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≥dHAQGbThO!({^xt& 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�p80X|bJ&pM?3^q;N9 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 X+%g+T$NvDyOh(glZg77L`!E05*!QR| literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/drawable-nodpi/cheese_3.jpg b/compose/snippets/src/main/res/drawable-nodpi/cheese_3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..362ef3874c910ee389ee1195c5419476063be5a4 GIT binary patch literal 185185 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𝔓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%0DK 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�jQ7!$UP~xD#A?8u}PIKsz{TkfjueF6Im$?X+0$O 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

+ Build better apps faster with Jetpack Compose +