diff options
author | Yuri Schimke <yuri@schimke.ee> | 2024-05-08 12:30:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-08 12:30:31 +0100 |
commit | 0dabc249cd67651aff68108de037781605aeab07 (patch) | |
tree | 3e5362d7389f1f8ac42a226eb16335e445949e04 | |
parent | d892aca07ca3c69e00a8970564fab2f921899846 (diff) | |
download | horologist-0dabc249cd67651aff68108de037781605aeab07.tar.gz |
Add beyondViewportPageCount and friends to PagerScreen (#2230)
3 files changed, 36 insertions, 4 deletions
diff --git a/compose-layout/api/current.api b/compose-layout/api/current.api index 867266dc..d95ec670 100644 --- a/compose-layout/api/current.api +++ b/compose-layout/api/current.api @@ -185,7 +185,7 @@ package com.google.android.horologist.compose.pager { } public final class PagerScreenKt { - method @androidx.compose.runtime.Composable public static void PagerScreen(optional androidx.compose.ui.Modifier modifier, androidx.compose.foundation.pager.PagerState state, kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> content); + method @androidx.compose.runtime.Composable public static void PagerScreen(androidx.compose.foundation.pager.PagerState state, optional androidx.compose.ui.Modifier modifier, optional int beyondViewportPageCount, optional boolean userScrollEnabled, optional boolean reverseLayout, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,?>? key, optional androidx.compose.ui.input.nestedscroll.NestedScrollConnection pageNestedScrollConnection, kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> content); } public final class VerticalPageIndicatorKt { @@ -193,7 +193,7 @@ package com.google.android.horologist.compose.pager { } public final class VerticalPagerScreenKt { - method @androidx.compose.runtime.Composable @com.google.android.horologist.annotations.ExperimentalHorologistApi public static void VerticalPagerScreen(androidx.compose.foundation.pager.PagerState state, optional androidx.compose.ui.Modifier modifier, kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> content); + method @androidx.compose.runtime.Composable @com.google.android.horologist.annotations.ExperimentalHorologistApi public static void VerticalPagerScreen(androidx.compose.foundation.pager.PagerState state, optional androidx.compose.ui.Modifier modifier, optional int beyondViewportPageCount, optional boolean userScrollEnabled, optional boolean reverseLayout, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,?>? key, optional androidx.compose.ui.input.nestedscroll.NestedScrollConnection pageNestedScrollConnection, kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> content); } } diff --git a/compose-layout/src/main/java/com/google/android/horologist/compose/pager/PagerScreen.kt b/compose-layout/src/main/java/com/google/android/horologist/compose/pager/PagerScreen.kt index eb6eb6f1..e8333a0b 100644 --- a/compose-layout/src/main/java/com/google/android/horologist/compose/pager/PagerScreen.kt +++ b/compose-layout/src/main/java/com/google/android/horologist/compose/pager/PagerScreen.kt @@ -19,9 +19,11 @@ package com.google.android.horologist.compose.pager import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.pager.HorizontalPager +import androidx.compose.foundation.pager.PagerDefaults import androidx.compose.foundation.pager.PagerState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape @@ -31,6 +33,7 @@ import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.input.nestedscroll.NestedScrollConnection import androidx.compose.ui.platform.LocalConfiguration import androidx.wear.compose.foundation.ExperimentalWearFoundationApi import androidx.wear.compose.foundation.HierarchicalFocusCoordinator @@ -46,9 +49,17 @@ import com.google.android.horologist.compose.layout.PagerScaffold */ @Composable public fun PagerScreen( - modifier: Modifier = Modifier, state: PagerState, - content: @Composable ((Int) -> Unit), + modifier: Modifier = Modifier, + beyondViewportPageCount: Int = 0, + userScrollEnabled: Boolean = true, + reverseLayout: Boolean = false, + key: ((index: Int) -> Any)? = null, + pageNestedScrollConnection: NestedScrollConnection = PagerDefaults.pageNestedScrollConnection( + state, + Orientation.Horizontal, + ), + content: @Composable (Int) -> Unit, ) { PagerScaffold( modifier = Modifier.fillMaxSize(), @@ -57,6 +68,11 @@ public fun PagerScreen( HorizontalPager( modifier = modifier, state = state, + beyondViewportPageCount = beyondViewportPageCount, + userScrollEnabled = userScrollEnabled, + reverseLayout = reverseLayout, + key = key, + pageNestedScrollConnection = pageNestedScrollConnection, flingBehavior = HorizontalPagerDefaults.flingParams(state), ) { page -> ClippedBox(state) { diff --git a/compose-layout/src/main/java/com/google/android/horologist/compose/pager/VerticalPagerScreen.kt b/compose-layout/src/main/java/com/google/android/horologist/compose/pager/VerticalPagerScreen.kt index e05b0355..7957c007 100644 --- a/compose-layout/src/main/java/com/google/android/horologist/compose/pager/VerticalPagerScreen.kt +++ b/compose-layout/src/main/java/com/google/android/horologist/compose/pager/VerticalPagerScreen.kt @@ -19,12 +19,15 @@ package com.google.android.horologist.compose.pager import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.pager.PagerDefaults import androidx.compose.foundation.pager.PagerState import androidx.compose.foundation.pager.VerticalPager import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.NestedScrollConnection import androidx.compose.ui.unit.dp import androidx.wear.compose.foundation.ExperimentalWearFoundationApi import androidx.wear.compose.foundation.rememberActiveFocusRequester @@ -45,6 +48,14 @@ import com.google.android.horologist.compose.rotaryinput.rotaryWithPager public fun VerticalPagerScreen( state: PagerState, modifier: Modifier = Modifier, + beyondViewportPageCount: Int = 0, + userScrollEnabled: Boolean = true, + reverseLayout: Boolean = false, + key: ((index: Int) -> Any)? = null, + pageNestedScrollConnection: NestedScrollConnection = PagerDefaults.pageNestedScrollConnection( + state, + Orientation.Vertical, + ), content: @Composable ((Int) -> Unit), ) { ScreenScaffold( @@ -61,6 +72,11 @@ public fun VerticalPagerScreen( .fillMaxSize() .rotaryWithPager(state, rememberActiveFocusRequester()), state = state, + beyondViewportPageCount = beyondViewportPageCount, + userScrollEnabled = userScrollEnabled, + reverseLayout = reverseLayout, + key = key, + pageNestedScrollConnection = pageNestedScrollConnection, flingBehavior = HorizontalPagerDefaults.flingParams(state), ) { page -> ClippedBox(state) { |