1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-blurview

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Поддержите Украину

BlurView

Динамическое размытие для Android Views, похожее на iOS. Включает библиотеку и небольшой пример проекта.

BlurView можно использовать как обычный FrameLayout. Он размывает свое подлежащее содержимое и рисует его как фон для своих дочерних элементов. Дочерние элементы BlurView не размываются. BlurView перерисовывает свое размытое содержимое при обнаружении изменений в иерархии представлений (вызов draw()). Он учитывает изменения своего положения и размера, включая анимацию представлений и анимацию свойств.

Как использовать

  <eightbitlab.com.blurview.BlurView
      android:id="@+id/blurView"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      app:blurOverlayColor="@color/colorOverlay">

       <!--Любой дочерний View здесь, например TabLayout. Этот View не будет размыт-->

  </eightbitlab.com.blurview.BlurView>
    float radius = 20f;
```    View decorView = getWindow().getDecorView();
    // ViewGroup, с которого вы хотите начать размытие. Выберите корневой элемент как ближайший к BlurView в иерархии.
    ViewGroup rootView = (ViewGroup) decorView.findViewById(android.R.id.content);
    
    // Необязательно:
    // Установите drawable для рисования в начале каждого размытого кадра.
    // Может быть использовано в случае, если ваша разметка имеет много прозрачного пространства, и ваш контент
    // получает слишком низкое значение прозрачности после применения размытия.
    Drawable windowBackground = decorView.getBackground();    blurView.setupWith(rootView) // Необязательно передайте RenderEffectBlur или RenderScriptBlur как второй параметр
           .setFrameClearDrawable(windowBackground) // Необязательно. Полезно, когда ваш корневой элемент имеет много прозрачного фона, что приводит к полупрозрачному размытому содержимому. Это сделает фон непрозрачным
           .setBlurRadius(radius)

Всегда пытайтесь выбрать ближайший возможный корневой элемент разметки к BlurView. Это значительно уменьшит количество работы, необходимой для создания снимка иерархии представлений.

SurfaceView, TextureView, VideoView, MapFragment, GLSurfaceView и т.д.

BlurView в настоящее время не поддерживает размытие этих элементов, так как они работают только с аппаратно-ускоренным Canvas, а BlurView полагается на программный Canvas для создания снимка представлений для размытия.

Gradle

Так как JCenter закрывается, пожалуйста, используйте https://jitpack.io/ и теги выпуска в качестве источника стабильных артефактов.

implementation 'com.github.Dimezis:BlurView:version-2.0.6'

Округлённые углы

Возможно, установить округлённые углы без использования какого-либо специального API, алгоритм такой же, как и для других обычных View:

Создайте округлённый drawable и установите его в качестве фона.

Затем настройте выравнивание, чтобы BlurView не рисовал за пределами углов.

blurView.setOutlineProvider(ViewOutlineProvider.BACKGROUND);
blurView.setClipToOutline(true);

Связанный тред - https://github.com/Dimezis/BlurView/issues/37## Почему размытие происходит на основном потоке? Потому что размытие на других потоках введёт 1-2 кадра задержки. К слову, RenderEffectBlur выполняет размытие на потоке рендеринга.

Сравнение с другими библиотеками размытия

  • Основное преимущество BlurView перед почти любой другой библиотекой заключается в том, что он не вызывает избыточного перерисовывания.
  • BlurView никогда не устаревает сам или другие View в иерархии и обновляет только при необходимости, полагаясь только на изменение Bitmap, которое записывается на ускоренном аппаратном canvas.
  • Он поддерживает несколько BlurView на экране без вызова цикла рисования.
  • Он использует оптимизированные RenderScript Allocations на устройствах, которые требуют определённых размеров Allocation, что значительно увеличивает производительность размытия.
  • Он позволяет выбирать пользовательский корневой view для создания снимка, что уменьшает количество проходов рисования и позволяет большую гибкость.
  • Поддерживает размытие диалогов (и фона диалогов)

Другие библиотеки:

  • 🛑 BlurKit - постоянно устаревает сам
  • 🛑 RealtimeBlurView - постоянно устаревает сам

Лицензия

Copyright 2024 Dmytro Saviuk

Лицензировано по лицензии Apache License, Version 2.0 («Лицензия»);
вы не можете использовать этот файл, если не будете соблюдать условия Лицензии.
Вы можете получить копию Лицензии по адресу [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)       http://www.apache.org/licenses/LICENSE-2.0

Если не требуется по применимому закону или не согласовано письменно, программное обеспечение
распространяется по Лицензии на условиях «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ,
как явных, так и подразумеваемых.
См. Лицензию для конкретного языка, регулирующего права и условия распространения по Лицензии.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Язык

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-blurview.git
git@api.gitlife.ru:oschina-mirror/mirrors-blurview.git
oschina-mirror
mirrors-blurview
mirrors-blurview
master