Для обычных значков Android (например, значков контекстного меню) я обычно копирую стандартные значки Android в свой проект. Недавно я понял, что вы также можете получить эти значки из системы, используя android.R.drawable.blablabla
. Поэтому мой вопрос в том, есть ли какая-то причина предпочитать один подход над другим?
И если лучше использовать системные, как вы получаете доступ к ним в XML?
Благодарю!
Вы можете получить к ним доступ, добавив "@android", то есть:
<Image android:src="@android:drawable/ic_menu_add" android:layout_height="wrap_content" android:layout_width="wrap_content"/>
Если вы используете системные ресурсы, у вас будет меньше контроля над тем, как будет выглядеть репозиторий. Вы получите ressource, установленный на текущем устройстве, и который отличается по всем устройствам, производствам и версии Android.
Справочная система изображений
Общая рекомендация заключается в том, чтобы, по возможности, ссылаться на изображения системы
Как видите, в обоих решениях есть недостатки. Например, вы можете использовать черно-белый значок браузера, чтобы символизировать ссылку на браузер. Значок не экспортируется официально, поэтому вам нужно его скопировать. Но в этом случае вы должны повиноваться лицензии на используемые иллюстрации. Это включает в себя атрибуцию контента, созданного проектом Android Open Source (подробности см. В вашей копии файла лицензии)
Использование в XML
Вы всегда можете использовать префикс android: для ссылки на значки системы в своем приложении. Примером может служить
@android:drawable/ic_menu_add
Это относится и к строкам и другим ресурсам, например, к тексту "ОК".
Лучше скопировать их в свой проект, так как системные значки не гарантируются в будущих сборках или сохраняют одно и то же имя. Копирование их в ваш проект дает вашему приложению последовательный внешний вид и внешний вид в сборках и дает вам душевное спокойствие, что ваши значки всегда будут работать.