android 布局滑动中scrollTo 和 scrollBy 方法使用说明
2016-07-18 22:07
225 查看
首先,看源码:
从源码中可以看到,scrollBy()的内部其实是调用了scrollTo()。在scrollTo()中,调用了onScrollChanged()和invalidate()。onScrollChanged()的作用就是告诉系统(可以理解为Android框架),这个View的scrollTo()或scrollBy()曾经被调用过;而invalidate()是告诉系统,这个View需要被重新绘制。
分别通过getScrollX() 和getScrollY()方法获得。
注意:mScrollX和mScrollY指的并不是坐标,而是偏移量。
如果偏移位置发生了改变,就会给mScrollX和mScrollY赋新值,改变当前位置。
#####注意:x,y代表的不是坐标点,而是偏移量。
例如:
我要移动view到坐标点(100,100),那么我的偏移量就是:原位置坐标-目标位置坐标=偏移量 (0,,0) - (100,100) = (-100 ,-100) ,我就要执行view.scrollTo(-100,-100),达到这个效果。
从源码中看出,它实际上是调用了scrollTo(mScrollX + x, mScrollY + y);
mScrollX + x和mScrollY + y,即表示在原先偏移的基础上在发生偏移,通俗的说就是相对我们当前位置偏移。
由于sctrollTo只是移动了内容content,所以是父类VIEW里面的所有子控件在移动,而父容器ViewGroup并没有移动,也就是说位置它还占用着,移动子控件的时候,子控件只能在容器里面移动,如果子控件移动到了超出的地方(父控件的范围),那么超出的位置就不会显示了。
public void scrollTo(int x, int y) { if (mScrollX != x || mScrollY != y) { int oldX = mScrollX; int oldY = mScrollY; mScrollX = x; mScrollY = y; onScrollChanged(mScrollX, mScrollY, oldX, oldY); if (!awakenScrollBars()) { invalidate(); } } }
public void scrollBy(int x, int y) { scrollTo(mScrollX + x, mScrollY + y); }
从源码中可以看到,scrollBy()的内部其实是调用了scrollTo()。在scrollTo()中,调用了onScrollChanged()和invalidate()。onScrollChanged()的作用就是告诉系统(可以理解为Android框架),这个View的scrollTo()或scrollBy()曾经被调用过;而invalidate()是告诉系统,这个View需要被重新绘制。
mScrollX:表示离视图起始位置的x水平方向的偏移量 mScrollY:表示离视图起始位置的y垂直方向的偏移量
分别通过getScrollX() 和getScrollY()方法获得。
注意:mScrollX和mScrollY指的并不是坐标,而是偏移量。
scrollTo(int x,int y):
如果偏移位置发生了改变,就会给mScrollX和mScrollY赋新值,改变当前位置。
#####注意:x,y代表的不是坐标点,而是偏移量。
例如:
我要移动view到坐标点(100,100),那么我的偏移量就是:原位置坐标-目标位置坐标=偏移量 (0,,0) - (100,100) = (-100 ,-100) ,我就要执行view.scrollTo(-100,-100),达到这个效果。
scrollBy(int x,int y):
从源码中看出,它实际上是调用了scrollTo(mScrollX + x, mScrollY + y);
mScrollX + x和mScrollY + y,即表示在原先偏移的基础上在发生偏移,通俗的说就是相对我们当前位置偏移。
由于sctrollTo只是移动了内容content,所以是父类VIEW里面的所有子控件在移动,而父容器ViewGroup并没有移动,也就是说位置它还占用着,移动子控件的时候,子控件只能在容器里面移动,如果子控件移动到了超出的地方(父控件的范围),那么超出的位置就不会显示了。
相关文章推荐
- CSS中的滑动门技术
- NGUI实现滑动翻页效果实例代码
- js实现的简洁网页滑动tab菜单效果代码
- js仿QQ中对联系人向左滑动、滑出删除按钮的操作
- javascript制作的滑动图片菜单
- JavaScript实现图片DIV竖向滑动的方法
- JS+CSS实现滑动切换tab菜单效果
- jQuery简单实现上下,左右滑动的方法
- jquery实现相册一下滑动两次的方法
- 内容滑动切换效果jquery.hwSlide.js插件封装
- jquery实现标题字体变换的滑动门菜单效果
- jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
- 基于jQuery滑动杆实现购买日期选择效果
- jQuery实现图片与文字描述左右滑动自动切换的方法
- jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
- 基于jQuery实现的向下滑动二级菜单效果代码
- 移动端jQuery修正Web页面滑动时div问题的两则实例
- 基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
- jquery实现左右滑动菜单效果代码
- jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)