Android MotionEvent中getX()、getRawX()和getTop()的区别

为了展示getX()、getRawX()和getTop()方法的区别,我们写了一个简单的测试Demo,我们写了一个自定义控件(继承ImageView)。

package com.demo.ui;import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.ImageView;public class ImageViewTest extends ImageView {public ImageViewTest(Context context, @Nullable AttributeSet attrs) {super(context, attrs);}@Overridepublic boolean onTouchEvent(MotionEvent event) {int eventaction = event.getAction();switch (eventaction){case MotionEvent.ACTION_DOWN:break;case MotionEvent.ACTION_MOVE:int top, left;float rawx, rawy, x, y;top = getTop();left = getLeft();rawx = event.getRawX();rawy = event.getRawY();x = event.getX();y = event.getY();Log.i("TAG", "getTop() : " + top);Log.i("TAG", "getLeft() : " + left);Log.i("TAG", "getRawX() : " + rawx);Log.i("TAG", "getRawY() : " + rawy);Log.i("TAG", "getX() : " + x);Log.i("TAG", "getY() : " + y);break;case MotionEvent.ACTION_UP:break;}return super.onTouchEvent(event);}
}

当你触摸ImageViewTest控件的时候:
在这里插入图片描述

  • getTop()、getLeft():当前控件左上角相对于父容器控件的坐标;

  • getRawX()、getRawY():当前触摸点相对于屏幕的坐标;

  • getX()、getY():当前触摸点相对于当前控件的坐标;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++常量

常量 1.字面常量与符号常量 字面常量:从字面形式可以识别的常量 eg:1.2;‘A’ 整型常量:八进制(以0开头),十六进制(以0x或0X开头) 浮点型常量: 小数形式(整数和小数可以省略其中之一------为0时) eg:.123(0.123) 123.(123.0) 指数形式 0.23e1(0.2310^1) 0.23E-2(0.2310^-2)…

Synchronization 进程锁

Boost.Interprocess允许多个进程同时使用共享内存。因为共享内存从定义上来说是进程间共享的,所以Boost.Interprocess需要支持某种同步。想到同步,我们会想到C11标准库中的类或Boost.Thread。但是这些类只能用来同步同一进程内的线程,它们不支…

Android 获取屏幕宽度和高度的几种方法

