`

MotionEvent中getX()和getRawX()的区别

 
阅读更多
首先我们通过一个button进行一下测试,可以知道:
Java代码 
 
public class Res extends Activity implements View.OnTouchListener {  
 
    Button btn = null;  
    int x = 0;  
    int y = 0;  
    int rawx = 0;  
    int rawy = 0;  
 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        btn = (Button) findViewById(R.id.button);  
        btn.setOnTouchListener(this);  
    }  
 
    public boolean onTouch(View view, MotionEvent event) {  
        int eventaction = event.getAction();  
        switch (eventaction) {  
        case MotionEvent.ACTION_DOWN:  
            break;  
        case MotionEvent.ACTION_MOVE:  
            x = (int) event.getX();  
            y = (int) event.getY();  
            rawx = (int) event.getRawX();  
            rawy = (int) event.getRawY();  
            Log.d("DEBUG", "getX=" + x + "getY=" + y + "\n" + "getRawX=" + rawx  
                    + "getRawY=" + rawy + "\n");  
            break;  
 
        case MotionEvent.ACTION_UP:  
 
            break;  
        }  
        return false;  
    }  



public class Res extends Activity implements View.OnTouchListener {

Button btn = null;
int x = 0;
int y = 0;
int rawx = 0;
int rawy = 0;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.button);
btn.setOnTouchListener(this);
}

public boolean onTouch(View view, MotionEvent event) {
int eventaction = event.getAction();
switch (eventaction) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
x = (int) event.getX();
y = (int) event.getY();
rawx = (int) event.getRawX();
rawy = (int) event.getRawY();
Log.d("DEBUG", "getX=" + x + "getY=" + y + "\n" + "getRawX=" + rawx
+ "getRawY=" + rawy + "\n");
break;

case MotionEvent.ACTION_UP:

break;
}
return false;
}
}


getX()是表示Widget相对于自身左上角的x坐标,而getRawX()是表示相对于屏幕左上角的x坐标值(注意:这个屏幕左上角是手机屏幕左上角,不管activity是否有titleBar或是否全屏幕),getY(),getRawY()一样的道理
分享到:
评论

相关推荐

    Android MotionEvent中getX()和getRawX()的区别实例详解

    Android MotionEvent 中 getX() 和 getRawX() 的区别实例详解 Android 中的 MotionEvent 是一个重要的事件处理机制,它提供了许多有用的方法来获取触摸事件的信息。其中,getX() 和 getRawX() 是两个常用的方法,...

    一个用例MotionEvent.getX()/getRawX/getScrollY()/childView.scrollBy((int) DX, (int) 0

    一个用例MotionEvent.getX()/getRawX/getScrollY()/childView.scrollBy((int) DX, (int) 0),博客地址:https://blog.csdn.net/dreams_deng/article/details/105274141

    一个用例理解MotionEvent.getX()/getRawX/getScrollY()/childView.scrollBy((int) DX, (int) 0)

    1.Android移动方式 ... ##MotionEvent.getX(): 获取按下点相对于屏幕原点坐标  MotionEvent.getY();  ## getScrollY(): 里面内容相对于父控件移动距离  // 设置内容移动   // 从左到右 负值, 开始减去结束  

    Android MotionEvent 坐标获取

    Android MotionEvent中getX()与getRawX()都是获取屏幕坐标(横),但二者又有区别 getX() : 是获取相对当前控件(View)的坐标 getRawX() : 是获取相对显示屏幕左上角的坐标

    Android开发中MotionEvent坐标获取方法分析

    本篇文章将深入探讨在Android中如何通过MotionEvent获取屏幕坐标的方法,特别是`getX()`和`getRawX()`的区别。 `getX()`方法用于获取手指触摸点相对于当前处理事件的View的X坐标。这意味着,如果用户在一个按钮...

    android_view_MotionEvent.rar_float

    这个压缩包文件`android_view_MotionEvent.rar_float`的焦点在于`float`类型的数据,这通常涉及到Android中的坐标和压力等触摸事件的参数。在Android应用开发中,理解和掌握`MotionEvent`的用法对于创建与用户交互的...

    Android 图片任意移动效果

    因此,我们需要使用`View.getX()`和`View.getY()`获取视图的当前位置,然后使用`MotionEvent.getRawX()`和`MotionEvent.getRawY()`获取手指在屏幕上的位置,再减去视图左上角相对于屏幕的位置,得到相对于视图的坐标...

    简述Android触摸屏手势识别

    此外,`MotionEvent`对象提供了丰富的信息,如事件类型(ACTION_DOWN、ACTION_UP等)、坐标(`getRawX()`、`getRawY()`、`getX()`、`getY()`)以及压力、倾斜度等,这些信息可以用于实现更精细的手势识别,如双击、...

    Android应用 坐标系详细介绍

    例如,当用户触摸屏幕时,可以使用`getX()` 和 `getY()` 获取触点相对于当前View的位置,`getRawX()` 和 `getRawY()` 则提供触点相对于屏幕的全局位置。 4. 自定义控件与坐标系 自定义View时,理解坐标系至关重要...

    Android应用源码之触摸轨迹曲线.zip

    可以使用`View.getX()`和`View.getY()`方法获取View的左上角位置,然后用`event.getRawX()`和`event.getRawY()`获取原始触摸坐标,进行相减得到相对坐标。 6. 动画效果: 为了使轨迹曲线更流畅,可以添加平滑动画...

    Android事件分发机制(上) ViewGroup的事件分发

    开发者可以通过getRawX和getRawY获取事件相对于屏幕的坐标,而getX和getY则返回相对于当前View的坐标。 在事件分发过程中,有三个核心方法: 1. **dispatchTouchEvent(MotionEvent ev)**:这是每个View都会调用的...

    Android随意拖动控件视图

    因此,我们需要将屏幕坐标转换为相对布局的坐标,使用`View.getLocationOnScreen()`和`View.getX()`、`View.getY()`方法获取原始位置,`MotionEvent.getRawX()`和`MotionEvent.getRawY()`获取手指的当前位置。...

    触屏手势识别程序

    通过分析`MotionEvent`的坐标属性(`getRawX()`、`getRawY()`、`getX()`和`getY()`),开发者可以跟踪手指在屏幕上的移动,实现拖动、滑动等操作。例如,可以检测用户是否在做水平滑动,这在滚动视图或翻页时非常...

    深入浅析Android坐标系统

    - **相对坐标**:`MotionEvent`对象提供了触摸事件的坐标信息,`getX()`和`getY()`返回的是事件相对于当前View的位置,而`getRawX()`和`getRawY()`则是相对于整个屏幕的坐标。 3. **触摸事件处理** 当用户在屏幕...

    自定义view滑动1

    - 在处理触摸事件时,`MotionEvent`的`getX()`和`getY()`返回的是相对于View本身的坐标,`getRawX()`和`getRawY()`则是相对于屏幕的绝对坐标。 总结来说,选择哪种滑动方法取决于具体需求。scollTo和scrollBy适合...

    图片缩放和移动

    当用户触摸屏幕时,我们可以通过getRawX()和getRawY()获取触点的原始坐标,然后根据这些坐标更新Matrix: ```java float dx = event.getX() - lastX; float dy = event.getY() - lastY; matrix.postTranslate(dx, ...

    android获取屏幕,状态栏,标题栏宽高

    这两种坐标系统之间的区别在于:`getX()`和`getY()`返回的是相对于父视图的位置;而`getRawX()`和`getRawY()`返回的是相对于整个屏幕的位置。 #### 五、获取按钮位置 最后,我们来看看如何获取一个特定视图(如...

    Android中View位置和触摸事件详解

    Android中View位置和触摸事件详解 在 Android 开发中,View 的位置和触摸事件是非常重要的概念,对于理解 Android 中的控件布局和事件处理非常关键。下面将对 View 的位置参数和触摸事件进行详细的介绍。 一、View...

Global site tag (gtag.js) - Google Analytics