Android里Scroller类是为了实现View平滑滚动的一个Helper类。通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(context)。设置mScroller滚动的位置时,并不会导致View的滚动,通常是用mScroller记录/计算View滚动的位置,再重写View的computeScroll(),完成实际的滚动 。
一些方法:
05
mScroller.setFinalX(
int
newX)
06
mScroller.setFinalY(
int
newY)
09
mScroller.startScroll(
int
startX,
int
startY,
int
dx,
int
dy)
10
mScroller.startScroll(
int
startX,
int
startY,
int
dx,
int
dy,
int
duration)
12
mScroller.computeScrollOffset()
for example:
01
import
android.content.Context;
02
import
android.util.AttributeSet;
03
import
android.util.Log;
04
import
android.view.View;
05
import
android.widget.LinearLayout;
06
import
android.widget.Scroller;
09
public
class
CustomView
extends
LinearLayout {
12
private
static
final
String TAG =
"Scroller"
;
15
private
Scroller mScroller;
18
public
CustomView(Context context, AttributeSet attrs) {
19
super
(context, attrs);
20
mScroller =
new
Scroller(context);
25
public
void
smoothScrollTo(
int
fx,
int
fy) {
26
int
dx = fx - mScroller.getFinalX();
27
int
dy = fy - mScroller.getFinalY();
28
smoothScrollBy(dx, dy);
33
public
void
smoothScrollBy(
int
dx,
int
dy) {
37
mScroller.startScroll(mScroller.getFinalX(), mScroller.getFinalY(), dx, dy);
42
public
void
computeScroll() {
45
if
(mScroller.computeScrollOffset()) {
48
scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
53
super
.computeScroll();