scrollTo scrollBy scrollX scrollY offsetDescendantRectToMyCoords的理解
来源:互联网 发布:同花顺炒股软件下载 编辑:程序博客网 时间:2024/05/07 06:43
参考:http://blog.csdn.net/qinjuning/article/details/7247126
scrollTo与scrollBy:
scrollTo:
scrollBy:
view.scrollBy(100,0)是将view所onDraw的内容向左移动100个像素。对于view的onDraw来说,canvas可以理解为无边界的,无穷大。对于下图中C的onDraw来说,它的可视区域是位于B中可视的区域,它调用scrollBy移动后D跟着移动,移进可视区域的画布也还是蓝色的。
例:scrolltotest:
如图,A包含B,B包含C,C包含D,各layout的mLeft,mTop都是20像素,D的边长是60.
初始时D位于C的坐标值[20,20,80,80].
点击button,调用:layC.scrollBy(-50, 0);
调用后,D向右移动50像素,D位于C中的坐标[20,20,80,80]没变。但是layC.getScrollX()从0变为-50
再调用:
打印结果:viewDRect in layA:[110,60][170,120]
layA.offsetDecendantRectToMyCoords(layC, viewDRect)是将D在C中的坐标值viewDRect变为A坐标系中的坐标值。
Scroller对象
ViewGroup.dispatchDraw中:for循环调用drawChild(child),在drawChild中child.draw(),也就是View.draw(),其中调用computeScroll:
它是个空函数。
FocusScrollRelativeLayout中,使用辅助类Scroller结合computScroll函数,不断的调用View.scrollTo或View.scrollBy来实现内容滚动。(假设view的画布是无限大的,想滚动多少距离就能滚动多少距离。而H5中,里面要嵌套一层div来模拟android的那层画布,而且要指定好大小)。
先说FocusScrollRelativeLayout:
onKeyDown中计算好要滚动的距离dx,dy,然后调用:
界面开始一直刷新,然后不断调用computeScroll:
由于mScroller中设置好了duration时间,在这段时间内,mScroller.computeScrollOffset()都是一直返回true的,从而调用了scrollTo方法实现view的内容移动。
- scrollTo scrollBy scrollX scrollY offsetDescendantRectToMyCoords的理解
- scrollto scrollby scrollX scrollY的个人理解
- android中scrollTo和scrollBy的理解~~
- android中scrollTo和scrollBy的理解
- android中scrollTo和scrollBy的理解~~
- scrollTo 以及 scrollBy方法的理解
- android中scrollTo和scrollBy的理解
- android scrollto 与scrollby 的理解
- 理解scrollBy 与 scrollTo
- window.scrollY和scrollX在IE下报错的解决方法
- View的scrollTo/scrollBy
- 深入理解 scrollTo()、scrollBy()、getScrollX()
- android view的scrollTo,scrollBy,computeScroll的理解
- ScrollTo和ScrollBy的区别
- scrollTo与scrollBy的区别
- View的scrollTo和scrollBy
- ScrollBy & ScrollTo
- 面试总结(4):top、left、right、bottom 和 translationX、translationY 和 scrollX,scrollY的区别
- 最快让你上手ReactiveCocoa之基础篇
- Hadoop2.6 HDFS EDIT LOG分析
- 3033: 太鼓达人 欧拉图+暴力
- ibatis中使用insert后,返回值为null的解决方案
- maven-nexus中添加本地仓库
- scrollTo scrollBy scrollX scrollY offsetDescendantRectToMyCoords的理解
- IOS调试lldb命令常用,po, Xcode控制台调试
- 怎么让footer始终在页面底部?
- LeetCode: 009-Lowest Common Ancestor of a Binary Search Tree
- centos-6.6安装nginx-1.9.7和php7.0.0(一)
- Binder与Service 通信机制详解二 (Binder与Service理解)
- php删除字符串中的所有空格 trimall
- UITableView使用小结(滚动到顶部、获取cell、cell选中状态、刷新cell或者section)
- 区分String[] args和String args[]