首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么onTouchEvent和onDraw中的MotionEvent.getx()结果不一样?

在Android开发中,onTouchEvent和onDraw是两个不同的方法,分别用于处理触摸事件和绘制视图。它们的执行时机和目的不同,因此MotionEvent.getx()方法在这两个方法中返回的结果也会有所不同。

  1. onTouchEvent方法: onTouchEvent方法是用于处理触摸事件的,当用户触摸屏幕时,系统会调用该方法来处理触摸事件。在该方法中,MotionEvent对象包含了触摸事件的详细信息,包括触摸点的坐标等。而MotionEvent.getx()方法会返回触摸点相对于视图左上角的x坐标值。
  2. onDraw方法: onDraw方法是用于绘制视图的,当视图需要进行绘制时,系统会调用该方法来执行绘制操作。在该方法中,我们可以使用Canvas对象进行绘制操作。由于绘制操作是在视图的坐标系中进行的,而不是触摸事件的坐标系中,因此MotionEvent.getx()方法返回的是相对于视图坐标系的x坐标值。

因此,onTouchEvent和onDraw中的MotionEvent.getx()结果不一样是因为它们分别处于不同的上下文中,一个是处理触摸事件的上下文,一个是进行视图绘制的上下文。在处理触摸事件时,获取的是触摸点相对于视图左上角的坐标值;而在绘制视图时,获取的是相对于视图坐标系的坐标值。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云移动开发平台:https://cloud.tencent.com/product/mpp
  • 腾讯云云原生应用引擎:https://cloud.tencent.com/product/tke
  • 腾讯云数据库服务:https://cloud.tencent.com/product/cdb
  • 腾讯云服务器运维:https://cloud.tencent.com/product/cvm
  • 腾讯云音视频处理:https://cloud.tencent.com/product/mps
  • 腾讯云人工智能服务:https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云存储服务:https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务:https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙服务:https://cloud.tencent.com/product/metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

你知道dudf统计结果为什么不一样

我们常常使用dudf来获取目录或文件系统已占用空间情况。但它们统计结果是不一致,大多数时候,它们结果相差不会很大,但有时候它们统计结果会相差非常大。...[root@xuexi ~]# du -sh / 2>/dev/null 244G / df"/"使用空间是1.7G,但是du结果却是244G。...1.文件存储删除底层过程 这里简单说明下文件系统相关底层机制,首先说明下文件是怎么存储到文件系统。假如要存储a.txt到/tmp目录下。 ?...正常情况下,删除文件会立刻释放相关指针,并将imapbmap相关位图标记为未使用。...而df却将该文件大小统计进去了,因为my.iso占用data block还未被标记为未使用。 再关掉tail进程,然后df再统计空间,结果du一样显示为正常大小。

1.3K21

du df 统计结果为什么不一样

作者 | 骏马金龙 来源 | https://www.cnblogs.com/f-ck-need-u/p/8659301.html 今天有个人问我dudf统计结果为什么会不同。...我们常常使用dudf来获取目录或文件系统已占用空间情况。但它们统计结果是不一致,大多数时候,它们结果相差不会很大,但有时候它们统计结果会相差非常大。...1.文件存储删除底层过程 这里简单说明下文件系统相关底层机制 首先说明下文件是怎么存储到文件系统。假如要存储a.txt到/tmp目录下。...4.df会统计已删除但却仍有进程引用文件。 正常情况下,删除文件会立刻释放相关指针,并将imapbmap相关位图标记为未使用。...而df却将该文件大小统计进去了,因为my.iso占用data block还未被标记为未使用。 再关掉tail进程,然后df再统计空间,结果du一样显示为正常大小。

