← Назад к вопросам

Что находится в каталоге resources

1.6 Junior🔥 151 комментариев
#Android компоненты#UI и вёрстка

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Содержимое каталога resources в Android-проекте

Каталог res (сокращение от resources) — это один из ключевых каталогов в структуре Android-проекта, предназначенный для хранения всех нефункциональных ресурсов приложения. Эти ресурсы отделены от кода (Java/Kotlin), что позволяет легко локализовать, адаптировать под разные конфигурации устройств и поддерживать код в чистоте.

Основные подкаталоги и типы ресурсов

1. Макеты (Layouts)

Располагаются в res/layout/. Содержат XML-файлы, определяющие пользовательский интерфейс активностей, фрагментов и других компонентов.

<!-- Пример: activity_main.xml -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</LinearLayout>

2. Изображения и иконки

  • res/drawable/ — для растровых изображений (PNG, JPEG, WebP) и векторной графики (XML).
  • res/mipmap/ — специально для иконок приложения, с оптимизацией под разные плотности экранов.

3. Значения (Values)

Каталог res/values/ содержит XML-файлы с простыми данными:

  • strings.xml — строковые ресурсы для локализации.
  • colors.xml — определение цветов.
  • styles.xml и themes.xml — стили и темы для единообразия UI.
  • dimens.xml — размеры (отступы, высоты).
<!-- Пример: strings.xml -->
<resources>
    <string name="app_name">MyApp</string>
    <string name="welcome_message">Welcome, %s!</string>
</resources>

<!-- Пример: colors.xml -->
<resources>
    <color name="primary_color">#3F51B5</color>
</resources>

4. Альтернативные ресурсы (Qualifiers)

Для поддержки разных конфигураций используются квалификаторы в названиях подкаталогов, например:

  • res/layout-land/ — макеты для альбомной ориентации.
  • res/values-ru/ — строки для русского языка.
  • res/drawable-hdpi/ — изображения для экранов с высокой плотностью.

5. Анимации

  • res/anim/ — XML-файлы для анимаций свойств View (прозрачность, перемещение).
  • res/animator/ — для более сложных анимаций через ObjectAnimator.

6. Меню (Menus)

res/menu/ — XML-описания меню (например, для Toolbar или OptionsMenu).

7. Сырые ресурсы (Raw)

res/raw/ — для произвольных файлов (аудио, видео, JSON), доступных как ресурсы через R.raw.*.

8. Ресурсы навигации (Navigation)

В современных проектах res/navigation/ содержит графы навигации между фрагментами.

9. XML-ресурсы

res/xml/ — для произвольных XML-файлов, используемых в runtime.

Ключевые особенности

  • Компиляция ресурсов: При сборке AAPT (Android Asset Packaging Tool) компилирует ресурсы в бинарный формат и генерирует класс R.java (или R.kt), содержащий уникальные идентификаторы каждого ресурса.
  • Доступ в коде: Ресурсы доступны через класс R:
    val text: String = getString(R.string.welcome_message)
    setContentView(R.layout.activity_main)
    
  • Доступ в XML: Через синтаксис @type/name:
    android:text="@string/welcome_message"
    android:background="@color/primary_color"
    

Важные аспекты

  • Имена файлов должны содержать только строчные латинские буквы, цифры и подчеркивания.
  • Многоязычная поддержка реализуется через создание папок с квалификаторами локали (например, values-es для испанского).
  • Адаптация под разные экраны требует ресурсов с квалификаторами плотности (mdpi, hdpi, xhdpi), размера (small, normal, large) и ориентации (land, port).

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