Можно ли рисовать фигуру как общий объект среди представлений

#android

#Android

Вопрос:

Я использовал фигуру, которую можно нарисовать из xml, в качестве src для 2 изображений в макете XML

Во втором представлении изображения я обновляю цвет изображения с зеленого на красный с помощью кода, который я заметил, что в первом представлении изображения его изображение было изменено на красный

Я думал, что у каждого imageview будет своя собственная версия drawable. Это общий объект? Должен ли я в этом случае создавать 2 разных рисованных XML-файла?

Ответ №1:

Это не очевидно, но это правда, состояние drawable является общим для разных экземпляров и разных ImageView. Я лично не так давно столкнулся с таким же неудобным поведением.

Доказательство можно найти здесь: https://developer.android.com/guide/topics/graphics/drawables

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

Но, к счастью, в Android SDK есть встроенное решение. Если вы уже меняете состояние drawable в коде, решение может пригодиться. Чтобы изменить состояние одного и только одного объекта для рисования, вы можете использовать метод Drawable.mutate() .

Источник: https://android-developers.googleblog.com/2009/05/drawable-mutations.html?m=1

Комментарии:

1. Потрясающе.. Спасибо