Получение значения цвета пикселя точки в Android-представлении, которая включает в себя холст с поддержкой Bitmap - программирование

Получение значения цвета пикселя точки в Android-представлении, которая включает в себя холст с поддержкой Bitmap

Я пытаюсь найти лучший способ получить значение цвета пикселя в данной точке на View. Есть три способа записи в вид:

Вот метод onDraw() из моего класса, который расширяет представление:

   @Override
   public void onDraw(Canvas canvas) {
      // 1. Redraw the background image.
      super.onDraw(canvas);
      // 2. Redraw any text, lines, etc.
      canvas.drawBitmap(bitmap, 0, 0, null);
      // 3. Redraw the sprites.
      for (Sprite sprite : sprites) {
        sprite.onDraw(canvas);
      }
    }

Каким будет лучший способ получить значение цвета пикселя, которое учитывало бы все эти источники?

4b9b3361

Ответ 1

Как загружать представление в растровое изображение (в какой-то момент после всех ваших рисунков/спрайтов и т.д.), затем получить цвет пикселя из растрового изображения?

public static Bitmap loadBitmapFromView(View v) {
    Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);                
    Canvas c = new Canvas(b);
    v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
    v.draw(c);
    return b;
}

то используйте getPixel (x, y) в результате?

http://developer.android.com/reference/android/graphics/Bitmap.html#getPixel%28int,%20int%29