Connect with us

Разработка

Продвинутые формы для ваших Drawable

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

Опубликовано

/

     
     

Material Design — очень популярная система дизайна, хорошо известная в мире Android.

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

После своего первого выпуска в 2014 году он постоянно обновлялся современными и свежими рекомендациями. Чтобы помочь разработчикам Android создавать привлекательный пользовательский интерфейс, инженеры Google выпустили очень популярный набор компонентов под названием Material Components для Android.

Формы

Продвинутые формы для ваших Drawable

Распространенным шаблоном проектирования является включение содержимого в контейнер. Это может быть карточка или любой другой макет с цветным фоном.

Android-приложения часто используют для этой цели популярный компонент CardView, а в других есть растровые изображения, 9-patch битмапы, векторы и многие другие типы графических элементов.

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

Все эти решения прекрасно работают до тех пор, пока вы не начнете работать с высотами и z-трансляциями, потому что Android не может автоматически рисовать тень, соответствующую вашей пользовательской форме.

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

MaterialShapeDrawable и ShapeAppearanceModel

MaterialShapeDrawable — это специальный Drawable, который обрабатывает тени, высоту, масштаб и цвет для сгенерированного пути.

Путь определяется в модели ShapeAppearanceModel, которая позволяет определить внешний вид всех углов и краев вашей фигуры.

Путь края рисуется классом EdgeTreatment.

Давайте создадим форму. В этом примере мы создадим фигуру, представляющую билет:

Продвинутые формы для ваших Drawable

Прежде всего, вам нужно настроить ваш проект. Просто добавьте зависимость от материальных компонентов:

dependencies {
    // ...
    implementation 'com.google.android.material:material:<version>'
    // ...
  }

Теперь пришло время создать новый класс, который будет рисовать типичную форму билета.

Для этого мы расширим класс EdgeTreatment и нарисуем внутреннюю дугу.

Как видите, у объекта shapePath есть методы для рисования линий и кривых. Получив EdgeTreatment, мы можем создать ShapeAppearanceModel, настроив левый и правый края.

Теперь вы можете применить этот drawable программно. Дополнительный шаг, который я предлагаю — сделать его доступным также для макетов xml.

Теперь вы можете просто применить его таким образом:

...
android:background="@drawable/bg_ticket"
...

Готово! Ваш компонент готов к использованию в вашем приложении.

Вот еще примеры того, что вы могли бы сделать:

Продвинутые формы для ваших Drawable

Источник

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: