我在获取被触摸点的颜色时遇到了一个奇怪的问题。我创建了一个图像(.bmp)并用油漆罐填充它。没有渐变或其他颜色。大多数情况下,当我触摸屏幕时,我会得到我期望的颜色,但有时我会得到稍微不同的颜色。我的代码看起来很简单:
final Bitmap bm2 = BitmapFactory.decodeFile(image_overlay);
if (bm2!=null) {
overlayimage.setImageBitmap(bm2);
image.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent mev) {
Log.d(MY_DEBUG_TAG, "onTouch()");
DecodeActionDownEvent(v, mev, bm2);
return false;
}
});
}
private void DecodeActionDownEvent(View v, MotionEvent ev, Bitmap bm2)
{
Log.d(MY_DEBUG_TAG, "DecodeActionDownEvent()");
xCoord = new Integer((int)ev.getRawX());
yCoord = new Integer((int)ev.getRawY());
colorTouched = bm2.getPixel(xCoord, yCoord);
Log.d(MY_DEBUG_TAG, "The coordinates touched were x: " + xCoord + "; y: " + yCoord);
Log.d(MY_DEBUG_TAG, "The color touched was (hex) " + Integer.toHexString(colorTouched));
}
最近我遇到了一个“失误”,并通过移动吸管工具检查图像的坐标,直到它位于准确的位置,并且该像素与该区域中的其他像素没有什么不同。
期望android返回确切的颜色不是“安全”的吗?如果我用#ff424542 绘制一个目标,假设如果我击中那个目标,我会得到一个#ff424542 的像素颜色,这不安全吗?在这种情况下,android 正在返回 #ff4a454a。附加图像是我的“image_overlay”文件。我瞄准的区域是右中部的深灰色。就像我说的,大多数时候它工作得很好,但每隔一段时间我就会记录一次失误,即使我清楚地处于目标区域。根据我的日志,最近的失误是 x:360, y:399 和 x:368, y:399。成功命中在 x:363, y:393 和 x:365, y434。