Java 安卓益智游戏中点击图片拖动

Java 安卓益智游戏中点击图片拖动,java,android,onclick,drag-and-drop,Java,Android,Onclick,Drag And Drop,我已经尝试了StackOverflow中建议的所有可能的方法 但我无法从单击更改为拖动 OnTouch事件用于单击。。我的图片在这里被点击。我无法拖放图像。我需要拖动图像而不是单击 我将非常感谢你。如果你在这方面帮助我 我也尝试过这个场景的 但我没有得到任何结果。所以请任何人都能帮助我 有人能帮我吗?? public class TouchListener implements View.OnTouchListener { private float xDelta; privat

我已经尝试了StackOverflow中建议的所有可能的方法 但我无法从单击更改为拖动

OnTouch事件用于单击。。我的图片在这里被点击。我无法拖放图像。我需要拖动图像而不是单击

我将非常感谢你。如果你在这方面帮助我

我也尝试过这个场景的 但我没有得到任何结果。所以请任何人都能帮助我

有人能帮我吗??

public class TouchListener implements View.OnTouchListener {
    private float xDelta;
    private float yDelta;
    private PuzzleActivity activity;

    public TouchListener(PuzzleActivity activity) {
        this.activity = activity;
    }

    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        float x = motionEvent.getRawX();
        float y = motionEvent.getRawY();
        final double tolerance = sqrt(pow(view.getWidth(), 2) + pow(view.getHeight(), 2)) / 10;

        PuzzlePiece piece = (PuzzlePiece) view;
        if (!piece.canMove) {
            return true;
        }

        RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
        switch (motionEvent.getAction() & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_DOWN:
                xDelta = x - lParams.leftMargin;
                yDelta = y - lParams.topMargin;
                piece.bringToFront();
                break;
            case MotionEvent.ACTION_MOVE:
                lParams.leftMargin = (int) (x - xDelta);
                lParams.topMargin = (int) (y - yDelta);
                view.setLayoutParams(lParams);
                break;
            case MotionEvent.ACTION_UP:
                int xDiff = abs(piece.xCoord - lParams.leftMargin);
                int yDiff = abs(piece.yCoord - lParams.topMargin);
                if (xDiff <= tolerance && yDiff <= tolerance) {
                    lParams.leftMargin = piece.xCoord;
                    lParams.topMargin = piece.yCoord;
                    piece.setLayoutParams(lParams);
                    piece.canMove = false;
                    sendViewToBack(piece);
                    activity.checkGameOver();
                }
                break;
        }

        return true;
    }

    public void sendViewToBack(final View child) {
        final ViewGroup parent = (ViewGroup)child.getParent();
        if (null != parent) {
            parent.removeView(child);
            parent.addView(child, 0);
        }
    }
}
公共类TouchListener实现View.OnTouchListener{
私人浮动xDelta;
私人浮标;
私人活动;
公共TouchListener(拼图活动){
这个。活动=活动;
}
@凌驾
公共布尔onTouch(视图、运动事件、运动事件){
float x=motionEvent.getRawX();
float y=motionEvent.getRawY();
最终双公差=sqrt(pow(view.getWidth(),2)+pow(view.getHeight(),2))/10;
拼图块=(拼图块)视图;
如果(!件.可移动){
返回true;
}
RelativeLayout.LayoutParams lParams=(RelativeLayout.LayoutParams)视图。getLayoutParams();
开关(motionEvent.getAction()&motionEvent.ACTION\u掩码){
case MotionEvent.ACTION\u DOWN:
xDelta=x-lParams.leftMargin;
yDelta=y-lParams.topMargin;
片。布林托夫隆();
打破
case MotionEvent.ACTION\u移动:
lParams.leftMargin=(int)(x-xDelta);
lParams.topMargin=(int)(y-yDelta);
view.setLayoutParams(LPARAM);
打破
case MotionEvent.ACTION\u UP:
int xDiff=abs(piece.xCoord-lParams.leftMargin);
int yDiff=abs(件号yCoord-lParams.topMargin);

如果(XD)如果您可以检查其他事项,如处理拖放而不是此情况,我可以使用拖放而不是单击吗?使用上述代码?