记得之前在看医生的群英传里面有写到实现安卓中的7种滑动方法如下:
1、layout方法
2、offsetLeftAndRight与offsetTopandBottom;
3、LayoutParams;
4、scrollTo和scrollBy
5、Scroller;
6、属性动画
7、ViewDragHelper();
但是上面的实现滑动的机制大体上分为如下三种:
1、内容的移动
2、布局参数的移动
3、属性的移动
采用上面三种滑动机制来对一个FrameLayout做一个,向右滑动100px效果分别如下:
从效果很容易发现
1、内容移动,通过移动里面的内容来实现滑动,其本身是不会滑动的,也就是我们常说的Scroller;所以TranslationX和left是不会发生变化的;
2、属性滑动,通过修改TranslationX属性来实现移动,也就是我们常说的属性动画;所以其layout的布局参数是不会发生变化的;
3、布局参数滑动:通过修改Left,bottom等布局参数实现的滑动,其属性是不会发生变化的;
为什么属性和布局参数都可以实现滑动,原因:
view.getX()决定这个View的在父容器的位置,而:
view.getX()=view.getTranslationX()+view.getLeft();
所以通过属性和布局参数都是可以让View进行一个滑动的
一般来说,getTranslationX()默认是0;
总结:
对于上面的7中滑动的实现方式分类:
1、layout方法 :布局参数滑动
2、offsetLeftAndRight与offsetTopandBottom;:布局参数滑动
3、LayoutParams;:布局参数滑动
4、scrollTo和scrollBy:内容滑动
5、Scroller;:内容滑动
6、属性动画:属性滑动;
7、ViewDragHelper();:布局参数的滑动;
如果我们想要滑动的话,该采用那种方式呢?
这里借用艺术探索里面的内容:
1、内容滑动: 操作简单,多用于view内部的滑动
2、属性滑动:操作简单,实现没有交互的view和实现复杂的动画效果;
3、布局参数的滑动:操作复杂,适合有有交互的View
android系统原生的控件ScrollView我们查看源码可以知道,其实现的滚动采用的是内容滚动;