测试NestedScrollConnection

Sat Feb 17 2024

测试NestedScrollConnection:

 
@OptIn(ExperimentalMaterial3Api::class)
@Preview
@Composable
private fun TestPreview() {
    MusicPlayerTheme {
//        val scrollBehavior = pinnedScrollBehavior()
        val nestscrollConnection =
            remember {
                object : NestedScrollConnection {
                    override fun onPreScroll(
                        available: Offset,
                        source: NestedScrollSource,
                    ): Offset {
                        Log.d(TAG, "onPreScroll: available $available")
                        Log.d(TAG, "onPreScroll: source $source")
                        Log.d(TAG, "onPreScroll: return ${available.y / 5f}")
                        return available.copy(y = available.y / 5f)
                    }
 
                    override fun onPostScroll(
                        consumed: Offset,
                        available: Offset,
                        source: NestedScrollSource,
                    ): Offset {
                        Log.d(TAG, "onPostScroll: consumed $consumed")
                        Log.d(TAG, "onPostScroll: available $available")
                        Log.d(TAG, "onPostScroll: source $source")
                        return super.onPostScroll(consumed, available, source)
                    }
                }
            }
 
        val nestscrollConnection2 =
            remember {
                object : NestedScrollConnection {
                    override fun onPreScroll(
                        available: Offset,
                        source: NestedScrollSource,
                    ): Offset {
                        Log.d("${TAG}2", "onPreScroll: available $available")
                        Log.d("${TAG}2", "onPreScroll: source $source")
                        Log.d("${TAG}2", "onPreScroll: return ${available.y / 5f * 2}")
                        return available.copy(y = available.y / 5f * 2)
                    }
 
                    override fun onPostScroll(
                        consumed: Offset,
                        available: Offset,
                        source: NestedScrollSource,
                    ): Offset {
                        Log.d("${TAG}2", "onPostScroll: consumed $consumed")
                        Log.d("${TAG}2", "onPostScroll: available $available")
                        Log.d("${TAG}2", "onPostScroll: source $source")
                        return super.onPostScroll(consumed, available, source)
                    }
                }
            }
 
        val nestscrollConnection3 =
            remember {
                object : NestedScrollConnection {
                    override fun onPreScroll(
                        available: Offset,
                        source: NestedScrollSource,
                    ): Offset {
                        Log.d("${TAG}3", "onPreScroll: available $available")
                        Log.d("${TAG}3", "onPreScroll: source $source")
                        Log.d("${TAG}3", "onPreScroll: return ${available.y / 5f * 2}")
                        return available.copy(y = available.y / 5f * 2)
                    }
 
                    override fun onPostScroll(
                        consumed: Offset,
                        available: Offset,
                        source: NestedScrollSource,
                    ): Offset {
                        Log.d("${TAG}3", "onPostScroll: consumed $consumed")
                        Log.d("${TAG}3", "onPostScroll: available $available")
                        Log.d("${TAG}3", "onPostScroll: source $source")
                        return super.onPostScroll(consumed, available, source)
                    }
                }
            }
        Scaffold(
            modifier =
            Modifier,
            topBar = {
                TopAppBar(
                    modifier = Modifier,
                    title = {
                        Text(text = "AAAA")
                    },
//                    scrollBehavior = pinnedScrollBehavior()
//                    scrollBehavior = scrollBehavior,
                )
            },
        ) {
            Surface(modifier = Modifier.padding(it).nestedScroll(nestscrollConnection)) {
                Surface(modifier = Modifier.nestedScroll(nestscrollConnection2)) {
                    Surface(modifier = Modifier.nestedScroll(nestscrollConnection3)) {
                        LazyColumn {
                            item {
                                Text(
                                    modifier =
                                    Modifier
                                        .height(500.dp).fillMaxWidth(),
                                    text = "Content",
                                )
                            }
 
                            item {
                                Text(modifier = Modifier.height(500.dp).background(Color.Red).fillMaxWidth(), text = "Content")
                            }
                        }
                    }
                }
            }
        }
    }
}
2024-02-27 22:53:19.469  6414-6414  HomeScreen              com...musicplayer.feature.home.test  D  onPreScroll: available Offset(0.0, -24.4)
2024-02-27 22:53:19.469  6414-6414  HomeScreen              com...musicplayer.feature.home.test  D  onPreScroll: source Drag
2024-02-27 22:53:19.469  6414-6414  HomeScreen              com...musicplayer.feature.home.test  D  onPreScroll: return -4.8910155

2024-02-27 22:53:19.469  6414-6414  HomeScreen2             com...musicplayer.feature.home.test  D  onPreScroll: available Offset(0.0, -19.5)
2024-02-27 22:53:19.469  6414-6414  HomeScreen2             com...musicplayer.feature.home.test  D  onPreScroll: source Drag
2024-02-27 22:53:19.469  6414-6414  HomeScreen2             com...musicplayer.feature.home.test  D  onPreScroll: return -7.825625

2024-02-27 22:53:19.469  6414-6414  HomeScreen3             com...musicplayer.feature.home.test  D  onPreScroll: available Offset(0.0, -11.7)
2024-02-27 22:53:19.470  6414-6414  HomeScreen3             com...musicplayer.feature.home.test  D  onPreScroll: source Drag
2024-02-27 22:53:19.470  6414-6414  HomeScreen3             com...musicplayer.feature.home.test  D  onPreScroll: return -4.695375

2024-02-27 22:53:19.470  6414-6414  HomeScreen3             com...musicplayer.feature.home.test  D  onPostScroll: consumed Offset(0.0, -7.0)
2024-02-27 22:53:19.470  6414-6414  HomeScreen3             com...musicplayer.feature.home.test  D  onPostScroll: available Offset(0.0, 0.0)
2024-02-27 22:53:19.470  6414-6414  HomeScreen3             com...musicplayer.feature.home.test  D  onPostScroll: source Drag

2024-02-27 22:53:19.470  6414-6414  HomeScreen2             com...musicplayer.feature.home.test  D  onPostScroll: consumed Offset(0.0, -7.0)
2024-02-27 22:53:19.470  6414-6414  HomeScreen2             com...musicplayer.feature.home.test  D  onPostScroll: available Offset(0.0, 0.0)
2024-02-27 22:53:19.470  6414-6414  HomeScreen2             com...musicplayer.feature.home.test  D  onPostScroll: source Drag

2024-02-27 22:53:19.470  6414-6414  HomeScreen              com...musicplayer.feature.home.test  D  onPostScroll: consumed Offset(0.0, -7.0)
2024-02-27 22:53:19.470  6414-6414  HomeScreen              com...musicplayer.feature.home.test  D  onPostScroll: available Offset(0.0, 0.0)
2024-02-27 22:53:19.470  6414-6414  HomeScreen              com...musicplayer.feature.home.test  D  onPostScroll: source Drag

← Back to home