当前位置:   article > 正文

鸿蒙实现一种仿小红书首页滑动联动效果

鸿蒙实现一种仿小红书首页滑动联动效果

前言:

DevEco Studio版本:4.0.0.600

效果描述:通过手指滑动列表,控制位置显示效果为:不论列表在什么位置下滑时下图粉色位置布局显示,手指上滑时下图粉色位置布局隐藏。

效果:

原理分析:

        通过给List列表设置触摸监听(onTouch),然后监听手指滑动的按下位置,和滑动时的位置,依据这两个数据的差值来判断,列表是上滑动还是下滑。然后通过animateTo动画动态来控制操作布局的高度,来达到显示和隐藏的效果。

代码实现:

  1. @Entry
  2. @Component
  3. struct Index12 {
  4. @State newsList: string[] = []
  5. aboutToAppear() {
  6. //假数据
  7. for (let index = 0; index < 30; index++) {
  8. this.newsList[index] = '测试数据: ' + index
  9. }
  10. }
  11. build() {
  12. Flex({ direction: FlexDirection.Column }) {
  13. Text('头部固定位置布局')
  14. .fontColor(Color.White)
  15. .width('100%')
  16. .height(30)
  17. .backgroundColor(Color.Blue)
  18. Text('手指下滑时显示,手指上滑时隐藏布局')
  19. .width('100%')
  20. .height(this.textHeight)
  21. .backgroundColor(Color.Pink)
  22. List() {
  23. ForEach(this.newsList, (item: string) => {
  24. ListItem() {
  25. Column() {
  26. Text(item).width('100%').height(100).textAlign(TextAlign.Center).backgroundColor(Color.White)
  27. Divider().strokeWidth(1).color('#000000')
  28. }
  29. }
  30. }, (item: string) => item)
  31. }
  32. .width('100%')
  33. .height('100%')
  34. .sticky(StickyStyle.Header)
  35. .edgeEffect(EdgeEffect.None)
  36. .onTouch((event) => this.touchEvent(event))
  37. }
  38. }
  39. private downY: number = 0 // 记录按下的y坐标
  40. @State textHeight: number = 50
  41. touchEvent(event: TouchEvent) {
  42. switch (event.type) {
  43. case TouchType.Down: // 手指按下
  44. this.downY = event.touches[0].y
  45. break
  46. case TouchType.Move: // 手指移动
  47. let difY = event.touches[0].y - this.downY
  48. if (difY > 0) { //手指向下滑动
  49. this.showTitle()
  50. } else { //手指向上滑动
  51. this.hideTitle()
  52. }
  53. break
  54. }
  55. }
  56. private showTitle() {
  57. animateTo({ duration: 300 }, () => {
  58. this.textHeight = 50
  59. })
  60. }
  61. private hideTitle() {
  62. animateTo({ duration: 300 }, () => {
  63. this.textHeight = 0
  64. })
  65. }
  66. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/383759
推荐阅读
相关标签
  

闽ICP备14008679号