美文网首页
getX 和getRawX

getX 和getRawX

作者: pdog18 | 来源:发表于2017-06-01 17:38 被阅读74次

虽然知道getX是返回相对控件的坐标,getRawX返回的相对屏幕的坐标,但是脑子一下子转不过来,
认为在移动控件的时候,使用getX 相减获得偏移量和getRawX的应该是一样的。
实际跑一下发现会有鬼畜效果,后来想了一下getX在获得坐标的时候 控件移动了,就会导致获得的坐标偏移量“不准确”。

简直太白痴了。。


    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                lastX = event.getX();
                lastY = event.getY();
                lastRawX = event.getRawX();
                lastRawY = event.getRawY();
                break;
            case MotionEvent.ACTION_MOVE:
                float disX = event.getX() - lastX;
                float disY = event.getY() - lastY;


                float disRawX = event.getRawX() - lastRawX;
                float disRawY = event.getRawY() - lastRawY;
                PtrCLog.d("JellyTextView", "disX    ====: " + disX);
                PtrCLog.d("JellyTextView", "lastX   ====: " + lastX);
                PtrCLog.d("JellyTextView", "disRawX ====: " + disRawX);
                PtrCLog.d("JellyTextView", "lastRawX====: " + lastRawX);

                PtrCLog.d("JellyTextView", "====");

                offsetLeftAndRight((int) disRawX);
                offsetTopAndBottom((int) disRawY);
                lastX = event.getX();
                lastY = event.getY();

                lastRawX = event.getRawX();
                lastRawY = event.getRawY();
                break;
            case MotionEvent.ACTION_UP:
                mScroller.startScroll((int) getX(), (int) getY(), -(int) (getX() - startX),
                        -(int) (getY() - startY));
                invalidate();
                break;
        }
        /**
         public final float getRawX () {
         return nativeGetRawAxisValue(mNativePtr, AXIS_X, 0, HISTORY_CURRENT);
         }

         public final float getX(int pointerIndex) {
         return nativeGetAxisValue(mNativePtr, AXIS_X, pointerIndex, HISTORY_CURRENT);
         }
         */
        return super.onTouchEvent(event);
    }

相关文章

  • getX 和getRawX

    虽然知道getX是返回相对控件的坐标,getRawX返回的相对屏幕的坐标,但是脑子一下子转不过来,认为在移动控件的...

  • Android 屏幕坐标系

    屏幕坐标: 一、getX、getRawX、getTranslationX等的图形表示 event.getX():表...

  • 自定义view记录

    二、getX、getRawX、getTranslationX意义的文字描述 event.getX():表示的是触摸...

  • Android getX、getRawX

    结论:当你触到按钮时,x,y是相对于该按钮左上点(控件本身)的相对位置。而rawx,rawy始终是相对于屏幕的位置。

  • getX和getRawX的区别

    getX是以组件左上角为坐标原点,获取X坐标轴上的值。 getRawX是以屏幕左上角为左脚做预案,获取X坐标轴上的值。

  • 判断事件是否在子View范围内

    第一种方法: 此处顺便说一下ev.getX()和ev.getRawX()的区别ev.getX():表示相对于控件自...

  • Android 坐标小结

    本文主要是比较getX,event.getRawX,getScrollX,event.get几种获取坐标方法的区别...

  • View体系总结

    1. 坐标系 TouchEvent.getX():点击事件到控件左边的距离 TouchEvent.getRawX(...

  • Android开发之getX,getRawX,getWidth,

    原文链接 一、getX、getRawX、getTranslationX等的图形表示 首先我们来看看这几个方法在图形...

  • 图解MotionEvent中getRawX、getRawY与ge

    1.getRawX、getRawY与getX、getY的区别 在编写android的自定义控件,或者判断用户手势操...

网友评论

      本文标题:getX 和getRawX

      本文链接:https://www.haomeiwen.com/subject/qtvefxtx.html