android.widget.Scroller是用于模拟scrolling行为,它是scrolling行为的一个帮助类。我们通常通过它的 startScroll(intstartX, intstartY, intdx, int dy, int duration) 函数来设置一个scrolling行为模型,即在 int duration (单位为毫秒)时间的内从int startX, int startY,这个点起向X和Y方向分别滚动int dx和 int dy 个像素。然后我们可以调用 computeScrollOffset() 计算此时scroll到的位置,并调用getCurrX() 和getCurrY() 得到到此时在X和Y方向的位置。
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Scroller( Context context)
Create a Scroller with the default duration and interpolator.
|
|||||||||||
Scroller( Context context, Interpolator interpolator)
Create a Scroller with the specified interpolator.
interpolator参数只是在
computeScrollOffset()函数中用于
对我们的流逝的时间(通过
timePassed()取得
)这值进行重新解析
|
|||||||||||
Scroller( Context context, Interpolator interpolator, boolean flywheel)
Create a Scroller with the specified interpolator.
interpolator只是在
computeScrollOffset()函数中用于
对我们的流逝的时间(通过
timePassed()取得
)这值进行重新解析
|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
void | abortAnimation()
Stops the animation.
停止scroll
|
||||||||||
boolean | computeScrollOffset()
Call this when you want to know the new location.
计算scroll的情况
|
||||||||||
void | extendDuration(int extend)
Extend the scroll animation.
增加scroll的时间
|
||||||||||
void | fling(int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY)
Start scrolling based on a fling gesture.
模拟fling形式的scroll行为。
int startX, int startY代表起点,
intvelocityX, int velocityY代表初速度,intminX, int maxX, intminY, int maxY代表终点的范围
|
||||||||||
final void | forceFinished(boolean finished)
Force the finished field to a particular value.
强制设置为scroll状态
|
||||||||||
float | getCurrVelocity()
Returns the current velocity.
得到当前速度。该值是
X方向和
Y方向的合成值
|
||||||||||
final int | getCurrX()
Returns the current X offset in the scroll.
得到当前的X坐标
|
||||||||||
final int | getCurrY()
Returns the current Y offset in the scroll.
得到当前的Y坐标
|
||||||||||
final int | getDuration()
Returns how long the scroll event will take, in milliseconds.
得到设置的scroll行为的总时间值
|
||||||||||
final int | getFinalX()
Returns where the scroll will end.
得到scroll行为终点的X值
|
||||||||||
final int | getFinalY()
Returns where the scroll will end.
得到scroll行为终点的Y值
|
||||||||||
final int | getStartX()
Returns the start X offset in the scroll.
得到scroll行为起点的X值
|
||||||||||
final int | getStartY()
Returns the start Y offset in the scroll.
得到scroll行为起点的Y值
|
||||||||||
final boolean | isFinished()
Returns whether the scroller has finished scrolling.
返回scroll行为是否结束
|
||||||||||
void | setFinalX(int newX)
Sets the final position (X) for this scroller.
设置scroll行为的终点的X值
|
||||||||||
void | setFinalY(int newY)
Sets the final position (Y) for this scroller.
设置scroll行为的终点的Y值
|
||||||||||
final void | setFriction(float friction)
The amount of friction applied to flings.
|
||||||||||
void | startScroll(int startX, int startY, int dx, int dy)
Start scrolling by providing a starting point and the distance to travel.
设置一个scrolling行为模型,即在
int duration
(单位为毫秒)
时间的内从
int startX, int startY,
这个点起向X和Y方向分别滚动
int dx
和
int dy
个像素
|
||||||||||
void | startScroll(int startX, int startY, int dx, int dy, int duration)
Start scrolling by providing a starting point and the distance to travel.
设置一个scrolling行为模型,即在默认
时间(250毫秒)内从
int startX, int startY,
这个点起向X和Y方向分别滚动
int dx
和
int dy
个像素
|
||||||||||
int | timePassed()
Returns the time elapsed since the beginning of the scrolling.
取得从scroll开始到现在已经失去的时间
|
package my.Scroller; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.Scroller; public class MyScroler extends Activity { /** Called when the activity is first created. */ LinearLayout lay1,lay2,lay; private Scroller mScroller; private boolean s1,s2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mScroller = new Scroller(this); lay1 = new LinearLayout(this){ @Override public void computeScroll() { if(mScroller.computeScrollOffset()) { scrollTo(mScroller.getCurrX(), 0); postInvalidate(); } } }; lay2 = new LinearLayout(this){ @Override public void computeScroll() { if (mScroller.computeScrollOffset()) { // mScrollX = mScroller.getCurrX(); scrollTo(mScroller.getCurrX(), 0); postInvalidate(); } } }; lay1.setBackgroundColor(this.getResources().getColor(android.R.color.darker_gray)); lay2.setBackgroundColor(this.getResources().getColor(android.R.color.white)); lay = new LinearLayout(this); lay.setOrientation(LinearLayout.VERTICAL); LinearLayout.LayoutParams p0 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT); this.setContentView(lay, p0); LinearLayout.LayoutParams p1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT); p1.weight=1; lay.addView(lay1,p1); LinearLayout.LayoutParams p2 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT); p2.weight=1; lay.addView(lay2,p2); Button tx = new Button(this); Button tx2 = new Button(this); tx.setText("Button1"); tx2.setText("Button2"); tx.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { if(!s1){ mScroller.startScroll(0, 0, 5, 10, 10); s1 = true; }else{ mScroller.startScroll(0, 0, -50, -10,10); s1 = false; } } }); tx2.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { if(!s2){ mScroller.startScroll(0, 0, 5, 20,10); s2=true; }else{ mScroller.startScroll(20, 20, -50, -20,10); s2=false; } } }); lay1.addView(tx); lay2.addView(tx2); } }结束!