Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在移动操作时切换坐标_Java_Android_Android Layout_Android Widget - Fatal编程技术网

Java 在移动操作时切换坐标

Java 在移动操作时切换坐标,java,android,android-layout,android-widget,Java,Android,Android Layout,Android Widget,我已经编写了一个代码,可以在拖动按钮时移动它。我正在根据当前鼠标坐标更新按钮X和Y坐标,但是当我拖动按钮时,鼠标坐标值在低值和高值之间切换,即使我拖动得非常慢 记录坐标时,值显示为: (70, 24) - (15, 36) - (86, 51) - (20, 48) - (90, 54) - (32, 60) - (102, 66) ... 如您所见,它们在高值和低值之间切换,即使我在一个方向上非常缓慢地拖动。谁能告诉我为什么 这是我的密码: public class MyFrames ext

我已经编写了一个代码,可以在拖动按钮时移动它。我正在根据当前鼠标坐标更新按钮X和Y坐标,但是当我拖动按钮时,鼠标坐标值在低值和高值之间切换,即使我拖动得非常慢

记录坐标时,值显示为:

(70, 24) - (15, 36) - (86, 51) - (20, 48) - (90, 54) - (32, 60) - (102, 66) ...
如您所见,它们在高值和低值之间切换,即使我在一个方向上非常缓慢地拖动。谁能告诉我为什么

这是我的密码:

public class MyFrames extends Activity implements View.OnTouchListener {
public Button moveable;
// public TextView log;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //changer = (Button) findViewById(R.id.btn_changer);
    moveable = (Button) findViewById(R.id.btn_moveable);

    moveable.setOnTouchListener(this);
}

@Override
public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub
    switch(event.getAction() & MotionEvent.ACTION_MASK) {
    case MotionEvent.ACTION_MOVE:
        int x = (int)event.getX();
        int y = (int)event.getY();
        int w = moveable.getMeasuredWidth();
        int h = moveable.getMeasuredHeight();
        moveable.layout( x, y, x + w, y + h);
        Log.v("Moveable", "X = " + x + " Y = " + y + "\n");
        return true;
    }
    return false;
}

}

我没有用你的代码测试它,但我在过去也遇到过类似的事情

getX()和getY()函数返回与按钮相关的值。由于要更改按钮在onTouchListener中的位置,因此还需要更改getX()和getY()所基于的坐标系


尝试改用getRawX()和getRawY()。这些函数独立于按钮的位置,不应该给你交替的值。

我没有用你的代码测试过它,但我过去也遇到过类似的情况

getX()和getY()函数返回与按钮相关的值。由于要更改按钮在onTouchListener中的位置,因此还需要更改getX()和getY()所基于的坐标系


尝试改用getRawX()和getRawY()。这些功能独立于按钮的位置,不应提供交替值。

我很高兴能提供帮助!赚了赏金够有用吗?当然,伙计,我都快疯了。我很久以前就提出了这个问题,但是没有人能给我指出正确的方向。非常感谢你的帮助。我想你误解我了。你接受了我的回答,但你没有赏金。您必须在赏金到期之前手动授予赏金(这与接受回答是分开的)。然后我将获得+50声誉,你将获得恩人徽章。人人都赢!我很高兴能帮上忙!赚了赏金够有用吗?当然,伙计,我都快疯了。我很久以前就提出了这个问题,但是没有人能给我指出正确的方向。非常感谢你的帮助。我想你误解我了。你接受了我的回答,但你没有赏金。您必须在赏金到期之前手动授予赏金(这与接受回答是分开的)。然后我将获得+50声誉,你将获得恩人徽章。人人都赢!