編輯:關於android開發
翻譯自:http://developer.android.com/reference/android/widget/Scroller.html
android.widget.Scroller是用於模擬scrolling行為,它是scrolling行為的一個幫助類。我們通常通過它的 (int startX, int startY, int dx, int dy, int duration) 函數來設置一個scrolling行為模型,即在 int duration (單位為毫秒)時間的內從int startX, int startY,這個點起向X和Y方向分別滾動 int dx和 int dy 個像素。然後我們可以調用 () 計算此時scroll到的位置,並調用 () 和 () 得到到此時在X和Y方向的位置。
另外我們通常通過它的 (int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY) 函數來設置一個fling行為(特殊的scroll)模型,即在在nt startX, int startY,這個點起向X和Y方向分別以 int velocityX 和 int velocityY 個像素的速度進行滾動。然後我們可以調用 () 計算此時scroll到的位置,並調用 () 和 () 得到到此時在X和Y方向的位置。
公共構造函數
Create a Scroller with the default duration and interpolator.
Create a Scroller with the specified interpolator.
interpolator參數只是在computeScrollOffset()函數中用於對我們的流逝的時間(通過timePassed()取得)這值進行重新解析
Create a Scroller with the specified interpolator.
interpolator只是在computeScrollOffset()函數中用於對我們的流逝的時間(通過timePassed()取得)這值進行重新解析
公共函數
Stops the animation.
停止scroll
Call this when you want to know the new location.
計算scroll的情況
Extend the scroll animation.
增加scroll的時間
Start scrolling based on a fling gesture.
模擬fling形式的scroll行為。
int startX, int startY代表起點,int velocityX, int velocityY代表初速度,int minX, int maxX, int minY, int maxY代表終點的范圍
Force the finished field to a particular value.
強制設置為scroll狀態
Returns the current velocity.
得到當前速度。該值是X方向和Y方向的合成值
Returns the current X offset in the scroll.
得到當前的X坐標
Returns the current Y offset in the scroll.
得到當前的Y坐標
Returns how long the scroll event will take, in milliseconds.
得到設置的scroll行為的總時間值
Returns where the scroll will end.
得到scroll行為終點的X值
Returns where the scroll will end.
得到scroll行為終點的Y值
Returns the start X offset in the scroll.
得到scroll行為起點的X值
Returns the start Y offset in the scroll.
得到scroll行為起點的Y值
Returns whether the scroller has finished scrolling.
返回scroll行為是否結束
Sets the final position (X) for this scroller.
設置scroll行為的終點的X值
Sets the final position (Y) for this scroller.
設置scroll行為的終點的Y值
The amount of friction applied to flings.
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 個像素
Start scrolling by providing a starting point and the distance to travel.
設置一個scrolling行為模型,即在默認時間(250毫秒)內從int startX, int startY,這個點起向X和Y方向分別滾動 int dx和 int dy 個像素
Returns the time elapsed since the beginning of the scrolling.
取得從scroll開始到現在已經失去的時間
示例代碼
示例程序來自:http://mengsina.iteye.com/blog/1123339
創建工程MyScroler,或者將下類名“MyScroler”改為自己創建的工程,將下面代碼直接覆蓋生成的.java文件運行即可:
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);
}
}
結束!
AsyncTask基礎(筆記) 安卓異步任務 ---AsyncTask 為什麼要異步任務: 1.Android單線程模型 2.耗時操作放在非主線程中執行 Asyn
Android 網絡圖片查看器,今天來實現一下android下的一款簡單的網絡圖片查看器 界面如下: 代碼如下: <LinearLayout xmlns:and
Android應用開發Scroller詳解及源碼淺析 1 背景 大家都知道Android View提供了scrollTo()與scrollBy()方法來供我們進行Vie
本節所要講的主要內容包括Android桌面小部件、App Widget的開發入