59310
  • 【踩坑】PyCharmTerminal模型卷积输出结果不一样

    也就是除了pycharmterminal,其他所有的条件都是一样。但是发现,在Pycharm中直接点运行,和在terminal通过python xxx运行,两者模型输出结果竟然有差异。...如果在推理之前强制把输入数据明确指定为float32或者float64,那pycharmterminal输出就都一样了。...猜测可能pycharmpytorch默认读取数据是float32,terminal默认是float64。也可能是其他原因导致实际读取精度不一样,比如模型训练时候保存权重就有精度问题?...3、检查下输入数据模型精度。...但是发现改为float()时,pycharm运行能变,而terminal没变(即还是double时候结果)。暂不清楚为何terminal改不了float。

    10700

    特殊案例,为什么a, b = b, a结果跟你想不一样

    这个特性,也是很多人介绍Python比其它语言优越一个案例。 但实际上,这种交换变量方式,在某些特殊情况下,它行为可能跟你想要不一样。我们来看一个案例。...在一些in-place排序算法,我们会交换一个列表两个索引对应内容,例如: ? 这看起来没有什么问题。...你肯定觉得显然是成立,因为a[1]值是2,a[1] + 1值是3,所以上面这段代码看起来相当于把列表下标为1下标为3两个数字交换顺序。也就是把元素2元素3交换顺序。...代码运行结果跟修改之前竟然不一样。 之所以会出现这种情况,是因为这种交换两个值方式,虽然只有一行代码,但是 Python 在执行时候,其实是分成两步来走。...所以最终结果就变成了[0, 3, 1, 3, 2, 6]。

    39340

    Android 使用 Scroller 实现平滑滚动功能示例代码

    一、自定义View实现View平滑滚动 public class ScrollerView extends View { private Scroller mScroller; private Paint...而是帮我们计算随着时间流逝,动画应该执行位置值,我们需要获得当前时间位置,然后调用View位置移动方法,将View移动到该位置,完成动画。 所以,在自定义View。...在computeScroll()方法调用ScrollercomputeScrollOffset()计算当前时间动画应该移动位置,返回值是动画是否在执行。...通过mScroller.getCurrX()mScroller.getCurrY()获得当前时间位置。手动调用View位置移动方法将View位置移动到当前时间位置,实现View滚动。...刷新Scroller当前值。

    94721

    Android自定义ViewonMeasure、onLayoutonDraw方法解析

    在Android开发,我们经常需要自定义View来实现特定界面效果。要实现一个自定义View,我们需要了解并掌握onLayout、onMeasureonDraw这三个关键方法。...在自定义ViewGroup,我们需要重写这个方法,根据子View测量宽高来确定它们位置。 1.3 onDraw(Canvas canvas) onDraw方法用于绘制View内容。...方法 在CircleView类,重写onDraw方法,使用Canvas绘制圆形边框。...在布局文件中使用这个自定义View,就可以看到一个带有边框蓝色圆形。 通过这个案例,我们可以看到,onMeasure、onLayoutonDraw这三个方法在自定义View重要作用。...四、总结 通过本文介绍,我们了解了onLayout、onMeasureonDraw这三个方法在自定义View自定义ViewGroup作用用法。

    9010

    plink计算PCA为什么GCTA计算不一样

    今天度过了求知一天,求知快乐就是这么朴实无华且枯燥。 今天同事问了我一个问题,为什么plink计算pcaGCTA计算得不一样?然后就引出今天查看说明文档,也证明了世界上就怕认真二字。...我们发现: 1,GCTA说明文档,有bug,公式没有写全: 第一个公式还要除以N。给出2010 NG上有写,但是软件说明文档不完整。...yang方法 所以,如果如果plinkPCAGCTAVanRaden方法相遇时,结果就不一致了。...手动证明(自己编写代码验证) 使用R包函数证明 有一个包叫AGHmatrix包,里面有个Gmatrix,它构建矩阵时可以选择构建方法: 结果证明了两者确实不一样。...推荐用Yang方法构建G矩阵,得到PCA结果。也就是plink--pca结果,同样也是gcta默认计算PCA参数,--make-grm-alg 0。 8,为什么要用GCTA计算PCA?

    1.1K20

    常用自定义控件四(QuickBarView)

    ---- 在Android日常开发,我们经常在联系人界面看到一些字母导航栏,点击字母时候,会根据汉字首拼音来查找是否存在相应item,这种效果很常见,几乎所有涉及到通讯都会用到,包括qq,...,有人可能会问了为什么不在onMeasure里面获取了,其实在onMeasure方法里面获取是可以,只不过我们还需要调用一下measure方法而已,在onSizeChnage方法里面,我们直接调用...cellWidth = getMeasuredWidth(); 即可获取到我们需要宽度高度。...接着我们重写onDraw方法,在onDraw方法我们所做工作就是绘制 我们需要26个字母 protected void onDraw(Canvas canvas) { for...item首字母是不是跟当前首字母是不是一样不一样的话,显示当前item字母,不过要注意一点,就是position等于0时候,我们需要做特殊处理,代码如下 String str = null;

    40010

    sql查询结果预想不一样?多半是null在作怪

    不知道兄弟们是否有同感 在写查询语句时候我们通常不会刻意去考虑表”null“值 但有些时候对比查询结果和数据库又发现跟预想不一样!...如果迟迟找不到原因那很有可能是"null"值搞鬼 下面就让我们来一探究竟 注:以下情况针对于MYSQL数据库 01null导致sum函数返回null而不是0 如果sum函数指定字段在数据库全部为null...我们是存在一条数据,所以正常返回结果应该是1, 但由于mark为null,所以就被遗漏了,返回了0。...修改之后SQL: SELECT COUNT(*) FROM test 返回了期望查询结果: 03判断null要用"is null",而非"= null" 如果我们查询条件涉及null判断,使用...这是显然不正确,所以我们应该用”is null“这种写法 修改之后SQL: SELECT * FROM test WHERE mark is null 返回了期望查询结果: - THE END

    1.1K20

    Android查缺补漏(View篇)--自定义 View 基本流程

    DecorView 建立关联,而 DecorView 就是一个 Activity 顶级 View,在一个默认主题中,它分为标题栏,内容区域,我们所添加 View 均是添加到了 DecorView...layout:对应 onLayout() 方法,确定view四个顶点,即确定View在父容器位置。 draw:对应 onDraw(),绘制View。...(100, 100, 100, mPaint); } } 运行结果就是一个红色实心圆,在这个示例为了使得布局文件 wrap_content 正常生效,重写了 onMeasure() 方法...可见,在 onDraw() 方法对padding处理之后,在布局文件无论怎么设置padding,都能保证圆心在可用区域中心。...(速度追踪)等等,用起来也都很方便,其实只要你愿意,这些事件也完全可以在 onTouchEvent() 方法实现,接下来在为上述圆形 Demo 添加一个缩放功能,也就是使用 ScaleGestureDetector

    833100

    Laravel关联模型过滤结果为空结果集(haswith区别)

    数据结构是三张表用户优惠券表(user_coupons)、优惠券表(coupons),商家表(corps),组优惠券表(group_coupons) (为了方便查看,后两项已去除) 这里我本意想用模型关联查出用户优惠券属于给定组...但有些结果不是我想要: array(20) { ["id"]= int(6) ["user_id"]= int(1) ["corp_id"]= int(1) ["coupon_id...后来看到了Laravel关联模型has()方法,has()是基于存在关联查询,下面我们用whereHas()(一样作用,只是更高级,方便写条件) 这里我们思想是把判断有没有优惠券数据也放在第一次查询逻辑...然后走下一步with()查询,因为此时都筛选一遍了,所以with可以去掉条件。 显然区分这两个作用很重要,尤其是在列表,不用特意去筛选为空数据,而且好做分页。...总结 以上所述是小编给大家介绍Laravel关联模型过滤结果为空结果集(haswith区别),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家

    3.4K40

    Android 自定义 View 独家技巧

    在构造方法,我们可以完成一些初始化工作,比如设置画笔颜色、初始化属性等。...初始化工作 } 步骤三:实现onDraw方法 onDraw方法是自定义View中最重要方法之一。在这个方法,我们可以使用画笔绘制自己想要图形。...绘制图形 } 在实现onDraw方法时,我们可以使用以下技巧: 使用局部变量:在onDraw方法创建对象变量会增加内存分配垃圾回收负担。因此,在onDraw方法中使用局部变量可以提高性能。...使用Scroller:Scroller可以帮助我们实现平滑滚动效果,比如ListViewScrollView滚动效果。...在测量阶段,我们需要测量自定义View大小;在布局阶段,我们需要根据测量结果来确定自定义View位置。

    26520

    android实现在ImageView上随意画线涂鸦方法

    我实现思路: 1.继承ImageView类 2.重写onTouchEvent方法,在ACTION_MOVE(即移动时),记录下所经过点坐标,在ACTION_UP时(即手指离开时,这时一条线已经画完)...,将所画线(点集合)保存在一个集合 3.重写onDraw方法,利用canvas所记录下线点画出线来 可能我讲十分笼统,下面来看看实际代码吧 //代表ImageView上一点 public...); } 可以看到当我们手指移动时,获取保存所经过点并调用invalidate方法进行屏幕刷新(可以使onDraw方法被调用,稍后可以看到),当我们手指离开时添加之前所画线到集合,并调用invalidate...方法 接下来看看所重写onDraw方法,它利用所保存线信息进行画线 @Override protected void onDraw(Canvas canvas) { super.onDraw...以上这篇android实现在ImageView上随意画线涂鸦方法就是小编分享给大家全部内容了,希望能给大家一个参考。

    1.6K10

    Android字体渐变效果

    答:因为文字坐标系屏幕坐标系不一样,文字坐标系是从BaseLine线开始计算。 先来回顾一下屏幕坐标系: 图片 再来看看文字坐标系。...图片 (图片来自于网络) 再来思考一下文字是为什么不显示: 图片 虚线为BaseLine 如果此时我把字体放大到100,看一看我能不能看到文字。...()restore()方法可以理解为将当前绘制东西当作一个新图层!...从左到右渐变文字 众所周知,在android是不能够将文字绘制一般。...先来看看没有优化效果: 图片 可以看到,在绘制过程,因为是两层,那么就绘制了2次。 优化思路 当黑色[上层]从左到右滑动时候,红色[下层]跟随着从左到右裁剪。

    1.2K10

    Android自定义View使用及其原理知识点总结

    在ViewGroup可以包含多个View,并且管理他们。控件树就是有这两个部分组成,控件树上层负责是下层控件绘制测量以及交互。...一、拓展谷歌提供系统控件 假如我们要对Textview控件进行拓展,首先我们要定义一个类继承TextView,选择性重写它onDraw()、onMeasure()、onTouchEvent()等方法...其中,onDraw()负责对图像绘制,onMeasure()负责测量位置,onTouchEvent()负责设置触摸事件。...当我们想直接绘制出有背景颜色TextView时,可以在类定义画笔,在onDraw()进行绘制。...在继承View类时,我们还需要重写它onDraw(),onMeasure()、onTouchEvent()来实现绘制、测量触摸事件。

    40621

    Mysqlexplain用法结果字段含义介绍

    key key_len ref rows filtered Extra explain使用实例 总结 参考博文 拓展阅读 使用 explain 查询分析SQl执行记录,可以进行sql性能优化!...SELECT语句 DEPENDENT UNION:UNION第二个或后面的SELECT语句,取决于外面的查询 UNION RESULT:UNION 结果 SUBQUERY:子查询第一个SELECT...eq_ref:对于每个来自于前面的表行组合,从该表读取一行。这可能是最好联接类型,除了const类型。 ref:对于每个来自于前面的表行组合,所有有匹配索引值行将从这张表读取。...Using filesort:MySQL需要额外一次传递,以找出如何按排序顺序检索行。 Using index:从只使用索引树信息而不需要进一步搜索读取实际行来检索表列信息。...参考博文 mysqlexplain用法结果含义 EXPLAIN 命令详解 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/121081.html原文链接:https

    58940
    领券