public class Scroller
extends Object
java.lang.Object | |
↳ | android.widget.Scroller |
这个类封装了滚动。 您可以使用滚动条( Scroller
或OverScroller
)来收集产生滚动动画所需的数据,例如,响应一个手指动作。 随着时间的推移,滚动器会为您追踪滚动偏移量,但它们不会自动将这些位置应用于您的视图。 您有责任按照使滚动动画看起来平滑的速率获取和应用新的坐标。
这是一个简单的例子:
private Scroller mScroller = new Scroller(context); ... public void zoomIn() { // Revert any animation currently in progress mScroller.forceFinished(true); // Start scrolling by providing a starting point and // the distance to travel mScroller.startScroll(0, 0, 100, 0); // Invalidate to request a redraw invalidate(); }
要跟踪x / y坐标的变化位置,请使用computeScrollOffset()
。 该方法返回一个布尔值来指示滚动器是否完成。 如果不是这样,这意味着一次泛滥或程序化的平移操作仍在进行中。 您可以使用此方法查找x和y坐标的当前偏移量,例如:
if (mScroller.computeScrollOffset()) { // Get current x and y positions int currX = mScroller.getCurrX(); int currY = mScroller.getCurrY(); ... }
Public constructors |
|
---|---|
Scroller(Context context) 使用默认持续时间和插值器创建一个滚动器。 |
|
Scroller(Context context, Interpolator interpolator) 用指定的插补器创建一个滚动条。 |
|
Scroller(Context context, Interpolator interpolator, boolean flywheel) 用指定的插补器创建一个滚动条。 |
Public methods |
|
---|---|
void |
abortAnimation() 停止动画。 |
boolean |
computeScrollOffset() 当你想知道新的位置时调用它。 |
void |
extendDuration(int extend) 扩展滚动动画。 |
void |
fling(int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY) 基于一个扔手势开始滚动。 |
final void |
forceFinished(boolean finished) 强制完成的字段为特定值。 |
float |
getCurrVelocity() 返回当前速度。 |
final int |
getCurrX() 返回滚动中的当前X偏移量。 |
final int |
getCurrY() 返回滚动中的当前Y偏移量。 |
final int |
getDuration() 返回滚动事件需要多长时间,以毫秒为单位。 |
final int |
getFinalX() 返回滚动结束的位置。 |
final int |
getFinalY() 返回滚动结束的位置。 |
final int |
getStartX() 返回滚动中的起始X偏移量。 |
final int |
getStartY() 返回滚动中的起始Y偏移量。 |
final boolean |
isFinished() 返回滚动器是否完成滚动。 |
void |
setFinalX(int newX) 设置此滚动器的最终位置(X)。 |
void |
setFinalY(int newY) 设置此滚动器的最终位置(Y)。 |
final void |
setFriction(float friction) 施加在fl上的摩擦量。 |
void |
startScroll(int startX, int startY, int dx, int dy, int duration) 通过提供起点,行程距离和滚动持续时间开始滚动。 |
void |
startScroll(int startX, int startY, int dx, int dy) 通过提供起始点和距离来开始滚动。 |
int |
timePassed() 返回滚动开始后的时间。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
Scroller (Context context)
使用默认持续时间和插值器创建一个滚动器。
Parameters | |
---|---|
context |
Context
|
Scroller (Context context, Interpolator interpolator)
用指定的插补器创建一个滚动条。 如果插值器为空,则将使用默认(粘性)插值器。 “飞轮”行为将针对面向Honeycomb或更新版本的应用生效。
Parameters | |
---|---|
context |
Context
|
interpolator |
Interpolator
|
Scroller (Context context, Interpolator interpolator, boolean flywheel)
用指定的插补器创建一个滚动条。 如果插值器为空,则将使用默认(粘性)插值器。 指定是否在投掷中支持渐进式“飞轮”行为。
Parameters | |
---|---|
context |
Context
|
interpolator |
Interpolator
|
flywheel |
boolean
|
void abortAnimation ()
停止动画。 与forceFinished(boolean)
相反,放弃动画会导致滚动条移动到最终的x和y位置
也可以看看:
boolean computeScrollOffset ()
当你想知道新的位置时调用它。 如果它返回true,那么动画还没有完成。
Returns | |
---|---|
boolean |
void extendDuration (int extend)
扩展滚动动画。 这允许正在运行的动画在与setFinalX(int)
或setFinalY(int)
一起使用时进一步滚动更长。
Parameters | |
---|---|
extend |
int : Additional time to scroll in milliseconds. |
也可以看看:
void fling (int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY)
基于一个扔手势开始滚动。 行进的距离将取决于投掷的初始速度。
Parameters | |
---|---|
startX |
int : Starting point of the scroll (X) |
startY |
int : Starting point of the scroll (Y) |
velocityX |
int : Initial velocity of the fling (X) measured in pixels per second. |
velocityY |
int : Initial velocity of the fling (Y) measured in pixels per second |
minX |
int : Minimum X value. The scroller will not scroll past this point. |
maxX |
int : Maximum X value. The scroller will not scroll past this point. |
minY |
int : Minimum Y value. The scroller will not scroll past this point. |
maxY |
int : Maximum Y value. The scroller will not scroll past this point. |
void forceFinished (boolean finished)
强制完成的字段为特定值。
Parameters | |
---|---|
finished |
boolean : The new finished value. |
float getCurrVelocity ()
返回当前速度。
Returns | |
---|---|
float |
The original velocity less the deceleration. Result may be negative. |
int getCurrX ()
返回滚动中的当前X偏移量。
Returns | |
---|---|
int |
The new X offset as an absolute distance from the origin. |
int getCurrY ()
返回滚动中的当前Y偏移量。
Returns | |
---|---|
int |
The new Y offset as an absolute distance from the origin. |
int getDuration ()
返回滚动事件需要多长时间,以毫秒为单位。
Returns | |
---|---|
int |
The duration of the scroll in milliseconds. |
int getFinalX ()
返回滚动结束的位置。 仅适用于“一瞥”卷轴。
Returns | |
---|---|
int |
The final X offset as an absolute distance from the origin. |
int getFinalY ()
返回滚动结束的位置。 仅适用于“一瞥”卷轴。
Returns | |
---|---|
int |
The final Y offset as an absolute distance from the origin. |
int getStartX ()
返回滚动中的起始X偏移量。
Returns | |
---|---|
int |
The start X offset as an absolute distance from the origin. |
int getStartY ()
返回滚动中的起始Y偏移量。
Returns | |
---|---|
int |
The start Y offset as an absolute distance from the origin. |
boolean isFinished ()
返回滚动器是否完成滚动。
Returns | |
---|---|
boolean |
True if the scroller has finished scrolling, false otherwise. |
void setFinalX (int newX)
设置此滚动器的最终位置(X)。
Parameters | |
---|---|
newX |
int : The new X offset as an absolute distance from the origin. |
void setFinalY (int newY)
设置此滚动器的最终位置(Y)。
Parameters | |
---|---|
newY |
int : The new Y offset as an absolute distance from the origin. |
void setFriction (float friction)
施加在fl上的摩擦量。 默认值是getScrollFriction()
。
Parameters | |
---|---|
friction |
float : A scalar dimension-less value representing the coefficient of friction. |
void startScroll (int startX, int startY, int dx, int dy, int duration)
通过提供起点,行程距离和滚动持续时间开始滚动。
Parameters | |
---|---|
startX |
int : Starting horizontal scroll offset in pixels. Positive numbers will scroll the content to the left. |
startY |
int : Starting vertical scroll offset in pixels. Positive numbers will scroll the content up. |
dx |
int : Horizontal distance to travel. Positive numbers will scroll the content to the left. |
dy |
int : Vertical distance to travel. Positive numbers will scroll the content up. |
duration |
int : Duration of the scroll in milliseconds. |
void startScroll (int startX, int startY, int dx, int dy)
通过提供起始点和距离来开始滚动。 滚动将在持续时间内使用默认值250毫秒。
Parameters | |
---|---|
startX |
int : Starting horizontal scroll offset in pixels. Positive numbers will scroll the content to the left. |
startY |
int : Starting vertical scroll offset in pixels. Positive numbers will scroll the content up. |
dx |
int : Horizontal distance to travel. Positive numbers will scroll the content to the left. |
dy |
int : Vertical distance to travel. Positive numbers will scroll the content up. |
int timePassed ()
返回滚动开始后的时间。
Returns | |
---|---|
int |
The elapsed time in milliseconds. |