码迷,mamicode.com
首页 > 其他好文 > 详细

View的三种滑动方式

时间:2018-03-14 15:04:28      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:size   tca   wak   nim   mat   ida   viewgroup   参数   pre   

 

这一节我想记录的是View的三种滑动方式,但这三种滑动方式基本上不是弹式滑动 

 

一.使用scrollTo/scrollBy

      先看一下 scrollTo和 scrollBy 的源码是如何实现的

/**
* Set the scrolled position of your view. This will cause a call to
* {@link #onScrollChanged(int, int, int, int)} and the view will be
* invalidated.
* @param x the x position to scroll to
* @param y the y position to scroll to
*/
public void scrollTo(int x, int y) {
if (mScrollX != x || mScrollY != y) {
int oldX = mScrollX;
int oldY = mScrollY;
mScrollX = x;
mScrollY = y;
invalidateParentCaches();
onScrollChanged(mScrollX, mScrollY, oldX, oldY);
if (!awakenScrollBars()) {
postInvalidateOnAnimation();
}
}
}

/**
* Move the scrolled position of your view. This will cause a call to
* {@link #onScrollChanged(int, int, int, int)} and the view will be
* invalidated.
* @param x the amount of pixels to scroll by horizontally
* @param y the amount of pixels to scroll by vertically
*/
public void scrollBy(int x, int y) {
scrollTo(mScrollX + x, mScrollY + y);
}

从上面的源码部分可以看出 scrollBy的实现方法也是基于scrollTo 实现的
mScrollX:代表的是 View内容左边缘的距离到View左边缘在水平方向的距离
mScrollY: 代表的是View内容上边缘的距离到View上边缘在垂直方向的距离 (这两个值都是以View内容的上边缘和左边缘为基准的)
从这两个值的定义来看,scrollTo和scrollBy只能改变View内容的位置而不能改变View在布局中的位置。

也可以这么理解:
如果偏移位置发生了改变,就会给mScrollX和mScrollY赋新值,改变当前位置。
scrollTo(int x,int y)中的x,y 不是代表坐标而是代表了偏移量
例如: 我要移动view到坐标点(100,100),那么我的偏移量就是(0,,0)  - (100,100) = (-100 ,-100)  ,我就要执行view.scrollTo(-100,-100),达到这个效果。

 

二.使用动画

     因为Android 3.0以下的都不用了 所以这里只介绍属性动画如何实现View 的移动.

             ObjectAnimator.ofFloat(targetView,"translationX",0,100).setDuration(100).start();  这行代码就能够让View滑动  (动画在下一节中会说到)

 

三.改变布局参数(即改变布局参数)

        ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) updateCowBtn.getLayoutParams();

          params.leftMargin +=10;

     updateCowBtn.requestLayout();

          通过改变LayoutParams的方式去实现View的滑动同样是一种灵活的方式,需要根据不同的情况去处理

 

三种不同的滑动的方式

       scrollTo/scrollBy : 操作简单,适合对View内容的滑动

      动画:操作简单,主要使用于没有交互的View和实现复杂的动画

     改变布局参数:操作有点复杂,使用于有交互的View

 

View的三种滑动方式

标签:size   tca   wak   nim   mat   ida   viewgroup   参数   pre   

原文地址:https://www.cnblogs.com/xiongbo753/p/8566966.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!