Intereting Posts
"Android: elevation =" не работает на устройствах pre-Lollipop с компилятором API21 Сравнение производительности и удобства использования Android JSON-библиотек Как открыть камеру непосредственно в режиме панорамы / фотосферы? Кривая и холст Безье Ошибка приложения. Соединение с сервером не увенчалось успехом. (файл: ///android_asset/www/index.html) Как воспроизвести mp3 в папке res / raw моего приложения для Android? Что будет делать SQLiteCursor, если столбец null? GCM Push Notification Большой размер значка Как добавить тень и границу на круговом изображении viewroid? Как напрямую читать / записывать файлы с устройства и на устройство (например, эффект O_DIRECT-флага) на Java-пути? Android openGL ES glDrawArrays или glDrawElements? Android LongClickListener для элементов группы ExpandableListView Цвет выбранной вкладки в виде нижней навигации Как отключить историю совместного использования при использовании ShareActionProvider? Использование памяти в Android

Рисование над представлением и все его дети

Я пытаюсь применить визуальный эффект к группе просмотра. Моя идея состоит в том, чтобы захватить растровое изображение группы просмотра, сжать его, развернуть и снова нарисовать над группой просмотра, чтобы сделать его блочным, низким качеством.

У меня есть большая часть пути, используя этот код:

public class Blocker { private static final float RESAMPLE_QUALITY = 0.66f; // less than 1, lower = worse quality public static void block(Canvas canvas, Bitmap bitmap_old) { block(canvas, bitmap_old, RESAMPLE_QUALITY); } public static void block(Canvas canvas, Bitmap bitmap_old, float quality) { Bitmap bitmap_new = Bitmap.createScaledBitmap(bitmap_old, Math.round(bitmap_old.getWidth() * RESAMPLE_QUALITY), Math.round(bitmap_old.getHeight() * RESAMPLE_QUALITY), true); Rect from = new Rect(0, 0, bitmap_new.getWidth(), bitmap_new.getHeight()); RectF to = new RectF(0, 0, bitmap_old.getWidth(), bitmap_old.getHeight()); canvas.drawBitmap(bitmap_new, from, to, null); } } 

Я просто перехожу в холст, чтобы рисовать, и растровое изображение того, что нужно масштабировать + вверх, и оно работает хорошо.

 public class BlockedLinearLayout extends LinearLayout { private static final String TAG = BlockedLinearLayout.class.getSimpleName(); public BlockedLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); applyCustomAttributes(context, attrs); setup(); } public BlockedLinearLayout(Context context) { super(context); setup(); } private void setup() { this.setDrawingCacheEnabled(true); } @Override public void draw(Canvas canvas) { super.draw(canvas); // block(canvas); If I call this here, it works but no updates } @Override public void onDraw(Canvas canvas) { // block(canvas); If I call this here, draws behind children, still no updates } private void block(Canvas canvas) { Blocker.block(canvas, this.getDrawingCache()); } } 

У меня проблема в моей группе просмотра. Если я запустил метод block в drawgroup's draw, он рисует все, но никогда не обновляется, когда меняются детские представления. Я отслеживал вызовы функций с помощью журнала, и метод draw кажется запущенным, но ничего не меняется.

Я также попытался реализовать это в onDraw. Это рисует растровое изображение позади всех представлений детей, и снова они не обновляются.

Может ли кто-нибудь объяснить, как я буду исправлять это?

Solutions Collecting From Web of "Рисование над представлением и все его дети"