2

我是 android 新手,并且要求 setonclicklistener 和 setonTouchlistener 同时工作。我在适配器端执行一些操作,我有 imageview.some 代码来理解

适配器类:

public class Taukygridview extends BaseAdapter{

holder.imageview.setOnClickListener(new OnClickListener() {

//some click operation here
});

holder.imageview.setonTouchListener(new MyTouchListener());

holder.imageview.setonTouchListener(new MyDragListener());

}

这是 MyTouchListener 类的描述:

public class MyTouchListener implements OnTouchListener
{
    private Context mcontext;
    public static int view_position=0;
    public static View first_image_view;

@Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
//some touch operation here
}
}

这是关于拖动操作的一些描述..

public class MyDragListener implements OnDragListener
{
@Override
    public boolean onDrag(View v, DragEvent event) {
// TODO Auto-generated method stub
   switch(v.getId):
{
  //some drag operation here

}
}

因此,在运行应用程序时,只有触摸操作起作用,如果触摸操作返回 false,则只有单击操作起作用,但不能省略或包含任何操作(实际上我执行单击以进行选择并触摸以进行拖放操作) .所以任何人都可以建议我如何在不禁用上述任何操作的情况下完成所有操作。任何回复都会非常有帮助。谢谢

4

2 回答 2

3

如您所见,public boolean onTouch(View v, MotionEvent event)返回一个布尔值

将其设置为 true ( return true;),它将消耗事件,因此OnClickListener不会触发。

将其设置为 false ( return false;) 并释放屏幕将触发OnClickListener

顺便说一句,不会导致任何晦涩难懂的错误!!!!!!!!!!

于 2013-06-17T05:53:23.210 回答
2

当您处理触摸事件时,您实际上是在覆盖内置的手势检测(处理单击/长按/等)。虽然它可行的,但我建议不要这样做,因为它有可能导致非常模糊的错误。

相反,将GestureDetectorSimpleGestureDetector一起使用并处理onTapUpConfirmedand onScroll

于 2013-04-09T12:49:22.407 回答