2015-04-25 3 views
0

Пару дней назад была выпущена версия библиотеки поддержки v22.1.0 и среди новых вещей, которые я видел DrawableCompat.Разница между DrawableCompat и Drawable

Теперь мой вопрос в том, в чем разница между DrawableCompat и нормальным Drawable, какие выгоды он приносит и когда и как его использовать.

Я читал Chris Banes' blog, но ему нечего правильно объяснить, что это такое и как оно может быть полезно для разработчиков.

ответ

4

Цитируя сообщение в блоге на вопрос:

The Drawable методы колеровки добавлены в леденец супер полезно дать вам динамически оттенок активов.

Здесь тонировка относится к Theme.Material/Theme.AppCompat подходу с использованием оттенков серого и применения вводимого коэффициента оттенков, как colorPrimary или colorAccent, чтобы связать их в пользовательскую тему для приложения. Это используется во многих местах, в частности во многих местах, где наблюдается цвет акцента.

Продолжая запись в блоге:

AppCompat имел свой собственный запеченные в реализации в библиотеке поддержки v21 и сейчас мы извлеченный, что в DrawableCompat в поддержку-v4 для каждого использования.

Следовательно, DrawableCompat позволяет использовать оттенок-The-полутоновое изображение appcompat-v7 делает для колеровки вводимого коэффициента, возвращаясь к уровню API 4. Это в отличие от аналогичных методов тонировки доступны на Drawable начиная с API Уровень 21. В частности, если вы создаете пользовательские виджеты и с использованием appcompat-v7, вы можете использовать DrawableCompat, чтобы позволить вашим виджетам принимать цветовую схему приложения.

чем разница между DrawableCompat и нормальной вытяжкой

DrawableCompat отходит от типичного ...Compat подхода. Классы типа NotificationCompat.Builder являются заменами для их предшественников (например, Notification.Builder). В этом случае DrawableCompat применяет определенные изменения, такие как оттенок, к другому Drawable, где этот другой переносимый «завернут» на DrawableCompat. DrawableCompat просто предоставляет API и возможности обтекания/разворота; это Drawable, который вы получаете от wrap(), который вы использовали бы в своем приложении, вместо использования начального оттенка серого Drawable, с которого вы начали.

Смежные вопросы