我需要检测图像波纹管上红色斑点的触摸,因此触摸斑点后,我可以进行操作。 我想我需要检测触摸坐标,并检查它是否与红点匹配。但是,我如何检测红点位置?可能吗? 注:如果有帮助,我可以选择图像格式,但可能需要使用位图。检测图像上彩色斑点的触摸(位图)
我需要以编程方式获取点位置。我收到图片,我需要处理触摸事件的点。但我可以用不同的点位获得不同的图像
感谢您的所有想法!
我需要检测图像波纹管上红色斑点的触摸,因此触摸斑点后,我可以进行操作。 我想我需要检测触摸坐标,并检查它是否与红点匹配。但是,我如何检测红点位置?可能吗? 注:如果有帮助,我可以选择图像格式,但可能需要使用位图。检测图像上彩色斑点的触摸(位图)
我需要以编程方式获取点位置。我收到图片,我需要处理触摸事件的点。但我可以用不同的点位获得不同的图像
感谢您的所有想法!
我看到的最简单的解决方法是:
1,因为它可能会改变取决于设备的屏幕尺寸和/或分辨率获取ImageView的大小。
int IVwidth = imageView.getWidth();
int IVHeight = imageView.getHeight();
2-获取位图的宽度/高度,然后查找位图的宽度和宽度的ImageView, 只需之间的关系工科数学(比):
float HeightRatio = (float)bm.getHeight()/(float)iv.getHeight();
float WidthRatio = (float)bm.getWidth()/(float)iv.getWidth();
,假设我们有一个位图(800 * 600)大小和(400 * 300)大小 的imageView这会给你一个比例(2.0)的高度和宽度。
3-现在当引发事件ImageViewTouched时,您可以很容易地获得触摸坐标,因为事件会将它们传递给您。注意,捕捉触摸事件非常简单,只需将其添加到视图即可实现。
ImageView iv = (ImageView) findViewById(R.id.imageView1);
iv.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
if(arg1.getAction() == MotionEvent.ACTION_UP)
{
int x = arg1.getX();
int y = arg1.getY();
int XonImage = x * WidthRatio;
int YonImage = Y * HeightRatio;
if(bm.getPixel(XonImage, YonImage) == Color.RED)
{
// BINGOOOOOOO, do your magic here
}
}
return false;
}
});
欲了解更多信息,请不要犹豫。 干杯
我会用一个FrameLayout。视图层次应是:
<FrameLayout>
<ImageView vineyard>
<LinearLayout dots_holder>
<ImageView dot1/>
<ImageView dot2/>
<ImageView dotn/>
</LinearLayout>
</FrameLayout>
你点会在葡萄园图像上被覆盖,你可以添加一个OnClickListener各去一次。对于每个点ImageView的定位和尺寸,我会在代码中进行一些动态计算。
有很多方法。您可能可以使用SemperFly的方法。也有onTouchListeners的意见,这将给你的坐标。您可能需要翻译坐标以处理不同的屏幕密度。
你也许能够将图像分成网格,这可能会简化或避免数学。另一种选择是将图像切成瓦片。你也可以使用像RelativeLayout这样的东西。
您需要多准确的触摸检测?
问题在于图像带有红点。我需要检测这个点上的触摸,然后我可以在弹出窗口中显示一些信息。 – vandzi
不错......什么是“bm”? – Si8
bm是ImageView的位图 – janex