【问题标题】:check validity of touch precisely精确检查触摸的有效性
【发布时间】:2011-01-11 03:56:21
【问题描述】:

我正在尝试制作一个显示图片的应用程序,用户需要识别一些对象(即杯子),通过触摸屏幕上图片中的杯子,将绘制一个圆圈如果有效。

到目前为止,我有一个带有可绘制位图的表面视图,可以全屏显示,并且在触摸屏幕时,会在视图上绘制一个圆圈。

我只能想到在图片中手动获取杯子的坐标(硬编码),然后对照触摸event.getX()event.getY()的坐标检查它。但这不会随着屏幕分辨率的变化而起作用。

这样做有什么更好的方法?就像我正在尝试找到一种方法来精确地允许触摸我在我的应用中定义的某些区域。

【问题讨论】:

  • 关于到目前为止的所有答案,我确定我在某个地方读到了 android 会放大/缩小所有像素值,因此代码只需要在 1.6 及更高版本上使用 480x320 吗?

标签: android surfaceview


【解决方案1】:

您可以按照您的建议存储坐标,但可以根据 SurfaceView 的大小与 BitmapDrawable 的大小进行调整。例如,如果您知道给定区域距离左侧 100 像素,您可以将比例设为 surfaceView.getWidth() / bitmapDrawable.getIntrinsicWidth()。将您的比例乘以您的值(100 像素)以获得最终位置。如果您在图像上保持相同的纵横比,则需要从两者中的较大者(宽度与高度)获取比例,并为高度和宽度使用相同的比例。

【讨论】:

    【解决方案2】:

    在给定的分辨率下,杯子的位置是固定的还是在那里变化的。

    另外,方向(横向、纵向)呢?位置也会相应改变吗?

    有标准分辨率,因此您可以随时考虑使用分辨率映射位置。

    此外,您还可以获取 X、Y 坐标,并根据杯子图像的高度和宽度检查它是否在一个范围内。

    【讨论】:

      【解决方案3】:

      首先找出屏幕的尺寸(屏幕尺寸)。

      现在放置与您的屏幕区域相对应的对象。

      例如。将杯子保持在 SCREENWIDTH - 60 并类似地检查触摸坐标。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多