Android res values что это

Android | папка res / values

Папка res / values используется для хранения значений ресурсов, которые используются во многих проектах Android для включения функций цвета, стилей, размеров и т. Д.

Ниже поясняется несколько основных файлов, содержащихся в папке res / values:

    colors.xml : colors.xml — это файл XML, который используется для хранения цветов для ресурсов.

Проект Android содержит 3 основных цвета, а именно:

Эти цвета также используются в некоторых предустановленных ресурсах андроид-студии. Эти цвета должны быть непрозрачными, в противном случае могут возникнуть некоторые исключения.

Ниже упоминается реализация ресурса colors.xml:

«1.0» encoding= «utf-8» ?>

Примечание. Также возможно определить разные пользовательские цвета для разных типов ресурсов.

Dimens.xml : Dimens.xml используется для определения размеров для разных виджетов, которые будут включены в проект Android. Хорошей практикой кодирования является использование измерениеs.xml для определения измерения, а не просто запись измерения в ресурсе, поскольку в случае необходимости возникает необходимость изменить измерение, а не вносить изменения во все, только Dimens.xml может быть изменен один раз, и изменение отражается во всех.
Ниже упоминается реализация ресурса измерения. Xml:

Также возможно применять определяемые пользователем размеры.
Примечание: всегда помните разницу в использовании dp или sp. Обычно используйте sp для размера шрифта и dp для других.

strings.xml : один из наиболее важных и широко используемых файлов значений — это strings.xml из-за его применимости в проекте Android. Основная функция strings.xml состоит в том, чтобы определять строки в одном файле, чтобы легко использовать одну и ту же строку в разных позициях в проекте Android, а также сделать проект менее запутанным.
Мы также можем определить массив в этом файле.
Ниже упоминается реализация ресурса strings.xml:

«app_name» >Workshop app

«navigation_drawer_open» >Open navigation drawer

«navigation_drawer_close» >Close navigation drawer

«hello_blank_fragment» >Hello blank fragment

Студия Android выдает предупреждение в макете xmls, если в этом файле используется строка, поэтому рекомендуется хранить все жестко закодированные строки в файле strings.xml.

styles.xml : еще один важный файл в папке значений — это styles.xml, в котором определены все темы проекта Android. Базовая тема предоставляется по умолчанию с возможностью настройки или изменения настраиваемой темы. Каждая тема имеет родительский атрибут, который определяет основу темы. Есть много вариантов на выбор в зависимости от необходимости проекта Android.
Ниже упоминается реализация ресурса styles.xml:

«AppTheme.AppBarOverlay» parent= «ThemeOverlay.AppCompat.Dark.ActionBar»/>

«AppTheme.PopupOverlay» parent= «ThemeOverlay.AppCompat.Light»/>

Если какая-либо функция, используемая в файлах в папке значений, не совпадает с минимальной версией SDK пользователя, тогда Android Studio предоставляет возможность определить отдельный файл с тем же именем, но для другого уровня API. Например, стили и стили (v21) [для уровней API от 21 и выше].

Читайте также:  Что лучше эппл или андроид

Источник

Каково использование файла res / values ​​/ public.xml на Android?

Я искал в Google, но не смог найти никаких релевантных результатов.

Я также проверил официальные документы Android и эту страницу (для всех доступных ресурсов), что я смог найти. Соответствующие ссылки (в каталог res/values/ ), которые я нашел на этой странице, были:

  • Строковые ресурсы
  • Стиль ресурсов
  • Больше ресурсов

Эти страницы ничего не сообщают о файле res/values/public.xml .
Вот пример, который я нашел для этого типа файла .

Небольшой фрагмент

Как видно из атрибута type , он содержит почти все стандартные типы ресурсов, которые вы обычно помещаете в отдельные каталоги в каталоге res

Почему вы хотите неправильно использовать каталоги, которые предоставляет Android, и использовать один файл для хранения всех значений? Может ли кто-нибудь дать дополнительную информацию об этом?

Файл res / values ​​/ public.xml используется для назначения фиксированных идентификаторов ресурсов для ресурсов Android.

Рассмотрим этот набор строковых ресурсов в res / values ​​/ strings.xml :

Средство упаковки приложений для Android (aapt) может назначить следующие идентификаторы ресурсов для этих ресурсов при компиляции приложения:

