使用Scoller实现弹性滑动
2016-05-27 09:52
246 查看
Scroller scroller=new Scroller(mContext);
//缓慢滚动到指定位置
private voidsmoothScrollTO(int destX,int destY){
int scrollX=getScrollX();
int deltaX=destX -scrollX();
//1000ms内滑向destX,效果就是慢慢滑动
mScroller.startScroll(scrollX,0,deltaX,0,1000);
invalidate();
}
public void computeScroll(){
if(mScroller.computeScrollOffset()){
scrollTo(mScroller.getCurrX(),mScroller.getCurrY());
postInvalidate();
}
}
startScorll进行数据保存
invalidate();导致view被重绘,在view重绘时draw方法会调用
computeScroll方法获取Scroll的参数scrollX,scrollY通过ScrollTo方法实现滑动
接着调用postInvalidate方法进行第二次重绘。postInvalidate会继续调用computeScroll。。。
直至整个滑动过程结束
每次view重绘都会导致小幅度的滑动,而多次小幅度滑动就组成了弹性滑动。
//缓慢滚动到指定位置
private voidsmoothScrollTO(int destX,int destY){
int scrollX=getScrollX();
int deltaX=destX -scrollX();
//1000ms内滑向destX,效果就是慢慢滑动
mScroller.startScroll(scrollX,0,deltaX,0,1000);
invalidate();
}
public void computeScroll(){
if(mScroller.computeScrollOffset()){
scrollTo(mScroller.getCurrX(),mScroller.getCurrY());
postInvalidate();
}
}
startScorll进行数据保存
invalidate();导致view被重绘,在view重绘时draw方法会调用
computeScroll方法获取Scroll的参数scrollX,scrollY通过ScrollTo方法实现滑动
接着调用postInvalidate方法进行第二次重绘。postInvalidate会继续调用computeScroll。。。
直至整个滑动过程结束
每次view重绘都会导致小幅度的滑动,而多次小幅度滑动就组成了弹性滑动。
相关文章推荐
- android系统剪裁照片
- Errors running builder 'DeploymentBuilder' on project '工程名'
- Android 最火的快速开发框架XUtils
- C++小里程
- 便签5-js延时器定时器
- Supercell:软银的无奈成全了腾讯的“诗和远方”
- java学习、java教程:如何学java开发工程师
- linux shell中文显示
- C++--VECTOR的简单应用
- wampserver安装配置。解决不能访问项目的问题。局域网不能访问的问题
- Spring IOC容器基本原理
- Spring JavaConfig实例
- Http与Android网络请求的几种协议
- iOS 阿里云上传图片
- python学习10-模块
- csuoj-1731-XueXX and P-P String
- mysql flush logs时出现ERROR 1105
- Objective-C内存管理学习之ARC
- PHP程序员的技术成长规划
- Python urlparse模块