私はドキュメントリーダーアプリを作成しています。ユーザーが手動スクロールの代わりにドキュメントの自動スクロールをアプリに依頼できるようにしたい。スクロールビューを「オートスクロール」にする方法を教えてください。映画の終わりに一種のクレジット。私は、以下これにTimerTaskをを設定しますが、私の問題は、次のとおりです。Android + ScrollViewまたはTextViewに垂直方向の「自動スクロール」機能を追加する方法
にはどうすればすなわちスクロールバーがTimerTaskをを実行するたびに行くべき新しい位置TimerTaskをに供給するためのインクリメント値を取得します。
この自動スクロール機能を実現する方法はありますか?
私のコードは以下のとおりですが、私は自動スクロールを達成しましたが、スクロールも...(JavaとAndroidの両方に新しいものです...)ありがとう!!!
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、5、5のようにも繰り返しの....ソートの+5、+10 +15 +のようなスクロール値をインクリメントし、不均一ジャンプスタート....私が知ったのは、scrollView.getScrollY()+ 10のような増分値を計算したければ、smoothScrollBy()の代わりにsmoothScrollTo()を使用していたはずです。
scrollView.smoothScrollTo(0, scrollView.getScrollY() + 10);
Ok Kurtis、plsにコードガイドを教えてもらえますか?私はJavaとAndroidのプログラミングにはまったく新しい...約5日...笑。 – Tochie
あなたのリンクを見ただけです。私はそれらを見て、戻ってきます。ありがとう! – Tochie
私がAsynTaskのためにあなたに与えたドキュメンテーションのリンクは、それらを使用する方法に関するものがたくさんあります。あなたはそれを試しましたか? –