Теперь измените набор строковых ресурсов на

И вы заметите, что идентификатор ресурса для @string/string3 изменился:

Чтобы предотвратить это, вы можете использовать res / values ​​/ public.xml :

Что приведет к присвоению идентификаторов ресурсов следующим образом:

Приложения редко используются для res / values ​​/ public.xml, поскольку идентификаторы ресурсов, назначенные ресурсам, не имеют значения. Когда они меняются, все приложение перестраивается, так что любые ссылки в Java-коде на ресурсы по идентификатору ресурса будут обновляться.

Самым значительным пользователем res / values ​​/ public.xml является сама платформа Android. Приложения, созданные против старых версий Android, предполагают, что определенный ресурс имеет определенный идентификатор ресурса. Например, в Android-ресурсе @android:style/Theme всегда должен быть ID ресурса 0x01030005, чтобы платформа была обратно совместима с приложениями, созданными против старых версий платформы.

Если вам интересно узнать больше о том, как назначаются идентификаторы ресурсов, обратитесь к этому ответу: Как работает сопоставление между ресурсами и ресурсами ресурсов android?

Разве это не файл для использования авторами кода ОС для определения сопоставления между символическими именами и идентификаторами системных ресурсов?

Вы найдете его в своем SDK в настройках YOUR_SDK_LOCATION \ platform \ android – ?? \ data \ res \.

Этот файл определяет базовые публичные ресурсы, экспортируемые платформой, которые всегда должны существовать

И имеет оговорку:

ВАЖНОЕ ЗАМЕЧАНИЕ ДЛЯ ЛЮБОГО ИЗМЕНЕНИЯ ЭТОГО ФАЙЛА ПРОЧИТАЙТЕ ЭТО ПЕРЕД ВЫПОЛНЕНИЕМ ЛЮБЫХ ИЗМЕНЕНИЙ

Этот файл определяет двоичную совместимость ресурсов. Таким образом, вы должны быть очень осторожны при внесении изменений здесь или полностью отказаться от совместимости со старыми приложениями

Читайте также:  У андроида есть драйвера

Он имеет такие записи, как

В нем – все системные воскресающие идентификаторы, поэтому любой, кто меняет записи, нарушит свой код, так как он не будет работать на стандартном устройстве.

Public.xml полезен для проектов библиотек в целом. Если вы включите public.xml, предполагается, что остальные ваши ресурсы должны быть частными.

Хотя частные ресурсы будут по-прежнему использоваться другими проектами, linter будет предупреждать об их использовании, и они не будут включены в автозаполнение AndroidStudio.

Источник

Урок 11. Папка res/values. Используем ресурсы приложения.

В этом уроке мы:

— узнаем, зачем нужна папка res/values, что в ней можно хранить и как использовать

В подпапках res хранятся различные ресурсы приложения. Мы уже отлично знаем про layout-файлы в папке res/layout. Я упоминал про папку res/drawable с density-суффиксами – в ней хранятся картинки. Теперь обратим внимание на папку res/values. Она предназначена для хранения ресурсов (констант) различных типов. Мы рассмотрим типы String и Color.

Project name: P0111_ResValues
Build Target: Android 2.3.3
Application name: ResValues
Package name: ru.startandroid.develop.resvalues
Create Activity: MainActivity

Откроем файл res/values/strings.xml

Мы видим два элемента типа String:

hello – по умолчанию он использован в свойстве Text в TextView в main.xml. И соответственно TextView отображает значение этого элемента.

app_name – по умолчанию используется как заголовок для приложения и Activity. Это указывается в манифест-файле, который мы еще не разбирали.

На эти элементы можно кликнуть и увидеть справа, что они собой представляют: имя (Name) и значение (Value)

Name – это ID. Оно должно быть уникальным, и для него в R.java создается константа, чтобы мы могли иметь доступ к этому String-элементу.

Если мы посмотрим XML-содержимое файла strings.xml (вкладка снизу – аналогично как для main.xml), то видим, что там все прозрачно и просто. Попробуем и мы использовать ресурсы.

Для начала создадим такой экран в main.xml:

