Как я могу переопределить onDraw
, чтобы взять то, что было бы нарисовано (как растровое изображение) и преобразовать его?Переопределить onDraw, чтобы изменить способ создания рисунка (Android)
Метод ниже работает, но, к сожалению, этот метод предполагает создание растрового изображения размером всего экрана - а не только области, на которую нарисовано. Если я использую это для рисования элементов пользовательского интерфейса, он перерисовывается для каждого элемента пользовательского интерфейса. Можно ли это сделать более эффективно?
@Override
protected void onDraw(Canvas canvas) {
//TODO: Reduce the burden from multiple drawing
Bitmap bitmap=Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Config.ARGB_8888);
Canvas offscreen=new Canvas(bitmap);
super.onDraw(offscreen);
//Then draw onscreen
Paint p=new Paint();
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN));
canvas.drawBitmap(bitmap, 0, 0, p);
}
Не создает слишком много сбора мусора, если в методе рисования создаются новые объекты? – Srin