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

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

  1. Я установил фоновое изображение с помощью View.setBackgroundDrawable (...).

  2. Я пишу текст, рисую линии и т. Д., Используя Canvas.drawText (...), Canvas.drawLine (...) и т. Д., Для растрового холста.

  3. Я рисую дочерние объекты (спрайты), записывая их в Canvas, передаваемый методу onDraw(Canvas canvas).

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

   @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);
      }
    }

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

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

Другие вопросы по тегам