常见的View滑动方式:
- 通过View本身提供的scrollTo/scrollBy方法实现滑动
- 通过动画实现View的滑动
- 通过改变View的LayoutParams使View重新布局实现滑动
1.使用scrollTo/scrollBy
scrollBy实现了基于当前位置的相对滑动,scrollTo实现了基于所传递参数的绝对滑动,scrollBy实际上也是调用了scrollTo,这点可以查看源码
scrollTo/scrollBy只能改变View内容的位置,不能改变View在布局中的位置
滑动过程中View内部的两个属性mScrollX和mScrollY的改变规则:这两个属性可以通过getScrollX和getScrollY来获得。在滑动过程中mScrollX总等于View的左边缘和View内容左边缘在水平方向上的距离,mScrollY总等于View上边缘和View内容上边缘在数竖直方向上的距离
2.使用动画
使用动画滑动View主要是操作View的translationX和translationY属性
注意:如果采用属性动画,要想兼容3.0以下,需要采用开源动画库nineoldandroids,view动画是对View的影像做操作,并不能真正改变View的位置参数
3.改变布局参数
改变布局参数即改变LayoutParams,重新设置一个View的LayoutParams:
MarginLayoutParams params = (MarginLayoutParams )btn.getLayoutParams(); params.width += 100; params.leftMargin += 100; btn.requestLayout(); //或者 btn.setLayoutParams(params)