android - 触摸监听器和长按监听器

标签 android object position ontouchlistener onlongclicklistener

我在表面 View 上编写了一个带有触摸监听器的代码来移动对象并且它工作得很好,当我插入长按监听器时触摸监听器停止工作并且对象移动即使我没有触摸它。长按需要打开对话框。

创建时:

sf = new SurfaceView(this);
sf.setOnTouchListener(this);
sf.setOnLongClickListener(this);

长按:

public boolean onLongClick(View v) {
    if (!changePositionMode){
        final Dialog dialog = new Dialog(this);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.text_manager);
        dialog.setTitle("Browser");
        dialog.setCancelable(true);
        dialog.show();
    }
    return false;
}

触摸监听器

public boolean onTouch(View v, MotionEvent event) {
    Point p=new Point((int)event.getX(),(int)event.getY());
    if (event.getAction()==MotionEvent.ACTION_DOWN){
        }else if (object.isTouch(p)){
            changePositionMode=true;
            x=event.getX();
            y=event.getY();
            draw();
            return true;
        }   
    }
    else if (event.getAction()==MotionEvent.ACTION_MOVE){
        t.changeTamplatePosition(event.getX()-x,event.getY()-y);
        x=event.getX();
        y=event.getY();
        draw();
        return true;
    }
    else if (event.getAction()==MotionEvent.ACTION_UP){
        changePositionMode=false;
    }

    return false;
}

最佳答案

您必须在 OnTouch(View v,MotionEvent event) 函数中返回 false 而不是 true 以便其他监听器 (OnLongClickListener)控件保持 Activity 状态。

关于android - 触摸监听器和长按监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22798327/

相关文章:

android - 如何使用 Robolectric 获取当前 Activity ?

android - Titanium 中从左到右的滑动效果

delphi - 如何根据屏幕上的 X、Y 坐标返回颜色?

java - 如何比较两个对象数组元素?

html - 相对定位出错按照绝对

android - 如何从 onChildClick() 获取组位置?

java - Android:SqliteOpenHelper中的SqliteCursorFactory有什么用

Android 在哪里保存服务器 TLS X509Certificate

java - 使用抽象类的类名在 Java 中创建一个新对象?

c++ - 在 C++ 中通过引用传递对象