setonclicklistener和setontouchlistener一次在android中

时间:2013-04-09 12:28:39

标签: android

我是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,则只有单击操作工作但不能省略或包含任何操作(实际上我执行点击选择和触摸拖动和放弃操作)。所以任何人都可以建议我如何在不禁用上述任何操作的情况下完成所有操作。任何回复都将非常有帮助。谢谢

2 个答案:

答案 0 :(得分:2)

当您处理触摸事件时,您基本上会覆盖内置手势检测(处理点击/长按/等)。虽然它 可行,但我建议反对它,因为它有可能导致真正模糊的错误。

相反,请将GestureDetectorSimpleGestureDetector一起使用并处理onTapUpConfirmedonScroll

答案 1 :(得分:2)

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

将其设置为true(return true;),它将使用该事件,因此不会触发OnClickListener

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

BTW没有导致任何晦涩的错误!!!!!!!!