我在使用Scroller以編程方式滾動ScrollView時遇到問題,因此到目前爲止沒有涉及觸摸手勢。只要傳感器的數據在一定範圍內,我想以特定的速度向下滾動ScrollView。所以基本上我想在數據第一次進入有效範圍時開始滾動,然後不打擾滾動過程,直到數據再次超出範圍。我不想將onSensorChanged直接連接到scrollBy(),因爲它可能無法在其他設備上正常工作。這裏就是我這麼遠:如何使用滾動條自動滾動滾動視圖?
在我的onCreate:
tx = new TextView(ShowLyrics.this);
mainscrollarea = (ScrollView) findViewById (R.id.mainscrollarea);
scroller = new Scroller(getApplicationContext(), new LinearInterpolator());
tx.setScroller(scroller);
在我onSensorChanged:
if(integratedAngle - scrollTolerance > pointzero){ //this is checking for the data range and works so far
if(!scrollingDown){
scrollText("down");
}
}
和滾動文字功能:
void scrollText(String direction){
if(direction.matches("down")){
scrollingUp = false;
scrollingDown = true;
scroller.forceFinished(true);
int currY = mainscrollarea.getScrollY();
int endY = tx.getHeight();
int distance = endY - currY;
scroller.startScroll(0, currY, 0, -distance, 5000);
}
if(direction.matches("up")){
//nothing yet
}
}
所以現在我已經硬編碼了5秒鐘,但沒有任何反應。 onSensorChanged中Scroller的getCurrY的Log.d()僅吐出0。如果有人能指引我正確的方向,我會感激。
謝謝,我將閱讀有關runnables並現在嘗試它。 – julesmules
如果我正確理解了這一點,那麼您會反覆調用scrollTo,它具有固定的滾動速度。我想實現自動滾動速度的用戶選擇,所以我需要改變這一點,這就是爲什麼我想使用startScroll函數讓我指定滾動的持續時間。另外我看不到你說的Scroller包含在你的課堂中。 – julesmules
哦,呃,我只是用滾輪來反應sorry sorry ......抱歉,我一定記得錯了。變量'mDragScrollSpeed'的值爲10,這很慢,但當然,您可以根據您提到的用戶輸入更改值。我會稍微更新我的答案... – WarrenFaith