文章目录
- 1. 通过`scrollTo()`和`scrollBy()`
- `scrollTo(int x, int y)`
- `scrollBy(int dx, int dy)`
- `scrollTo()` 和 `scrollBy()` 的区别
- 2. 使用动画
- 2.1 属性动画(`ObjectAnimator`)
- 2.2 视图动画(`TranslateAnimation`)
- 两者的区别
- 选择哪种动画?
- 3. 使用Scroll实现平滑滚动效果
- 4. 通过手势检测器(GestureDetector)
- 5. 通过`ViewPager`和`RecyclerView`
- 5.1 ViewPager
- 5.2 RecyclerView
- 总结
我们在使用View的过程中,经常需要实现View的滑动效果。
比如ListView、跟随手指而移动的自定义View等等,
前者的滑动效果是SDK为我们提供的,
而对于我们自定义View的滑动效果就需要我们自己来实现,
下面介绍几种滑动的方式,和大家一起共享一下。
另外,在回答这个问题的时候,希望大家也去学习一下View 的位置相关内容,View的坐标相关内容。
1. 通过scrollTo()
和scrollBy()
为了实现View滑动,Android专门提供了这两个方法让我们使用。这两个函数的区别是
scrolBy
提供的是基于当前位置的相对滑动scrollTo
提供的是基于起始位置的绝对滑动。
需要注意的是实际的滑动方向与我们想当然的方向不同,这个问题与View
的内部变量mScrollx
和mScrollY
的含义有关,scrollTo
函数与scrollBy
函数实际上就是对这两个变量做出修改。
mScrollx
:View的左边缘
坐标减去View内容的左边缘坐标
。mScrollY
:View的上边缘
坐标减去View内容的上边缘坐标
。
另外一个需要注意的地方是超出View边缘范围的内容是不会显示的。