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

标签 android touch-event

我正在尝试在您触摸图像时移动它。我意识到当我移动图像时会发生奇怪的事情(有时效果很好,而其他人会移动到不同的地方)。我用 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;
            }

最佳答案

使用典型的 getX() 函数完全绑定(bind)到调度 MotionEvent 并返回相对于该 View 的坐标的特定 View 。在您的情况下,多个 View 似乎正在分派(dispatch)事件并且您获得了多个意外值。

无论如何,使用getRawX()将使您获得一致的绝对坐标,并将解决所有不同坐标的混淆。

关于android - onTouch 在 getX android 中给出奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15453054/

相关文章:

ios - Swift - 如何将触摸事件传递到属于第二个 UIWindow 的多个按钮,但忽略其他所有内容

android - 在后台监听触摸事件

android - 如何在 onTouchEvent() 中检测单点触摸和多点触摸

java - Android 将数据永久存储在 SQLite 上还是临时存储?

java - 保存/发送到 Firebase 数据库后图像不显示

android - 在 fragment 中引用 SupportFragmentManager

android - TWA android 应用程序错误 : android. support.customtabs.CustomTabColorSchemeParams.toBundle()' 无法访问

android - 如何通过Android登录本CAS系统

Android 多点触控得到错误的指针和/或 XY 值