summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Schimke <yuri@schimke.ee>2024-05-08 12:30:31 +0100
committerGitHub <noreply@github.com>2024-05-08 12:30:31 +0100
commit0dabc249cd67651aff68108de037781605aeab07 (patch)
tree3e5362d7389f1f8ac42a226eb16335e445949e04
parentd892aca07ca3c69e00a8970564fab2f921899846 (diff)
downloadhorologist-0dabc249cd67651aff68108de037781605aeab07.tar.gz
Add beyondViewportPageCount and friends to PagerScreen (#2230)
-rw-r--r--compose-layout/api/current.api4
-rw-r--r--compose-layout/src/main/java/com/google/android/horologist/compose/pager/PagerScreen.kt20
-rw-r--r--compose-layout/src/main/java/com/google/android/horologist/compose/pager/VerticalPagerScreen.kt16
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) {