以前にもカラー フィルターを適用した GridView 内の ImageView の色を取得しようとしています。4.2.2 の Nexus 4 で実行しています
このように 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を見つけて、画像ではなくその時点で画面の背景色を取得することを除いて、他に何をすべきかわかりません。これを行うためのより簡単な方法があるはずだと思われますか?