Подтвердить что ты не робот

Что нового в Drawable Tinting в Android L Developer Preview по сравнению с предыдущей версией?

Я работаю над новым предварительным просмотром Android L и теперь имею в виду концепцию тонирования на растягиваемом.

Я хочу знать, есть ли что-то новое относительно растягивающейся тонировки в Android L Developer Preview.

Я прочитал эту эту документацию, в которой говорится:

Предварительный просмотр разработчика Android L позволяет определить растровые изображения или девять патчей в качестве альфа-масок и их оттенок с использованием цветового ресурса или атрибут темы, который разрешает цветовой ресурс (например, ?android:attr/colorPrimary). Вы можете создавать эти активы только один раз и цвет их автоматически соответствует вашей теме.

Но я не понял, как он отличается от предыдущей версии. Я знаю, как использовать ColorFilter или PorterDuffColorFilter для нанесения оттенка на изображение. Любая помощь в этом отношении будет оценена.

4b9b3361

Ответ 1

Начиная с L, вы можете указать оттенки в XML. Они могут ссылаться на атрибуты темы (как показано), списки состояния цвета, цветные ресурсы или явные шестнадцатеричные цветовые коды. По умолчанию режим оттенков - SRC_IN, но его можно установить на что-то еще, используя атрибут android: tintMode.

<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/my_icon"
    android:tint="?android:attr/colorControlNormal" />

Все элементы управления по умолчанию используются: android: attr/colorControlNormal для их нормального состояния (например, флажок снят) и? android: attr/colorControlActivated (который по умолчанию привязан к? android: attr/colorAccent) для их активированного состояния ( например, установленный флажок).

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

<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/my_icon"
    android:tint="?attr/myThemeAttribute" />

Ответ 2

с новой поддержкой Android поддержки 22.1 теперь будет больше поддержки тонирования!

Библиотека поддержки V4 служит основой большей части Библиотека поддержки Android и содержит множество классов, ориентированных на упрощая обратную совместимость.

Теперь DrawableCompat привносит верный оттенок обратно в API 4: просто оберните ваш Drawable через DrawableCompat.wrap(Drawable) и setTint(), setTintList() и setTintMode() будут работать: нет необходимости создавать и поддерживайте отдельные чертежи только для поддержки нескольких цветов!

Информация из блога Chris Banes:

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

Drawable drawable = ...;

// Wrap the drawable so that future tinting calls work
// on pre-v21 devices. Always use the returned drawable.
drawable = DrawableCompat.wrap(drawable);

// We can now set a tint
DrawableCompat.setTint(drawable, Color.RED);
// ...or a tint list
DrawableCompat.setTintList(drawable, myColorStateList);
// ...and a different tint mode
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_OVER);

Следует помнить, что после того, как вы назовете DrawableCompat.wrap(), вы не может полагаться на результат того же типа, что и вы его даете. Вместо этого вы должны использовать DrawableCompat.unwrap() для извлечения оригинал Drawable.

Внутри, теперь мы завершаем ваш Drawable в специальном 'tint drawable автоматически обновит цветной фильтр Drawables с указанный оттенок. Это позволяет нам обрабатывать экземпляры ColorStateList.

Но мне интересно, как его использовать xml!! есть опция под названием

<TintImageView
android:layout_width=""
android:layout_height="" 
android:src=""
android:backgroundTint="@color/green"/>

но если я хочу изменить выпадающий значок left | right для EditText TextView, то нет способа сделать это, я чувствую!