ImageView colors;
Bitmap bitmap;
...
//onTouch:
@Override
public boolean onTouch(View v, MotionEvent ev) {
final int evX = (int) ev.getX();
final int evY = (int) ev.getY();
colors.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(colors.getDrawingCache());
colors.setDrawingCacheEnabled(false);
int touchedColor = bitmap.getPixel(evX, evY);
int red = Color.red(touchedColor);
int green = Color.green(touchedColor);
int blue = Color.blue(touchedColor);
...
}
这是问题所在:在Samsung Galaxy S8上,当您单击该颜色时,touchedColor等于-831953。在Moto Z2 Play上,它是-897230,在Android Studio上的每个模拟器上也是如此。这是当您在两个电话和每个模拟器上单击图像上完全相同的像素位置时。彩色位图来自drawable-nodpi文件夹,是PNG。
答案 0 :(得分:0)
我自己找到了答案:答案是png图像在不同设备上的显示方式有所不同。使用bmp图片。
RGB使用png图像取决于设备:http://www.libpng.org/pub/png/spec/1.2/PNG-ColorAppendix.html
BMP设计为使RGB与设备无关