5

ScrollView がいつスクロールを終了したかを検出しようとしているので、その位置を少し変更できます。ユーザーがいつ指を離したかを検出するために ACTION_UP を使用する前に、スクロールが完了する前に変更されるため、「フリング」を使用できないことに気付きました。

ScrollView がスクロールを終了したことを検出する方法はありますか? または、ListView のようなスクロール状態を検出しますか?

これを実装する方法に関する他のアイデアはありますか?

ありがとう。

4

2 に答える 2

3

Jourbacのコメントに基づいて解決策を実装しました。

よろしく

import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.ScrollView;

public class MyScrollView extends ScrollView {

    private static final int WHAT = 1;

    class MyHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if(!hasMessages(WHAT)) {
                Log.i("TestScroll", "Last msg!. Position from " 
                                    + msg.arg1 + " to " + msg.arg2);                
            }
        }
    }

    private Handler mHandler = new MyHandler();

    public MyScrollView(Context context) {
        super(context);
    }

    public MyScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyScrollView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        final Message msg = Message.obtain();
        msg.arg1 = oldt;
        msg.arg2 = t;
        msg.what = WHAT;
        mHandler.sendMessageDelayed(msg, 500);
    }

}
于 2010-11-02T12:18:52.987 に答える
1

ScrollView の子クラス、たとえば MyScrollView を作成し、ScrollView の代わりにそれを使用することで、これに取り組みます。

そうすれば、スクロール時に呼び出される ScrollView のメソッドをオーバーライドできます。それらに何らかの形式のコールバックを追加します( で対応するメソッドを呼び出すことを忘れないでくださいsuper

ScrollView のどのメソッドがいつ呼び出されるかはわかりません。スコールが発生するたびにそのうちの1つが呼び出されると思いますが、どれがscrollTo().

それらをすべてオーバーライドして、呼び出されたときにログに記録することは、非常に興味深い学習体験になると思います。私は自分でそれをやりたいと思うかもしれません.もしそうするなら、他の人がその間に誰もしないと仮定して、私はより有用な答えを返すでしょう.

于 2010-06-22T19:03:08.223 に答える