我正在尝试制作一个可以显示图片的应用,用户需要识别一些对象(例如杯子),通过触摸屏幕上图片中的杯子,如果有效。
到目前为止,我有一个带有可绘制位图的曲面视图,可以全屏显示,并且在触摸屏幕时,将在视图上绘制一个圆圈。
我只能想到手动在图片中获取杯子的坐标(硬编码),并通过触摸event.getX()
和event.getY()
将其与坐标进行核对。但是,这不会随着屏幕分辨率的更改而起作用。
这样做的更好方法是什么?就像我正在尝试寻找一种方法来精确地允许我在应用程序中定义的某些区域上进行触摸。
您可以按照建议的方式存储坐标,但是可以根据SurfaceView的大小与BitmapDrawable的大小进行调整。例如,如果您知道给定的区域距左100像素,则可以将比例尺设置为surfaceView.getWidth()/ bitmapDrawable.getIntrinsicWidth()。将比例乘以您的值(100px),即可得出最终排名。如果要在图像上保持相同的宽高比,则需要从两者中较大的一个获取比例(宽度与高度),并对高度和宽度使用相同的比例。
在给定的分辨率下,杯的位置是固定的还是在此变化。
另外,方向(风景,肖像)呢?位置也会相应改变吗?
有标准分辨率,因此您始终可以考虑使用分辨率映射位置。
此外,您还可以获得X,Y坐标,并根据杯子图像的高度和宽度检查它是否在一个范围内。
首先找出屏幕尺寸(屏幕尺寸)。
现在放置与屏幕区域相对应的对象。
例如将杯子放在SCREENWIDTH-60上,并类似地检查触摸坐标。