Andrid_scrollTo/scrollBy方法的区别
来源:互联网 发布:剑三捏脸数据不合法 编辑:程序博客网 时间:2024/06/08 19:31
我们都知道 View#scrollTo/scrollBy() 方法是用于 View 内容的滑动的。那么这两个方法有什么区别呢?
下面通过源码来总结这两个区别在哪里:
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(); } }}public void scrollBy(int x, int y) { scrollTo(mScrollX + x, mScrollY + y);}
上面是两个方法的源码,可以清楚地看到 scrollBy 实际是调用 scrollTo 方法。那么 scrollTo 做了什么事?
根据传入的 x 和 y 值,赋值给当前的 mScrollX 和 mScrollY 两个值,这两个值是什么意思呢?它们分别表示当前 View 内容需要滑动的绝对位置。
下面举例分析:
假设当前 View 的位置是在(60,70)的位置上,如果调用 scrollTo(-50,-50),那么当前 View 的内容直接滑动到(50,50)的位置上,结果 View 内容的位置为 (50,50)。
scrollBy 内部就是在当前 View 内容的位置的基础上再滑动 x 和 y 像素的距离,假设当前 View 内容的位置为(60,70),然后调用 scrollBy(-50,-50) 之后,View 内容会在水平向右滑动50px,竖直向下滑动 50px,结果 View 内容的位置为(110,120)。
结论: scrollTo 方法是实现 View 内容的绝对滑动,而 scrollBy 是实现 View 内容的相对滑动。
在上面有一点需要注意的是,我一直在强调 View 内容的滑动,而不是 View 的滑动,因为 scroll 就是实现的是 View 内容的滑动,View 本身的位置和顶点坐标并不会发生改变,这是需要注意的一点;
当 View 的内容的左边缘在 View 的左边缘的左边时,那么 scollX > 0,否则则相反;
当 View 的内容的顶部边缘在 View 的顶部边缘上边时,那么 scolY > 0,否则则相反;
- Andrid_scrollTo/scrollBy方法的区别
- view的scrollTo和scrollBy方法的区别
- ScrollTo和ScrollBy的区别
- scrollTo与scrollBy的区别
- ScrollBy 方法
- View的scrollTo和scrollBy的区别
- scrollTo/scrollBy的区别,scroller的玩法
- Android scrollTo()与scrollBy()的区别
- Android View 的scrollTo 和 scrollBy方法
- scrollTo 以及 scrollBy方法的理解
- android View的scrollTo,scrollBy方法详解
- android View的事件体系 scrollTo和scrollBy的区别
- scrollTo 与 scrollBy这两个函数的区别
- 【移动开发】View的scrollTo()和scrollBy()区别
- Android中View的scrollTo()和scrollBy()区别
- Android scrollBy(x,y)和scrollTo(x,y)的区别
- Android中getX()、getRawX()、getScrollX()、scrollTo()、scrollBy()等的区别
- 【移动开发】View的scrollTo()和scrollBy()区别
- 网站前端管理框架Npm + bower + grunt
- POJ 3903 Testingthe CATCHER ( LIS )
- centos7编译hadoop2.7.3
- 动态规划联系一—21三角形最佳路径问题
- 了解AJAX以及其封装编程
- Andrid_scrollTo/scrollBy方法的区别
- 一篇SSM框架整合友好的文章(一)
- Java反射机制
- WAVE格式
- CameraSurfaceView——Android Camera使用详解
- js实验2.(4)AJAX的GET
- 简单常用滤波算法C语言实现
- 编程之法--字符串包含
- poj 1948 Triangular Pastures