Затемнение Изображения В Collapsingtoolbarlayout Или Image Scrim

Здравствуйте, Хабражители и любители Android-разработки.

В этой статье я хочу поделиться с вами, как мне кажется, нужной и интересной информацией.

Речь пойдет о таком понятии, как Image Scrim (скажу сразу, это понятие я ввел сам).



Предисловие

Не так давно при разработке проекта я столкнулся с небольшой неприятностью.

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

Так как в этом проекте нужно было использовать современные решения, я решил реализовать всё это при нажатии на элемент в RecyclerView с помощью CollapsingToolbarLayout и вставке в него изображения.

Чтобы было понятнее, о чем я говорю (читай «не лей воду»), приведу пример:

Затемнение изображения в CollapsingToolbarLayout или Image Scrim

Как вы можете видеть на этой гифке, изображение расположено на белом фоне, и если бы не Image Scrim, который я реализовал, то заголовок изображения «Happy Octopus» не был бы виден (белый шрифт на белом изображении).

.

Ну а теперь приступим к реализации.



Выполнение

Фактически, так называемые Image Scrim — это обычные элементы View внутри CollapsingToolbarLayout. 1. В необходимом макете после изображения внутри CollapsingToolbarLayout создаем два кастомных представления, например так:
  
  
  
  
   

<android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" app:contentScrim="Эattr/colorPrimary" app:layout_scrollFlags="scroll|exitUntilCollapsed" app:expandedTitleTextAppearance="@style/TextAppearance.AppCompat.Large"> <ImageView android:id="@+id/image_shot" android:layout_width="match_parent" android:layout_height="@dimen/shot_image_height" android:background="@color/colorPrimary" android:scaleType="centerCrop" app:layout_collapseMode="parallax" /> <View android:layout_width="match_parent" android:layout_height="@dimen/text_scrim_height_top" android:background="@drawable/scrim_top" app:layout_collapseMode="pin"/> <View android:layout_width="match_parent" android:layout_height="88dp" android:layout_gravity="@dimen/text_scrim_height_bottom" android:layout_alignBottom="@+id/image_shot" android:background="@drawable/scrim_bottom"/>.



2. Создаем в drawable 2 файла, которые отвечают за тень от верхнего края и нижнего изображения и называем их соответственно: scrim_top.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android "> <gradient android:angle="270 " android:startColor="@color/translucent_scrim_top " android:centerColor="@color/translucent_scrim_top_center " android:endColor="@android:color/transparent"/ > </shape>

scrim_bottom.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android "> <gradient android:angle="90 " android:startColor="@color/translucent_scrim_bottom " android:centerColor="@color/translucent_scrim_bottom_center " android:endColor="@android:color/transparent"/ > </shape>

3. Добавляем цвета к цветам:

<color name="translucent_scrim_top">#33000000</color> <color name="translucent_scrim_top_center">#26000000</color> <color name="translucent_scrim_bottom">#4D000000</color> <color name="translucent_scrim_bottom_center">#40000000</color>

Вы можете поиграть с прозрачностью цветов, чтобы выбрать более плавные цвета.

4. Добавьте следующие строки в dimens.xml:

<dimen name="text_scrim_height_top">50dp</dimen> <dimen name="text_scrim_height_bottom">88dp</dimen>

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

P.S. Надеюсь, статья была полезной.

Буду рад ответить на все вопросы, если они у вас возникнут. П.

П.

С.

Следующая небольшая таблица с альфа-каналами цветов также может оказаться полезной для выбора желаемой прозрачности для Image Scrim.

Затемнение изображения в CollapsingToolbarLayout или Image Scrim

Теги: #Android #разработка для Android #мобильные приложения #разработка для Android #приложения для Android #Разработка мобильных приложений #разработка для Android

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.