为什么80%的码农都做不了架构师?>>>   

概述

Android里Scroller类是为了实现View平滑滚动的一个Helper类。通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(context)。设置mScroller滚动的位置时,并不会导致View的滚动,通常是用mScroller记录/计算View滚动的位置,再重写View的computeScroll(),完成实际的滚动。

相关API介绍如下

mScroller.getCurrX() //获取mScroller当前水平滚动的位置
mScroller.getCurrY() //获取mScroller当前竖直滚动的位置
mScroller.getFinalX() //获取mScroller最终停止的水平位置
mScroller.getFinalY() //获取mScroller最终停止的竖直位置
mScroller.setFinalX(int newX) //设置mScroller最终停留的水平位置,没有动画效果,直接跳到目标位置
mScroller.setFinalY(int newY) //设置mScroller最终停留的竖直位置,没有动画效果,直接跳到目标位置

//滚动,startX, startY为开始滚动的位置,dx,dy为滚动的偏移量, duration为完成滚动的时间
mScroller.startScroll(int startX, int startY, int dx, int dy) //使用默认完成时间250ms
mScroller.startScroll(int startX, int startY, int dx, int dy, int duration)

mScroller.computeScrollOffset() //返回值为boolean,true说明滚动尚未完成,false说明滚动已经完成。 当startScroll执行过程中即在duration时间内,computeScrollOffset 方法会一直返回true,但当动画执行完成后会返回返加false。【通常放在View.computeScroll()中,用来判断是否滚动是否结束】

View.computeScroll()

当我们touch视图时或invalidate()或postInvalidate()都会导致这个方法的执行

基本用法实例

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Scroller;  public class CustomView extends LinearLayout {  private Scroller mScroller;  public CustomView(Context context, AttributeSet attrs) {  super(context, attrs);  mScroller = new Scroller(context);  }  //调用此方法滚动到目标位置  public void smoothScrollTo(int fx, int fy) {  int dx = fx - mScroller.getFinalX();  int dy = fy - mScroller.getFinalY();  smoothScrollBy(dx, dy);  }  //调用此方法设置滚动的相对偏移  public void smoothScrollBy(int dx, int dy) {  //设置mScroller的滚动偏移量  mScroller.startScroll(mScroller.getFinalX(), mScroller.getFinalY(), dx, dy);  invalidate();//这里必须调用invalidate()才能保证computeScroll()会被调用,否则不一定会刷新界面,看不到滚动效果  }  @Override  public void computeScroll() {  //先判断mScroller滚动是否完成  if (mScroller.computeScrollOffset()) {  //这里调用View的scrollTo()完成实际的滚动  scrollTo(mScroller.getCurrX(), mScroller.getCurrY());  //必须调用该方法,否则不一定能看到滚动效果  postInvalidate();  //View中的computeScroll()方法并不是运行在主线程中的,所以我们要使postInvalidate()方法来调用重绘}  super.computeScroll();  }
}

转载于:https://my.oschina.net/fltsp/blog/1528665

Android Scroller用法相关推荐

  1. Android Scroller完全解析,关于Scroller你所需知道的一切

    2016大家新年好!这是今年的第一篇文章,那么应CSDN工作人员的建议,为了能给大家带来更好的阅读体验,我也是将博客换成了宽屏版.另外,作为一个对新鲜事物从来后知后觉的人,我终于也在新的一年里改用Ma ...

  2. 【转】 Android - LayoutInflate用法

    [转自]http://blog.csdn.net/scut1135/article/details/7055461 通俗的说,inflate就相当于将一个xml中定义的布局找出来. 因为在一个Acti ...

  3. MTK驱动(77)---Android getevent用法

    Android getevent用法 getevent命令用法如下: Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [ ...

  4. Android inflater用法

    Android inflater用法 简介 具体作用 获取layoutInflater的三种方式 源码查看 返回值结果 注意 简介 在实际的开发中layoutInflater这个类的主要的主要的作用类 ...

  5. android plurals用法

    参考 android plurals用法 对一个给定的语言和数字来说,决定使用哪一个case的规则是很复杂的,所以android提供了方法getQuantityString(),它可以用来为你选择合适 ...

  6. android plurals用法(单复数)

    0.相关文章 android plurals用法 Android中的string资源占位符及Plurals string 1.使用 对一个给定的语言和数字来说,决定使用哪一个case的规则是很复杂的, ...

  7. Android Scroller简单用法

    Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(conte ...

  8. [Android自定义控件] Android Scroller工具类和GestureDetector的简单用法

    转载:http://ipjmc.iteye.com/blog/1615828 Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View ...

  9. Android Scroller的使用及自我理解

    2019独角兽企业重金招聘Python工程师标准>>> 以前做一个看书的项目时,有个翻书的功能,当手指滑动书页移动一段然后抬起后,需要页面view自动完成剩余的操作: 1.当滑动距离 ...

最新文章

  1. less background url相对路径取不到编译报错问题
  2. 权限系统设计模型分析(DAC,MAC,RBAC,ABAC)
  3. asp dsn mysql 连接失败_ASP连接MySQL遇到一些问题 Microsoft OLE DB Provider for ODBC Drivers (0x80004005)...
  4. easypoi list中的map导出_如何优雅的导出 Excel
  5. JVM源码分析--ClassLoader类加载器
  6. 小米投资偏爱智能与芯片 雷军:有3家科创板上市
  7. oracle此环境不满嘴,2.Oracle歌词说唱流行音乐说唱歌曲
  8. 看到前一篇文章的感慨
  9. python爬取qq音乐
  10. K3 Cloud 数据库查询表常用语句
  11. 亚马逊测评自养号IP重要性
  12. 邮件服务器 二级域名,hMailServer+Roundcube+APMServ+希网二级域名+ADSL搭建邮件服务器...
  13. linux挂载ntfs硬盘6,CentOS 6.2 挂载 NTFS格式的硬盘
  14. 【小家java】java8新特性之---全新的日期、时间API(JSR 310规范),附SpringMVC、Mybatis中使用JSR310的正确姿势
  15. 英语语法:词法之非谓语动词--起式
  16. 网页查看计算机硬件,怎么查看电脑硬件设备的Guid值?
  17. uva 10118(DP)
  18. Latex排版论文常见问题
  19. android 桥接,路由器一键桥接Android实现
  20. 祁隆乐凡短视频隔空宣战,和合国际收购祁隆歌曲《借我星光》版权

热门文章

  1. ajax.filter json过滤,$.ajax()的dataFilter方法
  2. 计算机体系结构:嵌入式方法_计算机考研——计算机二级学科详解
  3. 小程序服务器角色,小程序在我们的生活中扮演什么角色?
  4. python预测随机数据_随机森林预测
  5. tensorflow学习(3.tensorboard的使用)
  6. 【杂谈】图像识别书看完了感觉不过瘾?这些拓展资料值得你关注一下
  7. 【AI初识境】被Hinton,DeepMind和斯坦福嫌弃的池化,到底是什么?​​​​​​​
  8. 2022年跨境品牌出海新玩法策略:Tiktok+速卖通平台运营必不可少
  9. 全球及中国生物降解塑料行业应用需求前景及竞争态势研究报告2021版
  10. 全球及中国超导磁铁探针台行业现状规模及“十四五”发展趋势预测报告2021-2027年版