2010-04-13 3 views
41

Android поставляется с большим количеством системных ресурсов (android.R), который может быть использован, чтобы сэкономить ваше время и сделать ваше приложение более легким.Полезные системные ресурсы для Android

К примеру, недавно я обнаружил, что Android обеспечивает локализованные строки для Да (android.R.string.yes), No (android.R.string.no), Отменить (android.R.string.cancel) и Ok (android.R.string.ok), среди других строк.

Какие другие системные ресурсы вы рекомендуете использовать? Или есть причина, чтобы избежать использования системных ресурсов?

Edit: Как отмечает Томас, некоторые из этих ресурсов не может приводить к результатам, которые вы ожидаете (в частности, android.R.string.yes/no возвращает OK/Cancel вместо Yes/No, как сообщает here). Для большего контроля вы можете скопировать системные ресурсы из исходного кода Android.

+2

Как получить доступ к ним из xml? –

+0

«Или есть причина, чтобы избежать использования системных ресурсов?» - Если вы используете системные ресурсы, такие как значки, не гарантируется, что один и тот же значок доступен для всей версии Android, что может привести к непоследовательности вашего приложения , – codeMan

+0

Голосование, чтобы закрыть как слишком широкое/основанное на мнениях. –

ответ

46

Полный список всех системных ресурсов можно найти в android package.

Каждый раз, когда я хочу что-то сделать на Android, я проверяю, есть ли системный ресурс, который охватывает то, что я хочу делать. Полезно импортировать исходный код Android (в частности, their /res/ folder) при поиске уже реализованных ресурсов, которые вы, возможно, захотите, чтобы вы могли увидеть их конкретную реализацию.

Лично я считаю себя чаще всего с помощью:

  • Встроенный Android макетов для стандартных задач, таких как роллерных выпадающие.
  • Android иды (android.R.id), потому что часто требуется, чтобы использовать их, если вы хотите использовать некоторые из виджетов Android, (например, TabHost/TabWidget требует использования «android:id/tabhost», «android:id/tabs» и «android:id/tabcontent», если вы хотите реализовать XML-макет).
  • Встроенные цвета, особенно android.R.color.transparent.
  • Встроенная анимация в режиме «затухания» и «затухания» в формате android.R.anim.
+9

Имейте в виду, что эти ресурсы поставляются с вашим SDK. Посмотрите в каталоге 'data/res /' под определенным каталогом платформы. Я бы стал осторожным повторным использованием вещей, которые могут быть изменены OEM-производителями. Ресурсы с возможностью рисования были бы одной примерной проблемной областью. – CommonsWare

+0

@CommonsWare При работе на реальном устройстве, откуда загружаются ресурсы? – ThomasW

+0

@ThomasW: Помимо «где-то в прошивке устройства», я не могу сказать, поскольку я никогда не искал специфики. Сожалею! – CommonsWare

6

Как упоминалось в CommonsWare, вам не нужно загружать исходный репозиторий Android для проверки ресурсов; просто перейдите к <android-sdk-dir>/platforms/android-X.X/data/res/. Однако, если вы начнете использовать их, вы быстро разочаруетесь, обнаружив, что большинство из них: не, доступный через класс android.R. В большинстве случаев мне приходится импортировать их в рабочее пространство Eclipse. :-(

Мои любимые ресурсы - это чертежи, которые отображаются по-разному на основе сфокусированных/нажатых/отключенных состояний элемента управления (например, android.R.drawable.btn_default). Я использую их или настраиваю их для создания пользовательских кнопок для своих приложений Как вы можете видеть, посмотрите ли вы на /data/res/drawable/btn_default.xml, они определены как XML-элемент <selector>, который во время исполнения получает завышенный номер StateListDrawable. Вы также можете создать свой собственный StateListDrawables, и они очень полезны, как в виде фоновых изображений, так и в виде кнопки «соединение вытяжке» (см TextView.setCompoundDrawables()).

+0

Интересно, работает ли на реальном устройстве, откуда загружаются ресурсы? – ThomasW

1

Обратите внимание, что переводы действительно плохие.

Например, немецкий «нет» в android-25 «Abbrechen», что на самом деле означает «отменить». «Да» переводится как «ОК» ...

Я не уверен, насколько хороши другие языки, поэтому я бы использовал собственный перевод.

+0

Дело не в том, что переводы плохие. Как отметил О. П. в своем вопросе, '' android.R.string.yes/no' возвращает 'OK/Cancel' вместо' Yes/No'. Вероятно, это связано с тем, что разработчик считал, что 'android.R.string.yes/no' был более кратким, чем' android.R.string.ok/cancel'. – Patrick

+1

Кроме того, 'android.R.string.ok' похоже, что нет. Это «нормально» для каждого языка, который я тестировал. (Для некоторых языков «ОК» не подходит.) – ThomasW

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