方法一: public static void getScreenSize1(Context context){WindowManager windowManager (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);Display defaultDisplay windowManager.getDefaultDisplay();Point point new Point();defaultD…

毛概 第二章新民主主义革命理论

1.新民主主义革命的总路线 2.

解决undefined reference to symbol ‘sem_close@@GLIBC_2.2.5‘问题

错误图示 问题原因 编译的时候,没有引入库文件 sem()位于pthread库中,所以在编译和链接时请确保使用-pthread标志,因此在编译的时候需要导入pthread库文件编译的顺序出现问题 解决办法 在clion的CMakeLists.txt文件中添加这一行代码set(CM…

Android 在onCreate()方法中获取控件宽高值为0解决方案

大家很多时候需要在Activity或者Fragment的onCreate()方法中获取声明的空间的高度或者宽度,进行位置移动或者其他操作,但是当调用 view.getHeight() 或者 view.getWidth() 获取的竟然为0。。。 其实很容易理解,在onCreate()的时候&#xff0…

C++运算符与类型转换

除法/ 参与运算时,结果符号按照(为,–为,-或为-),两个都是整型结果直接去除小数部分 -3/1-1 -3/-13 3/-13 除法 一律向0取整(即直接切除小数部分)。 取余% 参与运算为整型,结果符号和第一个相同(当结果不为0时) /* 21%63 -21%6-3 -21%-6-3 参与取余的运…

使用named_mutex实现锁机制

介绍 named_mutex是一个进程锁,考虑到进程和线程之间的区别区别:一个工作单元要想被称作进程,它必须要有操作系统指派给他的地址空间,必须拥有进程ID,必须拥有状态和进程表中的表项。进程和线程之间最大的区别是进程有…

Android Studio 突然出现很多红色波浪线或红色感叹号解决方案

最近在开发过程中,某次打开Android工程之后,代码了出现大量的红色波浪线报错提示,但是工程确可以正常编译、正常打包,尝试了很多方法都无法去掉,最后找到了最有效的解决方案,步骤如下: 1、删掉…

安卓常用布局学习

线性布局 布局方向 水平 android:orientation“horizontal” 垂直android:orientation“vertical” gravity对齐方式–center 布局权重:视图中剩余部分的面积所占比例 android:layout_weight“1”(数字) 水平布局:android:layout_width“0dp” 垂直布局:android:layout_heigh…

Android Canvas绘制带箭头的直线

先看下效果图: 下面我们直接看代码 我自定义了一个View,代码如下: package com.davis.drawtrangle;import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; imp…

使用named_mutex实现读写锁,实现进程之间读共享写独占

代码 代码的名称是read_write_mutex.h这个代码可用,但是未优化,还存在冗余的代码如果涉及到进程挂掉了,造成进程堵塞,如何解决?还未涉及 //#ifndef BOOST_THREAD_PTHREAD_SHARED_MUTEX_HPP #define BOOST_THREAD_PTHR…

Android Activity之间传递类对象

一、简介 开发过程中,Activity之间传递数据是必不可少的,Android中使用Intent和Bundle作为数据载体,在Activity之间传递,对于基础数据类型,Bundle已经提供了相关的put、set方法,而作为自定义的类型则需要有…

C++3个汉诺塔递归问题

3个汉诺塔问题A—>C 移动次数2^n-1 hannoni(int n,char a,char b,char c)把n个盘子借助b,从a移动到cmove(int n,char a,char c)把第n个盘子,从a移动到c #include<iostream> #include<cmath> using namespace std; //汉诺塔问题A--->C //2^n-1次移动次数 …

clion编译器解决undefined reference to symbol ‘shm_open@@GLIBC_2.2.5‘

修改CMakelists文件 cmake_minimum_required(VERSION 3.17) project(mutex_learn)set(CMAKE_CXX_STANDARD 14)set(BOOST_ROOT "/usr/local/include/boost") #添加头文件搜索路径 include_directories(/usr/local/include) #添加库文件搜索路径 link_directories(/us…

Android 拦截或屏蔽返回键

在Android开发中我们常常会遇到需要拦截或屏蔽返回键的需求&#xff0c;对拦截后的返回键进行特殊操作。 监听返回键有两种方式 1、重写OnBackPressed方法 Overridepublic void onBackPressed() {// 完全由自己控制返回键逻辑&#xff0c;系统不再控制&#xff0c;但是有个前…

C++递归斐波那契数列

第一种 //斐波那契数列 // 0 1 1 … //从第1个开始 代码 #include<iostream> #include<cmath> using namespace std; //斐波那契数列 // 0 1 1 ... //从第1个开始 int f(int n) {int m; if(n1)return 0;if(n2)return 1;elsemf(n-1)f(n-2);return m;} int mai…

Android onActivityResult中requestCode与resultCode区别

想要了解requestCode与resultCode的区别&#xff0c;我们需要先了解以下三个方法的用法&#xff1a; startActivityForResult(Intent intent, Int requestCode) setResut(int resultCode, Intent intent) onActivityResult(int requestCode, int resultCode, Intent intent) …

使用named_mutex和named_condition配合实现读写锁

代码 代码的名称是read_write_mutex.h初步优化如果涉及到进程挂掉了&#xff0c;造成进程堵塞&#xff0c;如何解决&#xff1f;还未涉及 #include <boost/interprocess/sync/named_condition.hpp> #include <boost/interprocess/sync/named_mutex.hpp>namespace …

C++的输入与输出

输入与输出 输入:从外部输入设备(键盘)向计算机输入数据 输出:从计算机向外部输出设备(显示屏)输出数据 C使用流对象实现 使用流对象cin与cout,将标准输入输出流库的头文件iostream包含到源文件 #include<iostream>//标准输入输出库 using namespace std;//使用标准命…