gpt4 book ai didi

android - 将滑动手势处理添加到撰写 View

转载 作者:行者123 更新时间:2023-12-02 12:23:55 25 4
gpt4 key购买 nike

找不到任何示例代码。因为我没有看到任何手势类,所以我只是去了常规文档,那些集中在设置 Activity 为 GestureRecognizerCompat ,这是行不通的。设置它可以工作,但不会检测到滑动或点击(在模拟器中)。在 SwiftUI 中有 Gestures 的处理程序。在 Compose Slack Channel 上询问并被告知寻找 FooGestureDetector可组合的功能。

寻找一些示例代码。终于有一个 Compose 教程了,它本来就很好,但是当你完成后你的应用程序做的很少。我还查看了 GitHub 上的示例项目,该项目用于为新闻站点创建帖子。有一些有趣的东西,但没有手势。

主要目标只是拥有一些Card s 以及在它们之间滑动的能力(a la ViewPager (1/2) 在 Compose 中还没有)。

我确实设法检测到对 View 的点击,如下所示:

@Composable
fun PreviewPane(name: String, info:String) {
val pagenumber = +state { 0 }

CustomTheme{
Column(
crossAxisSize = LayoutSize.Expand,
modifier = Spacing(16.dp)
) {
Clickable(onClick = { Log.d("DEMO", "click detected..")}) {
Text(text = name, style = TextStyle(fontWeight = FontWeight.Bold))
Text(text = info)
Text(text = "${pagenumber.value}")
}

Row {
Button(text = "Back", onClick = {
if (pagenumber.value > 0) pagenumber.value--
Log.d("DEMO", "button clicked..")
})
Button(text = "Next", onClick = {
pagenumber.value++
Log.d("DEMO", "button clicked..")
})
}
}

}
}

这行得通,我确实看到了日志消息(注意我没有用 Click 指令包装按钮)。但我真正想要的是对包含所有这些组件的外部 View 进行滑动检测。

最佳答案

@Rob 如果您只需要查看寻呼机,您可以查看 Gist对于 ViewPager,我为 ViewPager 创建了一个示例,请从 Gist 和示例中复制 ComposeViewPager.kt.kt。
注意:我从 Leland Richardson 获取此代码Git repo 并根据我的需要进行修改。
前任:

val listItem = arrayListOf<String>("One", "Two", "Three", "Four", "Five")

@Composable
fun FullViewPagerSample() {
Box {
ViewPager(
items = listItem
) { listItem, itemWidthInDp ->
ViewItem(
item = listItem,
normalWidth = itemWidthInDp
)
}
}
}


@Composable
fun ViewPagerSample() {
val configuration = ConfigurationAmbient.current
val screenWidth = configuration.screenWidthDp.dp
val posterWidthDp = screenWidth * 0.6f
Box {
ViewPager(
items = listItem, width = posterWidthDp
) { listItem, itemWidthInDp ->
ViewItem(
item = listItem,
normalWidth = itemWidthInDp
)
}
}
}

@Composable
fun ViewPagerSampleWithYDeltaAnimation() {
val configuration = ConfigurationAmbient.current
val screenWidth = configuration.screenWidthDp.dp
val posterWidthDp = screenWidth * 0.6f
Box {
ViewPager(
items = listItem, width = posterWidthDp, bottomYDelta = 50f
) { listItem, itemWidthInDp ->
ViewItem(
item = listItem,
normalWidth = itemWidthInDp
)
}
}
}

@Composable
fun ViewItem(
item: String,
normalWidth: Dp,
modifier: Modifier = Modifier,
isScrollable: Boolean = true
) {
ScrollableColumn(
modifier = modifier
.width(normalWidth)
.padding(10.dp)
.clip(RoundedCornerShape(10.dp))
.background(Color.Red),
contentPadding = PaddingValues(posterPadding),
isScrollEnabled = isScrollable,
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
item,
fontSize = 24.sp,
color = Color.White
)
}
}
结果会是这样,
enter image description here

关于android - 将滑动手势处理添加到撰写 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58891868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com