我有一個奇怪的問題,得到被點擊的點的顏色。我創建了一個圖像(.bmp)並用油漆罐填充。沒有漸變或其他顏色。大多數時候,當我觸摸屏幕時,我會看到我期待的顏色,但有時我會看到一種稍微不同的顏色。我的代碼看起來非常簡單就夠了:Android的onTouch返回錯誤的顏色
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。
我其實是想知道,這樣的事情是怎麼回事。我懷疑你是對的。謝謝你的提示! – MrGibbage
不客氣,希望它適合你。如果確實如此,請回來接受答案。乾杯 – Simon