View 的滑动主要有 3 种方式:
1.通过 View 本身的
scrollTo/scrollBy
方法实现滑动2.通过动画给 View 添加平移效果实现滑动
3.通过改变 View 的 LayoutParams 使得 View 重新布局实现滑动
1、使用 scrollTo/scrollBy
在这里先介绍两个参数:mScrollX 和 mScrollY
(单位:像素)。
mScrollX = View 的左边框 - 内容的左边缘
mScrollY = View 的上边框 - 内容的上边缘
所以,mScrollX >0 表示 View 的内容逆着 X 轴(向左)移动,<0 表示顺着 X 轴(向右)移动(因为 View 这个框不会移动,scrollTo/scrollBy 只能改变View 内容的位置);同理,mScrollY >0 表示 View 的内容逆着 Y 轴(向上)移动,<0 表示顺着 Y 轴(向下)移动。
2、使用动画
我们通过动画来平移一个 View ,主要是操作 View 的 translationX
和 translationY
属性。注意,View 动画是对 View 的影像做操作,它并没有真正改变 View 的位置信息,也就是 View 动画后的 x、y、宽、高等属性并没有改变,所以响应事件仍在原来的位置。
3、改变布局参数
就是改变 LayoutParams。不过注意,这个 LayoutParams 是针对于父容器而言的,假如父容器是 LinearLayout
,那么获取 View 的 LayoutParams 就是:
LinearLayout.LayoutParams p = (LinearLayout.LayoutParams) view.getLayoutParams();
之后修改 p 的边距或者宽高就能改变 View 的位置。
4、总结
scrollTo/scrollBy :操作简单,适合对 View 内容的滑动
动画 :操作简单,适合没有用于交互的 View 和实现复杂的动画效果
改变布局参数 :操作稍微复杂,适用于有交互的 View