Android Scroller
2024-5-13
| 2024-8-2
0  |  Read Time 0 min
type
status
date
slug
summary
tags
category
icon
password

前言

Android Scroller 是一个帮助 View 滚动的辅助类,Scroller 本身不会去滚动 View,它只是一个滚动计算辅助类,用于跟踪控件滑动的轨迹(Scroller 滚动分为两种类型,SCROLL_MODE 类型本质上是一个插值器,FLING_MODE 类型模拟物理世界的摩擦力,计算出减速度作用于滚动)。

Scroller

Android 中使用 Scoroller 类封装滚动。您可以使用滚动器(Scroller 或 OverScroller)来收集生成滚动动画所需的数据,例如,响应猛击手势。滚动器会随着时间的推移为您跟踪滚动偏移,但它们不会自动将这些位置应用到您的视图。您有责任以一定的速度获取并应用新坐标,以使滚动动画看起来平滑。

示例

下面通过示例展示 Scroller 使用方式和它的特性。
示例中 startScrollfling 滑动轨迹如下
notion image
 
notion image
 
 

Scroller 主要成员和方法

ViscousFluidInterpolator 插值器

ViscousFluidInterpolator 是 Scroller 的内部类它基于流体物理学,用于创建更复杂的代数插值。在 Android 动画插值器 里面介绍过插值器,对应的 ViscousFluidInterpolator 演示如下
notion image
 
 
 

OverScroller

它是Scroller类的一个增强版本,提供了更多的控制选项和更复杂的滚动行为。OverScroller主要用于实现在滚动过程中的惯性滚动效果。

示例

下面通过示例展示 OverScroller 使用方式和它的特性。
示例中 fling 滑动轨迹如下
notion image
 
 

OverScroller 主要成员和方法

OverScroller 封装了滚动,并具有超出滚动操作范围的能力。在大多数情况下,它是 Scroller 的直接替代品。其中一个关键的区别在于对 fling 支持了回弹效果。
回弹的实现在 OverScroller 内部类 SplineOverScroller 中完成的,它把滚动分为三个阶段
  • SPLINE:正常滑动阶段
  • BALLISTIC:越界减速阶段
  • CUBIC:回弹阶段
每个阶段滚动曲线都是不同的,更多细节可以参考 Android 列表滚动优化之 OverScroller 揭秘 这篇博客。

参考文档

ZoomImageView 实现指南(上篇)Android 动画插值器
  • Utterance
Catalog