博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
站在源码的角度全解Scroller工作机制(二)
阅读量:6084 次
发布时间:2019-06-20

本文共 884 字,大约阅读时间需要 2 分钟。

hot3.png

scrollTo( )和scrollBy( )

在的源码中,系统提供了和这两个方法用于实现View的滚动。这两个方法又有什么联系呢,我们先来看一下scrollTo()的源码:

scrollTo()是实现View滚动的核心,调用该方法使得View相对于其初始位置滚动某段距离。在该方法内部将输入参数x,y分别赋值给用于表示View在X方向滚动距离的mScrollX和表示在Y方向滚动距离的mScrollY,然后调用onScrollChanged()并且刷新重绘View。在后续的操作中调用view.getScrollX()或view.getScrollY()可以很容易地得到mScrollX和mScrollY,关于这两个值我们再看看源码是怎么说的。

 

       关于mScrollX,官方文档描述如下:

mScrollX和mScrollY用于描述View的内容在水平方向或垂直方向滚动的距离。

什么是View的内容呢?比如,对于一个TextView而言,文本就是它的内容;对于一个ViewGroup而言,子View就是它的内容。

故在此,我们请务必注意:和滚动的是View的内容,而不是将View做整体的移动。

 

继续看scrollBy()的源码:

看到了吧:scrollBy()的源码非常简洁,它仅仅是再次调用了scrollTo()。

直白地说:它只是把输入参数x,y累加到了mScrollX和mScrollY上而已。

所以,scrollBy()方法是在mScrollX和mScrollY的基础上滚动的。

小结:

1.mScrollX和mScrollY分别表示View在X、Y方向的滚动距离。

2.scrollTo( )表示View相对于其初始位置滚动某段距离。由于View的初始位置是不变的,所以如果利用相同输入参数多次调用scrollTo()   方法,   View只会出现一次滚动的效果而不是多次。

 

3.scrollBy( )表示在mScrollX和mScrollY的基础上继续滚动。

转载于:https://my.oschina.net/u/2971691/blog/793252

你可能感兴趣的文章
需要学的东西
查看>>
Internet Message Access Protocol --- IMAP协议
查看>>
Linux 获取文件夹下的所有文件
查看>>
对 Sea.js 进行配置(一) seajs.config
查看>>
第六周
查看>>
解释一下 P/NP/NP-Complete/NP-Hard 等问题
查看>>
javafx for android or ios ?
查看>>
微软职位内部推荐-Senior Software Engineer II-Sharepoint
查看>>
sql 字符串操作
查看>>
【转】Android布局优化之ViewStub
查看>>
网络安全管理技术作业-SNMP实验报告
查看>>
根据Uri获取文件的绝对路径
查看>>
Flutter 插件开发:以微信SDK为例
查看>>
.NET[C#]中NullReferenceException(未将对象引用到实例)是什么问题?如何修复处理?...
查看>>
边缘控制平面Ambassador全解读
查看>>
Windows Phone 7 利用计时器DispatcherTimer创建时钟
查看>>
程序员最喜爱的12个Android应用开发框架二(转)
查看>>
vim学习与理解
查看>>
DIRECTSHOW在VS2005中PVOID64问题和配置问题
查看>>
MapReduce的模式,算法以及用例
查看>>