我试图在我之前也应用过颜色过滤器的 GridView 中获取 ImageView 的颜色。我在 Nexus 4 上运行 4.2.2
我正在像这样改变 ImageView 的颜色。在我应用滤镜之前,图像的实际颜色是白色的。
Drawable myIcon = getResources().getDrawable(R.drawable.bufferbuildercolor3);
myIcon.setColorFilter(new PorterDuffColorFilter(Color.rgb(Color.red(color),Color.green(color), Color.blue(color)),PorterDuff.Mode.MULTIPLY));
现在这实际上并没有改变我想要的源图像颜色。那总是白色的。
我的问题是在我丢失了用于设置颜色的数据后,我试图很好地引用颜色。我想长按 ImageView 并获取它的颜色。
我在下面的问题中找到了一些代码,但它似乎不起作用,因为它总是返回白色(255,255,255),这是原始图像的颜色,而不是过滤器的颜色。如何在 Android 中获取像素颜色?
ImageView imageView = ((ImageView)v);
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
int pixel = bitmap.getPixel(x,y);
int redValue = Color.red(pixel);
int blueValue = Color.blue(pixel);
int greenValue = Color.green(pixel);
我试过像下面这样的东西,但是当我调用 getColorFilter 时它就崩溃了。
ImageView image = (ImageView)findViewById(R.drawable.bufferbuildercolor3);
ColorFilter test = image.getColorFilter();
我不确定还能做什么,除了可能找到实际网格位置的 X/Y,然后在该点获取屏幕背景颜色而不是图像。似乎应该有一种更简单的方法来做到这一点?