Android View 的弹性滑动: Scroller使用说明
来源:互联网 发布:数据分析师学历 编辑:程序博客网 时间:2024/05/17 23:13
我在实现View滑动的方法总结这篇博客中介绍了View滑动的三种方法,没看过的可以先去看一下。
这篇文章主要讲解View的弹性滑动,即它滑动时会有一个过程,实现方法包括 Scroller、属性动画、使用延迟策略 这三个方法。
实现弹性滑动的思想:将一次大的滑动分成若干次小的滑动,并在一个时间段内完成。
具体方法讲解:
利用Scroller 实现弹性滑动
首先我门要明白getScrollX()、getScrollY()的含义:
getScrollX() 就是当前View的左上角相对于父布局左上角的x轴偏移量;
getScrollY() 就是当前View的左上角相对于父布局左上角的y轴偏移量;
使用Scroller时,要在自定义的ViewGroup中使用,在onTouchEvent()方法中调用我们自己定义的方法,如下:
private void smoothScrollBy(int dx, int dy) { //参数解释:1、x轴起始位置;2、y轴起始位置;3、x轴的偏移量;4、y轴的偏移量;5、完成这个滑动需要的时间 scroller.startScroll(getScrollX(), 0, dx, 0, 500); invalidate(); }
这里的smoothScrollBy方法就是当我们需要滑动时,要调的方法。其中dx、dy都是末位置减去起始位置的坐标 。然而仅仅是scroller.startScroll()方法是无法让View滑动的,invalidate()方法才会导致View重绘,此时会调用View的draw方法,然而在draw方法中又会掉用一个方法,如下:(此方法需要我们自己去实现,也在我们自定义的ViewGroup中实现)
@Override public void computeScroll() { //computeScrollOffset()返回true,代表滑动还未结束;false 则已结束。 if (scroller.computeScrollOffset()) { scrollTo(scroller.getCurrX(), scroller.getCurrY()); postInvalidate(); } }## 标题 ##
代码解析:当View重绘后会在draw方法中调用computeScroll方法,而computeScroll方法又会向scroller获取当前的scrollX和scrollY,然后通过scrollTo方法实现滑动;接着又掉用postInvalidate方法进行第二次重绘,然后就跟第一次重绘一样的流程了,如此反复,直到整个滑动过程结束。
后两种方法就不解释了,可以自己去探索。属性动画会在后面的文章中介绍。
- Android View 的弹性滑动: Scroller使用说明
- 使用Scroller实现View的弹性滑动
- Scroller实现View弹性滑动
- View的事件体系之--View的弹性滑动Scroller
- Android Scroller类详解--实现View内容弹性滑动
- 自定义View(四)弹性滑动Scroller
- View的弹性滑动
- Scroller-弹性滑动
- Scroller实现弹性滑动
- Scroller实现View的滑动
- Android中Scroller实现弹性滑动的原理和实例应用
- 弹性滑动(一)--使用Scroller
- 使用Scroller实现弹性滑动
- Android学习笔记 3.3View的弹性滑动
- 【android】View的事件体系3-弹性滑动
- 初识自定义View-View的弹性滑动
- 通过Scroller实现View的流畅滑动
- View的事件体系(上)(View基础知识,滑动,弹性滑动)
- hiho[Offer收割]编程练习赛1
- Two-Stream Convolutional Networks for Action Recognition in Video
- 入侵检测基础知识
- hdoj 1418 抱歉 【欧拉公式】
- 四大类NoSQL数据库
- Android View 的弹性滑动: Scroller使用说明
- 【bzoj1717】Milk Patterns 后缀数组 + (二分||单调队列)
- 关于 多进程epoll 与 “惊群”问题
- Java I/O学习(附实例和详解)
- 代码基本框架
- Java 引用类解析
- 校内欢乐赛之爆零季 POJ 1904
- RecycleView出现折叠效果
- 项目:漫漫H5游戏-抓娃娃机