`
liujianguangaaa
  • 浏览: 235129 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

android getX getRawX区别

阅读更多

在学习android时候,看到MotionEvent类里有两个方法,getX getRawX,看解释,很模糊,看不太懂,这到底什么意思?肯定有区别.具体什么区别呢?

一看,两个函数都是返回了整型直,那好办了,把这两个直打印出来,分析下,估计能有收获.好.问题是怎么把这两个直打印出来呢?

哎,这就要求系统不断的丢出MotionEvent,这好办,上篇文章不写了,具体看代码,代码是最好的说明.

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class Res extends Activity implements View.OnTouchListener {
    Button btn = null;
    ImageView control;
    int x=0;
    int y=0;
    int rawx=0;
    int rawy=0;
    ImageView mouse=null;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mouse=(ImageView)findViewById(R.id.imageview);
        btn=(Button)findViewById(R.id.button);
        btn.setOnTouchListener(this);
//        mGestureDetector = new GestureDetector(this, new LearnGestureListener());
    }

    public boolean onTouch(View view, MotionEvent event) {
        int eventaction = event.getAction();
        switch (eventaction) {  
              case MotionEvent.ACTION_DOWN:
                break;         
            case MotionEvent.qisda changerACTION_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"+"suzhou zangchunjie"+"getRawX="+rawx+"getRawY="+rawy+"\n");
                break;  
              
            case MotionchangerEvent.ACTION_UP:
                
                break;  
            }
        return false;
    }
}



xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android "
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ImageView  
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageview"
    android:src="@drawable/bitmap"
    />
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/button"
    android:text="press"
    android:layout_gravity="right"
    />
</LinearLayout>

这样通过打印直就可以比较结果了.
具体结果如下:


01-06 02:20:35.862: DEBUG/DEBUG(716): getX=22getY=10
01-06 02:20:35.862: DEBUG/DEBUG(716): getRawX=286getRawY=286
01-06 02:20:35.893: DEBUG/DEBUG(716): getX=23getY=10
01-06 02:20:35.893: DEBUG/DEBUG(716): getRawX=287getRawY=286
01-06 02:20:35.991: DEBUG/DEBUG(716): getX=24getY=10
01-06 02:20:35.991: DEBUG/DEBUG(716): getRawX=288getRawY=286
01-06 02:20:36.023: DEBUG/DEBUG(716): getX=25getY=10
01-06 02:20:36.023: DEBUG/DEBUG(716): getRawX=289getRawY=286
01-06 02:20:36.093: DEBUG/DEBUG(716): getX=26getY=10
01-06 02:20:36.093: DEBUG/DEBUG(716): getRawX=290getRawY=286
01-06 02:20:36.121: DEBUG/DEBUG(716): getX=27getY=10
01-06 02:20:36.121: DEBUG/DEBUG(716): getRawX=291getRawY=286
01-06 02:20:36.242: DEBUG/DEBUG(716): getX=28getY=10
01-06 02:20:36.242: DEBUG/DEBUG(716): getRawX=292getRawY=286


这就比较明显了,我画的是直线,getX是获取以widget左上角为坐标原点计算的X轴坐标直.
getRawX 获取的是以屏幕左上角为坐标原点计算的X轴坐标直.

分享到:
评论

相关推荐

    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移动方式 1. 使用scrollTo/scrollBy  只能影响View的内容移动,并不能改变View本身的位置  2. setX , setY: 设置控件相对于父控件位置 3. 动画 2. Api 综合理解: getRawX: 获取当前控件相对于屏幕原点...

    爱华对view的理解之Android相近且易混淆的13种属性.pdf

    8. **getX getRawX 的区别** - `getX()` 返回View相对于其父视图的左边缘的X坐标,考虑了旋转和变换。 - `getRawX()` 返回View在屏幕上的绝对X坐标,不受父视图影响,适用于需要精确位置信息的情况。 这些属性的...

    Android MotionEvent 坐标获取

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

    [Android-Demo]Android View的拖动

    和getRawX和getX的区分 详细描述:http://blog.csdn.net/u011634756/article/details/10001119 ====================关注小鱼=================== 新浪微博:http://weibo.com/AwareMissing 腾讯微博:...

    Android随意拖动控件视图

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

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

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

    Android应用 坐标系详细介绍

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

    深入浅析Android坐标系统

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

    Android 图片任意移动效果

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

    Android 坐标系与视图坐标系图解分析

    "Android 坐标系与视图坐标系图解分析" Android 坐标系是指 Android 中的屏幕坐标系,原点位于屏幕的...8. Android 中的坐标系转换:可以通过 getLocationOnScreen() 方法和 getX()、getY() 方法来实现坐标系的转换。

    android的拖动效果

    int x = (int) event.getRawX(); int y = (int) event.getRawY(); switch (eventAction) { case MotionEvent.ACTION_DOWN: // 触摸按下时,记录初始位置 temp[0] = (int) event.getX(); temp[1] = y - v....

    Android悬浮窗,悬浮图标

    int newX = (int) (event.getRawX() - downX); int newY = (int) (event.getRawY() - downY); params.x += newX; params.y += newY; windowManager.updateViewLayout(floatView, params); break; } return ...

    android利用windowmanager实现悬浮窗

    主要分析更新view的实现过程:实现触摸事件监听,重写onTouch()方法,在ActionDown时,利用getRawX和getRawY得到x1、y1,在ActionMove时,利用getX和getY获取移动过程的x2、y2,两者作差后作为更新的view对应的xy...

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

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

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

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

    android_view_MotionEvent.rar_float

    1. `getX(int pointerIndex)`和`getY(int pointerIndex)`:返回指定触点在屏幕上的X和Y坐标,坐标系原点位于屏幕左上角。 2. `getRawX()`和`getRawY()`:返回相对于设备屏幕的X和Y坐标,不受父视图的滚动或缩放影响...

Global site tag (gtag.js) - Google Analytics