用做数学证明题的思维对android Scroller类的核心方法进行详解
来源:互联网 发布:centos源码安装git 编辑:程序博客网 时间:2024/06/05 20:39
当然是先贴源代码
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();
}
}
}
scrollTo(x,0)由源代码得出,x就是新的水平偏移量(mscrollx=x);所以如果x是正,表示向左在滚动。
为什么是向左,因为原来的坐标是(0,0),假设现在滚动到(-10,0),那么view内容自然是向左在移动,此时mscrollx的计算公式就是0-(-10),用old-new.
调用startScroll(startx,starty,dx,dy);表示直接从mscrollx等于startx的地方开始滚动,到mscrollx等于startx+dx的地方结束滚动
由此可以看出mscrollx的值有个区间,就是从statx----startx+dx递次变化
由上面scrollTo(新的mscrollx,新的mscrolly)和mScroller.getCurrX()=mScrollX,
所以调用
if(mScroller.computeScrollOffset()){//用来判断滚动是否结束
scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
postInvalidate();
}
就能达成滚动需求。
这也可以看出startScroll()只是标注了mScroller的变化区间,
实际的滚动需要重写computeScroll()方法,调用scrollTo完成滚动需求。
最后提几点常用的但是容易忽略的知识点,
1,scrollTo和scrollBy,computeScroll()是view的方法
2,startScroll是Scroller的方法
3,smoothScrollTo是ScrollView的方法
0 0
- 用做数学证明题的思维对android Scroller类的核心方法进行详解
- Scroller的fling方法详解
- 对Scroller中的startScroll方法的理解
- 用组合数学的方法证明相似
- 用做个人网站的心态进行SEO
- Android开发之Scroller的使用详解
- android Scroller类详解
- android scroller类的使用
- android scroller类的使用
- android scroller类的使用
- Android Scroller类与computeScroll方法的调用关系
- 面试题里的数学证明题
- 面试题里的数学证明题
- 一道有趣的数学证明题
- 个人对Scroller中的startScroll方法的理解
- Android Scroller的用法
- Android的Scroller介绍
- Android Scroller的理解
- 格形变算法(Linear rotation-invariant coordinates和As-Rigid-As-Possible)
- 综述HTTP里Get与Post方式的区别
- fflush(stdin)和fflush(stdout)
- handler类的作用:--有道笔记的整理
- OpenCV提取图像颜色直方图
- 用做数学证明题的思维对android Scroller类的核心方法进行详解
- DBMS_PROFILER Package
- java.lang.Thread.sleep()方法和java.lang.Object.wait()方法的区别--有道笔记整理
- AjaxFileUpload 上傳圖片 後台
- java读取文件大全
- JavaScript prototype 使用介绍
- Object-c编码规范的几点建议
- 两种交互布局如何在同一页面显示?
- 应用之星,屌丝逆袭之APP开发神器