View的滑动
View滑动有三种方式:
- View本身提供的scrollTo和scrollBy方法
- 通过动画给View添加平移效果实现滑动
- 改变View的LayoutParams是的View重新布局实现滑动
使用scrollTo和scrollBy方式
scrollTo和scrollBy只能改变View内容的位置不能改变view的位置(只能将view的内容滑动,而不能将view本身进行移动)
从源码可以看到scrollBy最后还是会调用scrollTo方法的
scrollBy实现了基于当前位置的相对滑动即在滑动到当前位置加上相应的偏移量,scrollTo实现了基于所传递参数的滑动,根据传递的参数确定滑到那个位置
在滑动的过程中,有两个重要的参数mScrollX和mScrollY,这个参数的值通过getScrollX和getScrollY方法分别得到。当view的左边缘在view内容的左边缘的右边时,mScrollX是正值,反之为负值;当view的上边缘在view内容的上边缘的下边是,mScrollY为正值,反之为负值。
使用动画
使用动画方式来移动view的translationX和translationY属性(translationX和translationY默认初始值为0,其值为相对于原来位置的偏移量)。
使用动画方式既可以采用传统的view动画,即补间动画,也可以采用属性动画,不过属性动画是android3.0之后才有的,android3.0之前是无法使用属性动画的,这个时候可以通过使用动画兼容库nineoldandroids来实现属性动画,不过此时实现的属性动画的本质仍然是传统的view动画,
传统的view动画即补间动画是不能真正改变view的位置的,平移后的只是view的影像而已,但是属性动画却可以。
改变布局参数
重新设置一个view的LayoutParams参数即可
总结:
- scrollTo/scrollBy:操作简单,适合对view的内容滑动
- 动画:操作简单,主要适用于没有交互的view和实现复杂的动画效果
- 改变布局参数:操作稍微复杂,适用于有交互的view