Android开发中MotionEvent坐标获取方法分析
作者:阳光岛主 时间:2022-03-29 02:43:42
本文实例讲述了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,MotionEvent
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
一步步教你如何使用Java实现WebSocket
2023-06-07 04:18:20
![](https://img.aspxhome.com/file/2023/1/77971_0s.png)
详解Java String字符串获取每一个字符及常用方法
2022-12-14 05:15:33
![](https://img.aspxhome.com/file/2023/6/85486_0s.jpg)
java的引用类型的详细介绍
2022-05-15 09:34:40
Java 控制线程的方法
2022-10-14 15:20:22
![](https://img.aspxhome.com/file/2023/0/77150_0s.png)
BootStrap mvcpager分页样式(get请求,刷新页面)
2023-09-19 04:18:29
![](https://img.aspxhome.com/file/2023/2/89752_0s.png)
java.lang.ExceptionInInitializerError异常的解决方法
2023-01-13 04:23:16
C#操作INI文件的辅助类IniHelper
2022-04-18 07:55:34
Java 高并发十: JDK8对并发的新支持详解
2022-12-02 02:43:09
![](https://img.aspxhome.com/file/2023/6/75506_0s.png)
Android实现简易浏览器遇到问题的解决方法
2023-06-15 21:47:56
关于后端如何解决跨域的问题说明
2023-09-19 00:59:10
![](https://img.aspxhome.com/file/2023/7/79967_0s.jpg)
Java获取视频时长、大小的示例
2023-01-16 01:48:44
Java创建多线程的两种方式对比
2023-09-14 21:02:49
![](https://img.aspxhome.com/file/2023/2/58562_0s.png)
Spring @Profile注解详解
2023-04-20 06:26:16
一篇文章带你从java字节码层理解i++和++i
2023-05-29 13:57:58
![](https://img.aspxhome.com/file/2023/9/63849_0s.png)
C#图书管理系统 附源码下载
2023-10-19 18:30:13
![](https://img.aspxhome.com/file/2023/3/71753_0s.jpg)
浅谈SpringBoot中的@Conditional注解的使用
2021-12-07 16:47:04
![](https://img.aspxhome.com/file/2023/8/61798_0s.png)
基于序列化存取实现java对象深度克隆的方法详解
2021-08-31 07:45:26
![](https://img.aspxhome.com/file/2023/4/91074_0s.gif)
hashCode方法的使用讲解
2022-11-12 15:29:37
Java中的interrupted()和isInterrupted()
2023-06-17 22:16:31
![](https://img.aspxhome.com/file/2023/6/57596_0s.png)
浅析Spring和MyBatis整合及逆向工程
2022-07-09 08:27:11
![](https://img.aspxhome.com/file/2023/9/88579_0s.png)