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

 更新时间:2016年02月15日 09:58:55   作者:阳光岛主  
这篇文章主要介绍了Android开发中MotionEvent坐标获取方法,结合实例形式分析了MotionEvent获取坐标的相关函数使用方法与相关注意事项,需要的朋友可以参考下

本文实例讲述了Android开发中MotionEvent坐标获取方法。分享给大家供大家参考,具体如下:

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

演示示例代码

Java代码:

public class MainActivity extends Activity implements OnTouchListener {
  private Button btn;
  private int x = 0, y = 0;
  private int rawX = 0, rawY = 0;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    btn = (Button) findViewById(R.id.btn);
    btn.setOnTouchListener(this);
  }
  @Override
  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.e("homer", "x = " + x + "; y = " + y + "; rawX = " + rawX + "; rawY = " + rawY);
      break;
    case MotionEvent.ACTION_UP:
      break;
    }
    return false;
  }
}

xml 代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  tools:context=".MainActivity" >
  <TextView
    android:id="@+id/txt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="@string/hello_world" />
  <Button
    android:id="@+id/btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/txt"
    android:layout_centerInParent="true"
    android:text="button me" />
</RelativeLayout>

运行结果:

点击屏幕中间的Button,获取的坐标信息:

结果说明:

x,y  :  分别获取的相对Button控件的坐标 getX(), getY()
rawX,rawY  : 分别获取的相对显示屏幕左上角的坐标 getRawX(), getRawY()

总结:

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

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android手机信息操作技巧汇总》、《Android资源操作技巧汇总》及《Android基本组件用法总结

希望本文所述对大家Android程序设计有所帮助。

相关文章

  • Android ExpandableListView单选以及多选实现代码

    Android ExpandableListView单选以及多选实现代码

    这篇文章主要为大家详细介绍了Android ExpandableListView单选以及多选的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Android 5.0中CoordinatorLayout的使用技巧

    Android 5.0中CoordinatorLayout的使用技巧

    这篇文章主要为大家详细介绍了Android 5.0中CoordinatorLayout的使用技巧,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Android拖动条的实现代码

    Android拖动条的实现代码

    这篇文章主要为大家详细介绍了Android拖动条的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • Android Glide 4.0+使用详解

    Android Glide 4.0+使用详解

    这篇文章主要介绍了Android Glide 4.0+使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 使用Jetpack Compose实现翻转卡片效果流程详解

    使用Jetpack Compose实现翻转卡片效果流程详解

    Jetpack Compose 是一款基于 Kotlin 的声明式 UI 工具包,可以方便地创建漂亮的用户界面。使用 Compose 的动画 API 和可绘制 API,可以轻松实现翻转卡片效果。通过设置旋转角度和透明度等属性,可以使卡片沿着 Y 轴翻转,并实现翻页效果
    2023-05-05
  • Android 更新UI的方法汇总

    Android 更新UI的方法汇总

    这篇文章主要介绍了Android 更新UI的方法汇总的相关资料, 非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • Rocksdb Memtable数据结构源码解析

    Rocksdb Memtable数据结构源码解析

    这篇文章主要为大家介绍了Rocksdb Memtable数据结构源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Android BitmapUtils工具类使用详解

    Android BitmapUtils工具类使用详解

    这篇文章主要为大家详细介绍了Android BitmapUtils工具类的使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 实例分析Android中HandlerThread线程用法

    实例分析Android中HandlerThread线程用法

    本篇文章主要给大家介绍了Android HandlerThread使用介绍以及源码解析,有需要的朋友参考学习下吧。
    2017-12-12
  • Android 多线程的实现方法总结

    Android 多线程的实现方法总结

    这篇文章主要介绍了Android 多线程的实现方法总结的相关资料,这里提供三种方法,帮助大家掌握这部分内容,需要的朋友可以参考下
    2017-08-08

最新评论