Я пытаюсь получить цвет ImageView в GridView, к которому ранее я применил цветовой фильтр. У меня 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 фактического положения сетки, а затем получить цвет фона экрана в этой точке, а не изображения. Кажется, должен быть более простой способ сделать это?