Android Scroller用法
为什么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用法相关推荐
- Android Scroller完全解析,关于Scroller你所需知道的一切
2016大家新年好!这是今年的第一篇文章,那么应CSDN工作人员的建议,为了能给大家带来更好的阅读体验,我也是将博客换成了宽屏版.另外,作为一个对新鲜事物从来后知后觉的人,我终于也在新的一年里改用Ma ...
- 【转】 Android - LayoutInflate用法
[转自]http://blog.csdn.net/scut1135/article/details/7055461 通俗的说,inflate就相当于将一个xml中定义的布局找出来. 因为在一个Acti ...
- MTK驱动(77)---Android getevent用法
Android getevent用法 getevent命令用法如下: Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [ ...
- Android inflater用法
Android inflater用法 简介 具体作用 获取layoutInflater的三种方式 源码查看 返回值结果 注意 简介 在实际的开发中layoutInflater这个类的主要的主要的作用类 ...
- android plurals用法
参考 android plurals用法 对一个给定的语言和数字来说,决定使用哪一个case的规则是很复杂的,所以android提供了方法getQuantityString(),它可以用来为你选择合适 ...
- android plurals用法(单复数)
0.相关文章 android plurals用法 Android中的string资源占位符及Plurals string 1.使用 对一个给定的语言和数字来说,决定使用哪一个case的规则是很复杂的, ...
- Android Scroller简单用法
Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(conte ...
- [Android自定义控件] Android Scroller工具类和GestureDetector的简单用法
转载:http://ipjmc.iteye.com/blog/1615828 Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View ...
- Android Scroller的使用及自我理解
2019独角兽企业重金招聘Python工程师标准>>> 以前做一个看书的项目时,有个翻书的功能,当手指滑动书页移动一段然后抬起后,需要页面view自动完成剩余的操作: 1.当滑动距离 ...
最新文章
- less background url相对路径取不到编译报错问题
- 权限系统设计模型分析(DAC,MAC,RBAC,ABAC)
- asp dsn mysql 连接失败_ASP连接MySQL遇到一些问题 Microsoft OLE DB Provider for ODBC Drivers (0x80004005)...
- easypoi list中的map导出_如何优雅的导出 Excel
- JVM源码分析--ClassLoader类加载器
- 小米投资偏爱智能与芯片 雷军:有3家科创板上市
- oracle此环境不满嘴,2.Oracle歌词说唱流行音乐说唱歌曲
- 看到前一篇文章的感慨
- python爬取qq音乐
- K3 Cloud 数据库查询表常用语句
- 亚马逊测评自养号IP重要性
- 邮件服务器 二级域名,hMailServer+Roundcube+APMServ+希网二级域名+ADSL搭建邮件服务器...
- linux挂载ntfs硬盘6,CentOS 6.2 挂载 NTFS格式的硬盘
- 【小家java】java8新特性之---全新的日期、时间API(JSR 310规范),附SpringMVC、Mybatis中使用JSR310的正确姿势
- 英语语法:词法之非谓语动词--起式
- 网页查看计算机硬件,怎么查看电脑硬件设备的Guid值?
- uva 10118(DP)
- Latex排版论文常见问题
- android 桥接,路由器一键桥接Android实现
- 祁隆乐凡短视频隔空宣战,和合国际收购祁隆歌曲《借我星光》版权
热门文章
- ajax.filter json过滤,$.ajax()的dataFilter方法
- 计算机体系结构:嵌入式方法_计算机考研——计算机二级学科详解
- 小程序服务器角色,小程序在我们的生活中扮演什么角色?
- python预测随机数据_随机森林预测
- tensorflow学习(3.tensorboard的使用)
- 【杂谈】图像识别书看完了感觉不过瘾?这些拓展资料值得你关注一下
- 【AI初识境】被Hinton,DeepMind和斯坦福嫌弃的池化,到底是什么?​​​​​​​
- 2022年跨境品牌出海新玩法策略:Tiktok+速卖通平台运营必不可少
- 全球及中国生物降解塑料行业应用需求前景及竞争态势研究报告2021版
- 全球及中国超导磁铁探针台行业现状规模及“十四五”发展趋势预测报告2021-2027年版