onTouch在getX android中给出了奇怪的结果

时间:2013-03-16 18:32:23

标签: android ontouchevent

我试图在触摸图像时移动图像。我意识到,当我移动图像时会产生奇怪的事情(有时它做得很好而其他人移动到不同的地方)。我使用getX值创建了一个Log.d,这就是我得到的:

 03-16 19:26:23.569: D/eventX:(15450): 23.0
 03-16 19:26:23.599: D/eventX:(15450): 91.0
 03-16 19:26:23.629: D/eventX:(15450): 20.0
 03-16 19:26:23.659: D/eventX:(15450): 89.0
 03-16 19:26:23.689: D/eventX:(15450): 17.0
 03-16 19:26:23.719: D/eventX:(15450): 87.0
 03-16 19:26:23.749: D/eventX:(15450): 14.0
 03-16 19:26:23.779: D/eventX:(15450): 85.0
 03-16 19:26:23.809: D/eventX:(15450): 11.0
 03-16 19:26:23.839: D/eventX:(15450): 83.0
 03-16 19:26:23.879: D/eventX:(15450): 8.0

正如你所看到的,一个是好的价值(我触摸它的位置的价值)和其他没有意义的。有人知道原因吗?

以下是我正在使用的代码的和平......

  head.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View arg0, MotionEvent ev) {
            // TODO Auto-generated method stub
            switch (ev.getAction()) {


            case MotionEvent.ACTION_MOVE: {
                RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(head.getLayoutParams().width, head.getLayoutParams().height);
                Log.d("eventX:", ((Float)ev.getX()).toString());
                layoutParams.leftMargin = (int) ev.getX();
                head.setLayoutParams(layoutParams);
                count = false;

                break;
            }

1 个答案:

答案 0 :(得分:2)

使用典型的getX()函数与调度MotionEvent并返回相对于该视图的坐标的特定视图完全相关。在您的情况下,似乎多个视图正在调度事件,并且您将获得多个意外值。

在任何情况下,使用getRawX()将允许您获得一致的绝对坐标,并将解决所有不同坐标的混淆。