特定のミリ秒あたりの特定のピクセル数を指定して、WebView に読み込まれたページを上から下に自動スクロールしたいと考えています。このスレッドを見たことがあります: +Android Webview - how to autoscroll a page? しかし、他の多くのスレッドでは、これにタイマーを使用するのは悪い考えだと彼らは言っているので、ハンドラーにこのチュートリアルを使用しました: ハンドラーを作成します。今私のコードは次のようになります:
private Handler mHandler=new Handler();
private Runnable mScrollDown = new Runnable()
{
public void run()
{
WebView webview = (WebView)findViewById(R.id.web_url);
webview.scrollBy(0, scrollSpeed);
mHandler.postAtTime(this, 200);
}
};
一度だけ呼び出すと(再度呼び出す最後の行を削除すると)、機能し、ダウンして停止します。ただし、このコードで徐々に下にスクロールしようとすると、ビューが無効化されていないようです (または、無効化されているが再描画されていません)。デバッガーで WebView の mScrollY プロパティが増加していることがわかりますが、ビューは移動しません。
私の推測では、システムはビューへのすべての変更が再描画されるのを待っていると思います。反復ごとにビューを更新する方法、またはこれを行うためのより良い方法はありますか?
注: ページの終わりチェックと停止ボタンは、質問とは無関係であるため、そこには配置しませんでした。