Pull to refresh

Comments 2

Не знаю, что там как в этом compose, но битмапов лучше избегать по максимуму, потому что это программный рендеринг. Я экспериментировал немного с RenderEffect и RuntimeShader, в итоге нашёл способ отрисовывать подложку в RenderNode полностью аппаратно. Просто берём и делаем вот так:

RecordingCanvas nc=bgNode.beginRecording(getWidth(), getHeight());
viewBehind.draw(nc);
bgNode.endRecording();

То есть, отрисовываем размываемую вьюшку второй раз. И инвалидируем из onDescendantInvalidated в ней же.

Скриншот того, что получилось

Да, через RenderEffect это делается проще, удобней и правильней, тут спорить не буду. Но они появились с API 33 и чтобы выдержать консистентность подходов на старых и новых девайсах, пришлось "разобрать" ноду и доставать из неё результат.

Sign up to leave a comment.