Размытие. Эффект затухания при запуске приложения

97
20 октября 2021, 17:20

я бы хотел реализовать эффект затухания на основе Blur, или как это называется, при запуске приложения. То есть радиус размытия становиться нулевым за пару секунд.

Видео

При запуске приложения (Сразу же после показа splashscreen), создается слой Blur (библиотека RealtimeBlurView), создается поток который в цикле for уменьшает радиус размытия, с задержкой.

И выходит, что у меня на телефоне (Xiaomi Mi5) все работает замечательно, но на более слабых телефонах уже лагает. Лагает на Samsung Galaxy S4 (GT-I9515).

Как можно добиться того же эффекта, но чтобы работало везде, и без лагов?

Answer 1

Блюр - очень тяжелый эффект. Размытие по Гауссу, имеет сложность r^2 для каждого пикселя. то есть общая сложность алгоритма O(width * height * r^2). Если вы ставите внушительный радиус то вполне можете не уложиться во время кадра, отсюда и тормоза. Пропишите зависимость максимального радиуса размытия от телефона. Еще можете попробовать вместо параллельного потока менять радиус с помощью ValueAnimator

Ну и последний вариант: найти решение с использованием OpenGL или сделать такой самому. По беглому изучению библиотеки она не только графику не приплетает, но и не оптимизирует размытие. Хотя может не туда смотрел

READ ALSO
Зачем нужен null в Java?

Зачем нужен null в Java?

В каких случаях нужен null, кроме отложенной инициализации в java? Как определить на начальной стадии - может ли объект быть nullable?

213
JSF файл не видит CDI класс и его поля

JSF файл не видит CDI класс и его поля

Всем приветСтараюсь активно учить Java

244
Написание редактора блога для сайта (WYSIWYG)

Написание редактора блога для сайта (WYSIWYG)

Подскажите редактор, который я мог бы добавить себе на сайт для того, чтобы я мог создавать в нем статьиНужен похожий редактор как у StackOverflow...

132