version = «1.0» encoding = «utf-8» ?>

  • xmlns:android = «http://schemas.android.com/apk/res/android»
    android:layout_height = «match_parent»
    android:layout_width = «match_parent»
    android:orientation = «vertical» >
  • android:layout_width = «match_parent»
    android:id = «@+id/llTop»
    android:orientation = «vertical»
    android:layout_weight = «1»
    android:layout_height = «match_parent» >

    android:text = «TextView»
    android:layout_width = «wrap_content»
    android:layout_height = «wrap_content»
    android:layout_gravity = «center_horizontal»
    android:id = «@+id/tvTop»
    android:layout_marginTop = «30dp» >

    android:text = «Button»
    android:layout_height = «wrap_content»
    android:layout_gravity = «center_horizontal»
    android:id = «@+id/btnTop»
    android:layout_width = «wrap_content» >

    android:layout_width = «match_parent»
    android:id = «@+id/llBottom»
    android:orientation = «vertical»
    android:layout_weight = «1»
    android:layout_height = «match_parent» >

    android:text = «TextView»
    android:layout_width = «wrap_content»
    android:layout_height = «wrap_content»
    android:layout_gravity = «center_horizontal»
    android:id = «@+id/tvBottom»
    android:layout_marginTop = «30dp» >

    android:text = «Button»
    android:layout_width = «wrap_content»
    android:layout_height = «wrap_content»
    android:layout_gravity = «center_horizontal»
    android:id = «@+id/btnBottom» >

    Экран разделен на две одинаковые половины, содержащие LinearLayout, Button и TextView. Для LinearLayout мы укажем фоновый цвет, а для TextView и Button – изменим текст. Реализуем это с помощью ресурсов. Причем View-элементы верхней части мы будем настраивать вручную через properties, а нижнюю часть попробуем настроить программно.

    Читайте также:  Android bada или windows

    Давайте создадим свой файл с ресурсами в папке values, название пусть будет myres.

    После создания открылся редактор файла. Добавлять элемент просто – жмем кнопку Add и выбираем тип, а справа пишем имя и значение. Создадим 4 String-элемента и 2 Color-элемента:

    Для практики можете создать вручную, а можете просто вставить этот текст в содержимое myres.xml. Не забудьте сохранить. Заглянем в R.java, убедимся, что здесь все появилось:

    Ок, ресурсы созданы, настроим View-элементы на их использование. Сначала верхние:

    llTop – в Properties находим свойство Background, жмем кнопку выбора (три точки), в ветке Color выделяем llTopColor и жмем OK

    tvTop – для свойства Text откройте окно выбора и найдите там tvTopText.

    btnTop — для свойства Text откройте окно выбора и найдите там btnTopText.

    Цвет верхней части изменился и тексты поменялись на те, что мы указывали в myres.xml.

    Чтобы изменить нижнюю часть, будем кодить. Сначала находим элементы, потом присваиваем им значения.

    Обратите внимание на то, что для смены текста используется метод setText. Только это не тот же setText, что мы использовали, когда задавали текст напрямую. Этот на вход принимает ID и мы используем R.java, который хранит ID всех наших ресурсов. Т.е. методы называются одинаково, но на вход принимают разные параметры. Это нормальное явление в Java.

    Сохраняем, запускаем и проверяем. Теперь тексты и цвета взяты из файла ресурсов. Вы можете изменить содержимое myres.xml (например текст для верхней кнопки), сохранить, запустить приложение и увидите изменения.

    Иногда необходимо в коде получить не ID ресурса, а его значение. Это делается следующим образом:

    Выражение вернет текст «Нижний текст», соответствующий String-ресурсу с name = tvBottomText.

    Напоследок скажу пару слов об организации файлов для хранения ресурсов. Мы сейчас создали String и Color ресурсы в одном файле myres.xml, но рекомендуется их разделять по разным файлам (например strings.xml, colors.xml . ), и в дальнейшем я буду следовать этой рекомендации. Для этого есть причины, позже мы в этом убедимся.

    Имена ресурсов сквозные для всех файлов в папке res/values. Т.е. вы не можете в разных файлах создать ресурс с одним именем и типом.

    Имена файлов ресурсов могут быть произвольными и файлов можно создавать сколько угодно. В R.java попадут все ресурсы из этих файлов.

    На следующем уроке:

    — рассмотрим логи приложения и всплывающие сообщения

    Источник

  • Оцените статью