Android Listview滚动行为滚动快速移动/移动否则不滚动

时间:2013-01-22 11:39:40

标签: android android-listview android-view android-scrollview android-gesture

我想创建一个自定义ListView,它将具有以下行为, 1.当我在List It上滚动手指时,它不应该自动滚动。 2.当用户手指向下并慢慢移动手指时,ListView应将触摸事件传递给Child,子视图将显示ListView图标名称。 3.当用户以某个阈值速度或足够快的速度移动手指时,列表将滚动并向用户显示列表中的下一个项目。

为实现这一点,我尝试从ListView覆盖dispatchTouchEvent方法,如下所示,

    @Override 
public boolean dispatchTouchEvent(MotionEvent ev) 
{ 
    if(ev.getAction() == MotionEvent.ACTION_MOVE)
    {
        int height = getHeight();
        if((height - ev.getY())<100)//when finger is moving downwards
        {
            smoothScrollBy(50, 100);
        }
        if(ev.getY()<100)// when finger moves upwards.
        {

                smoothScrollBy(-50,100);
        }
        return true;
    }
     return super.dispatchTouchEvent(ev);
  }

在上面的实现中,我可以将手指移动到某个点,并在100毫秒内将滚动列表50像素。在这里,我无法获得ListView Flings和速度。所以我试着在它的OnTouchEvent()方法中向ListView添加一个GestureListner。但是在我之后只有第一次OnFling,我没有得到任何触摸动作。 有人可以指导我使用这种行为制作这样的ListView或任何其他滚动视图。 感谢。

0 个答案:

没有答案