Android 扔在ListView上-什么方向?

Android 扔在ListView上-什么方向?,android,listview,direction,onfling,Android,Listview,Direction,Onfling,有没有一种方法可以在连接到ListView的ScrollListener中获取投掷方向(向上或向下)?我得到了OnScrollListener.SCROLL\u STATE\u FLING,没有问题,但我无法得到方向。我是否必须编写一个完整的GestureListener和onTouch listener并将其附加到我的ListView中,或者有更简单的方法?我只需要掷骰子的方向就行了。谢谢你的回答 我是否必须编写一个完整的GestureListener和onTouch listener并将其附

有没有一种方法可以在连接到ListView的ScrollListener中获取投掷方向(向上或向下)?我得到了OnScrollListener.SCROLL\u STATE\u FLING,没有问题,但我无法得到方向。我是否必须编写一个完整的GestureListener和onTouch listener并将其附加到我的ListView中,或者有更简单的方法?我只需要掷骰子的方向就行了。谢谢你的回答

我是否必须编写一个完整的GestureListener和onTouch listener并将其附加到我的ListView中,或者有更简单的方法

您可以简单地使用如下所示的OnTouchListener:

listView.setOnTouchListener(new OnTouchListener() {
    int before = -1;
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch(event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            before = ((ListView) v).getFirstVisiblePosition();
            break;
        case MotionEvent.ACTION_UP:
            int now = ((ListView) v).getFirstVisiblePosition();
            if(now < before)
                Log.v("onTouch", "Scroll Up");
            else if(now > before)
                Log.v("onTouch", "Scroll Down");

        }
        return false;
    }
});
listView.setOnTouchListener(新的OnTouchListener(){
前整数=-1;
@凌驾
公共布尔onTouch(视图v,运动事件){
开关(event.getAction()){
case MotionEvent.ACTION\u DOWN:
before=((ListView)v.getFirstVisiblePosition();
打破
case MotionEvent.ACTION\u UP:
int now=((ListView)v.getFirstVisiblePosition();
如果(现在<以前)
Log.v(“onTouch”、“向上滚动”);
else if(现在>之前)
Log.v(“onTouch”、“向下滚动”);
}
返回false;
}
});
如果您只想在投掷发生时收到通知:请在OnScrollListener的
onScroll()
方法中保存当前滚动状态,并检查是否为投掷动作

我是否必须编写一个完整的GestureListener和onTouch listener并将其附加到我的ListView中,或者有更简单的方法

您可以简单地使用如下所示的OnTouchListener:

listView.setOnTouchListener(new OnTouchListener() {
    int before = -1;
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch(event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            before = ((ListView) v).getFirstVisiblePosition();
            break;
        case MotionEvent.ACTION_UP:
            int now = ((ListView) v).getFirstVisiblePosition();
            if(now < before)
                Log.v("onTouch", "Scroll Up");
            else if(now > before)
                Log.v("onTouch", "Scroll Down");

        }
        return false;
    }
});
listView.setOnTouchListener(新的OnTouchListener(){
前整数=-1;
@凌驾
公共布尔onTouch(视图v,运动事件){
开关(event.getAction()){
case MotionEvent.ACTION\u DOWN:
before=((ListView)v.getFirstVisiblePosition();
打破
case MotionEvent.ACTION\u UP:
int now=((ListView)v.getFirstVisiblePosition();
如果(现在<以前)
Log.v(“onTouch”、“向上滚动”);
else if(现在>之前)
Log.v(“onTouch”、“向下滚动”);
}
返回false;
}
});
如果您只希望在发生fling时收到通知:请在OnScrollListener的
onScroll()
方法中保存当前滚动状态,并检查是否为fling动作。

尝试堆栈溢出尝试堆栈溢出