Получение значения цвета пикселя точки в представлении Android, включающей растровый холст
Я пытаюсь выяснить лучший способ получить значение цвета пикселя в заданной точке в представлении. Я пишу в View тремя способами:
Я установил фоновое изображение с помощью View.setBackgroundDrawable (...).
Я пишу текст, рисую линии и т. Д., Используя Canvas.drawText (...), Canvas.drawLine (...) и т. Д., Для растрового холста.
Я рисую дочерние объекты (спрайты), записывая их в 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