我正在製作文檔閱讀器應用程序,我希望用戶能夠讓應用程序自動滾動文檔而不是手動滾動。請任何人都可以給我一些關於如何垂直製作ScrollView「Auto-Scroll」的想法嗎?電影結尾處的類似點數。我成立了一個TimerTask這個下面,但我的問題是:Android +如何將垂直「自動滾動」功能添加到ScrollView或TextView
如何獲得增量值送入的TimerTask即新位置的滾動條應該去每個TimerTask的運行時間。
有沒有更好的方法來實現這種自動滾動功能?
我的代碼如下,我實現了自動滾動,但滾動甚至沒有...(對Java和Android..smile全新)...謝謝!!!
Timer scrollTimer = new Timer();
Handler handler = new Handler();
ScrollView scrollView = (ScrollView) findViewById(R.id.hse);
int scrollSpeed = 5; // this is set by the user in preferences
TimerTask scrollerSchedule = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
//Here I want to increment the scrollbar's vertical position by 10
//scrollView.smoothScrollBy(0, scrollView.getScrollY() + 10);
new moveScrollView().execute();
}
});
}
};
scrollTimer.schedule(scrollerSchedule, 0, scrollSpeed * 100);
}
private class moveScrollView extends AsyncTask<Void, Void, Void> {
protected void onProgressUpdate(Void... progress) {
// show the user some sort of progress indicator
// like how many minutes before scroll is completed
}
protected Void doInBackground(Void... params) {
// TODO
int scrollPos = (int) (scrollView.getScrollY() + 10.0);
scrollView.smoothScrollTo(0, scrollPos);
return null;
}
}
變化:像@Kurtis建議,我加入了的AsyncTask來進行滾動,然後使用一個TimerTask +處理器做重複。現在,當運行在AsynTask滾動碼
int scrollPos = (int) (scrollView.getScrollY() + 10.0);
scrollView.smoothScrollTo(0, scrollPos);
,我得到一個錯誤,但是當我直視着我的Runnable運行代碼它按預期工作。我仍然關心效率,真的想要使用AsynTask。任何提示修復我的AsyncTask代碼?
順便說一句:這是我的觀察(對於像我這樣的新手)。以前我用
scrollView.smoothScrollBy(0, scrollView.getScrollY() + 10);
和滾動開始跳躍不均勻,有點遞增滾動值+5一樣,+10 +15 + ...,而不是一個甚至重複像+5,+ 5,+ 5 ....我發現如果我想計算像scrollView.getScrollY()+ 10這樣的增量值,那麼我應該使用smoothScrollTo()而不是smoothScrollBy()。
scrollView.smoothScrollTo(0, scrollView.getScrollY() + 10);
Ok Kurtis,請問你能給我一些代碼指導嗎?我對Java和Android編程完全陌生......大約5天前......大聲笑。 – Tochie
好的,只是看到你的鏈接。我會查找他們並回來。謝謝! – Tochie
我給你AsynTask的文檔鏈接有一堆關於如何使用它們的東西。你試過了嗎? –