Рисуемый ресурс — это общая концепция графики, которую можно нарисовать на экране и которую можно получить с помощью API, например getDrawable(int) или применить к другому XML-ресурсу с такими атрибутами, как android:drawable и android:icon . Существует несколько типов чертежей:
-  Растровый файл
-  Растровый графический файл (PNG, WEBP, JPG или GIF). Создает BitmapDrawable.
-  Файл с девятью патчами
-  PNG-файл с растягиваемыми областями, позволяющими изменять размер изображений в зависимости от содержимого ( .9.png). СоздаетNinePatchDrawable.
-  Список слоев
-  Drawable, который управляет массивом других drawable. Они рисуются в порядке массива, поэтому элемент с наибольшим индексом отображается сверху. Создает LayerDrawable.
-  Государственный список
-  XML-файл, который ссылается на разные растровые изображения для разных состояний — например, для использования другого изображения при нажатии кнопки. Создает StateListDrawable.
-  Список уровней
-  XML-файл, определяющий объект рисования, который управляет несколькими альтернативными объектами рисования, каждому из которых присвоено максимальное числовое значение. Создает LevelListDrawable.
-  Переход с возможностью рисования
-  XML-файл, определяющий объект рисования, который может плавно переходить между двумя ресурсами рисования. Создает TransitionDrawable.
-  Вставка выдвижная
-  XML-файл, определяющий объект рисования, который вставляет другой объект рисования на указанное расстояние. Это полезно, когда представлению требуется фоновый рисунок, который меньше фактических границ представления.
-  Клип выдвижной
-  XML-файл, определяющий объект рисования, который отсекает другой объект рисования на основе текущего значения уровня этого объекта рисования. Создает ClipDrawable.
-  Масштабируемый
-  XML-файл, определяющий объект рисования, который изменяет размер другого объекта рисования в зависимости от его текущего значения уровня. Создает ScaleDrawable
-  Рисуемая форма .
-  XML-файл, определяющий геометрическую фигуру, включая цвета и градиенты. Создает GradientDrawable.
 Сведения о том, как создать AnimationDrawable , см. в документе ресурсов анимации .
 Примечание. Ресурс цвета также можно использовать как объект рисования в XML. Например, при создании списка состояний drawable вы можете ссылаться на ресурс цвета для атрибута android:drawable ( android:drawable="@color/green" ).
 Растровое изображение
 Растровое изображение. Android поддерживает растровые файлы в следующих форматах: PNG (предпочтительно), WEBP (предпочтительно, требуется уровень API 17 или выше), JPG (приемлемо), GIF (не рекомендуется).
 Вы можете напрямую ссылаться на растровый файл, используя имя файла в качестве идентификатора ресурса, или создать псевдоним идентификатора ресурса в XML.
 Примечание. Растровые файлы могут быть автоматически оптимизированы со сжатием изображений без потерь с помощью инструмента aapt во время процесса сборки. Например, полноцветный PNG, для которого не требуется более 256 цветов, можно преобразовать в 8-битный PNG с цветовой палитрой. В результате получается изображение одинакового качества, требующее меньше памяти.
 Поэтому имейте в виду, что двоичные файлы изображений, помещенные в этот каталог, могут измениться во время сборки. Если вы планируете читать изображение как битовый поток, чтобы преобразовать его в растровое изображение, вместо этого поместите изображения в папку res/raw/ , где они не оптимизированы.
 Растровый файл
 Растровый файл — это файл PNG, WEBP, JPG или GIF. Android создает ресурс Drawable для любого из этих файлов, когда вы сохраняете их в каталоге res/drawable/ .
-  расположение файла:
-  res/drawable/ filename .png(.png,.webp,.jpgили.gif)
 Имя файла — это идентификатор ресурса.
-  тип данных скомпилированного ресурса:
-  Указатель ресурса на BitmapDrawable
-  ссылка на ресурс:
-  В Java: R.drawable. filename
 В XML:@[ package :]drawable/ filename
-  пример:
-  Если изображение сохранено в res/drawable/myimage.png, этот XML-макет применяет изображение к представлению:<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/myimage" /> Следующий код приложения извлекает изображение как Drawable:
  Котлин val drawable: Drawable? = ResourcesCompat.getDrawable(resources, R.drawable.myimage, null)
 
-  см. также:
 XML-растровое изображение
 Растровое изображение XML — это ресурс, определенный в XML, который указывает на файл растрового изображения. Эффект представляет собой псевдоним для файла необработанного растрового изображения. XML может указывать дополнительные свойства растрового изображения, такие как сглаживание и мозаика.
 Примечание. Вы можете использовать элемент <bitmap> как дочерний элемент элемента <item> . Например, при создании списка состояний или списка слоев вы можете исключить атрибут android:drawable из элемента <item> и вложить в него <bitmap> , определяющий элемент, который можно рисовать.
-  расположение файла:
-  res/drawable/ filename .xml
 Имя файла — это идентификатор ресурса.
-  тип данных скомпилированного ресурса:
-  Указатель ресурса на BitmapDrawable
-  ссылка на ресурс:
-  В Java: R.drawable. filename
 В XML:@[ package :]drawable/ filename
-  синтаксис: 
- <?xml version="1.0" encoding="utf-8"?>
<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@[package:]drawable/drawable_resource"
    android:antialias=["true" | "false"]
    android:dither=["true" | "false"]
    android:filter=["true" | "false"]
    android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                      "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                      "center" | "fill" | "clip_vertical" | "clip_horizontal"]
    android:mipMap=["true" | "false"]
    android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
- элементы:
-  <bitmap>
-  Необходимый. Определяет источник растрового изображения и его свойства. Атрибуты: -  xmlns:android
-  Нить . Определяет пространство имен XML, которое должно иметь вид "http://schemas.android.com/apk/res/android". Это требуется только в том случае, если<bitmap>является корневым элементом. Это не требуется, если<bitmap>вложен внутри<item>.
-  android:src
-  Рисуемый ресурс . Необходимый . Ссылка на доступный ресурс.
-  android:antialias
-  Логическое значение . Включает или отключает сглаживание.
-  android:dither
-  Логическое значение . Включает или отключает сглаживание растрового изображения, если растровое изображение не имеет той же конфигурации пикселей, что и экран, например растровое изображение ARGB 8888 на экране RGB 565.
-  android:filter
-  Логическое значение . Включает или отключает фильтрацию растровых изображений. Фильтрация используется, когда растровое изображение сжимается или растягивается для сглаживания его внешнего вида.
-  android:gravity
-  Ключевое слово . Определяет гравитацию растрового изображения. Гравитация указывает, где расположить объект рисования в контейнере, если растровое изображение меньше контейнера. Должно быть одно или несколько из следующих значений констант, разделенных |:
 | Ценить | Описание | 
|---|
 | top | Поместите объект вверху контейнера, не меняя его размера. |  | bottom | Поместите объект на дно контейнера, не меняя его размера. |  | left | Поместите объект у левого края контейнера, не меняя его размера. |  | right | Поместите объект у правого края контейнера, не меняя его размера. |  | center_vertical | Поместите объект в вертикальный центр его контейнера, не меняя его размера. |  | fill_vertical | При необходимости увеличьте вертикальный размер объекта, чтобы он полностью заполнил контейнер. |  | center_horizontal | Разместите объект в горизонтальном центре его контейнера, не меняя его размера. |  | fill_horizontal | При необходимости увеличьте горизонтальный размер объекта, чтобы он полностью заполнил контейнер. |  | center | Поместите объект в центр контейнера как по вертикальной, так и по горизонтальной оси, не меняя его размера. |  | fill | При необходимости увеличьте горизонтальный и вертикальный размер объекта, чтобы он полностью заполнил контейнер. Это значение по умолчанию. |  | clip_vertical | Дополнительная опция, которую можно настроить так, чтобы верхние и/или нижние края дочернего элемента были обрезаны до границ его контейнера. Зажим основан на вертикальной силе тяжести: верхняя сила тяжести зажимает нижний край, нижняя сила тяжести зажимает верхний край, и ни один из них не зажимает оба края. |  | clip_horizontal | Дополнительная опция, которую можно настроить так, чтобы левый и/или правый края дочернего элемента были обрезаны до границ его контейнера. Зажим основан на горизонтальной силе тяжести: левая сила тяжести зажимает правый край, правая сила тяжести зажимает левый край, и ни один из них не зажимает оба края. |  
 
-  android:mipMap
-  Логическое значение . Включает или отключает подсказку MIP-карты. См. setHasMipMap()для получения дополнительной информации. Значение по умолчанию — ложь.
-  android:tileMode
-  Ключевое слово . Определяет режим плитки. Когда режим плитки включен, растровое изображение повторяется. Гравитация игнорируется, когда включен режим плитки. Должно быть одно из следующих постоянных значений: | Ценить | Описание | 
|---|
 | disabled | Не размещайте растровое изображение плиткой. Это значение по умолчанию. |  | clamp | Реплицируйте цвет края, если шейдер выходит за пределы исходных границ. |  | repeat | Повторите изображение шейдера по горизонтали и вертикали. |  | mirror | Повторяйте изображение шейдера по горизонтали и вертикали, чередуя зеркальные изображения, чтобы соседние изображения всегда совпадали. |  
 
 
 
-  пример: 
- <?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/icon"
    android:tileMode="repeat" />
- см. также:
 Девять патчей
 NinePatch — это изображение PNG, в котором вы можете определить растягиваемые области, которые Android масштабирует, когда содержимое в представлении выходит за обычные границы изображения. Обычно вы назначаете этот тип изображения в качестве фона представления, у которого хотя бы одно измерение имеет значение "wrap_content" .
 Когда представление увеличивается, чтобы вместить содержимое, изображение из девяти фрагментов также масштабируется в соответствии с размером представления. Примером использования изображения из девяти патчей является фон, используемый стандартным виджетом Android Button , который должен растягиваться, чтобы разместить текст (или изображение) внутри кнопки.
 Как и в случае с обычным растровым изображением , вы можете ссылаться на файл с девятью исправлениями напрямую или из ресурса, определенного XML.
 Подробное обсуждение того, как создать файл с девятью исправлениями и растягиваемыми областями, см. в разделе Создание растровых изображений с изменяемым размером (файлы с девятью исправлениями) .
 Файл с девятью патчами
-  расположение файла:
-  res/drawable/ filename .9.png
 Имя файла — это идентификатор ресурса.
-  тип данных скомпилированного ресурса:
-  Указатель ресурса на NinePatchDrawable
-  ссылка на ресурс:
-  В Java: R.drawable. filename
 В XML:@[ package :]drawable/ filename
-  пример:
-  С изображением, сохраненным в res/drawable/myninepatch.9.png, этот XML-макет применяет девять патчей к представлению:<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/myninepatch" />
- см. также:
 XML с девятью исправлениями
 XML-файл с девятью исправлениями — это ресурс, определенный в XML, который указывает на файл с девятью исправлениями. XML может указывать сглаживание изображения.
-  расположение файла:
-  res/drawable/ filename .xml
 Имя файла — это идентификатор ресурса.
-  тип данных скомпилированного ресурса:
-  Указатель ресурса на NinePatchDrawable
-  ссылка на ресурс:
-  В Java: R.drawable. filename
 В XML:@[ package :]drawable/ filename
-  синтаксис: 
- <?xml version="1.0" encoding="utf-8"?>
<nine-patch
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@[package:]drawable/drawable_resource"
    android:dither=["true" | "false"] />
- элементы:
-  <nine-patch>
-  Необходимый. Определяет источник девяти патчей и его свойства. Атрибуты: -  xmlns:android
-  Нить . Необходимый. Определяет пространство имен XML, которое должно иметь вид "http://schemas.android.com/apk/res/android".
-  android:src
-  Рисуемый ресурс . Необходимый . Ссылка на файл с девятью исправлениями.
-  android:dither
-  Логическое значение . Включает или отключает сглаживание растрового изображения, если растровое изображение не имеет той же конфигурации пикселей, что и экран, например растровое изображение ARGB 8888 на экране RGB 565.
 
 
-  пример: 
- <?xml version="1.0" encoding="utf-8"?>
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/myninepatch"
    android:dither="false" />
 Список слоев
 LayerDrawable — это объект рисования, который управляет массивом других объектов рисования. Каждый рисунок в списке рисуется в порядке списка. Последний объект в списке рисуется сверху.
 Каждый объект рисования представлен элементом <item> внутри одного элемента <layer-list> .
-  расположение файла:
-  res/drawable/ filename .xml
 Имя файла — это идентификатор ресурса.
-  тип данных скомпилированного ресурса:
-  Указатель ресурса на LayerDrawable
-  ссылка на ресурс:
-  В Java: R.drawable. filename
 В XML:@[ package :]drawable/ filename
-  синтаксис: 
- <?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:id="@[+][package:]id/resource_name"
        android:top="dimension"
        android:right="dimension"
        android:bottom="dimension"
        android:left="dimension" />
</layer-list>
- элементы:
-  <layer-list>
-  Необходимый. Это должен быть корневой элемент. Содержит один или несколько элементов <item>. Атрибуты: -  xmlns:android
-  Нить . Необходимый. Определяет пространство имен XML, которое должно иметь вид "http://schemas.android.com/apk/res/android".
 
-  <item>
-  Определяет объект рисования для размещения в объекте рисования слоя в положении, определяемом его атрибутами. Должен быть дочерним элементом элемента <layer-list>. Принимает дочерние элементы<bitmap>. Атрибуты: -  android:drawable
-  Рисуемый ресурс . Необходимый . Ссылка на доступный ресурс.
-  android:id
-  Идентификатор ресурса . Уникальный идентификатор ресурса для этого объекта. Чтобы создать новый идентификатор ресурса для этого элемента, используйте форму: "@+id/ name ". Символ плюса указывает, что он создан как новый идентификатор. Вы можете использовать этот идентификатор для получения и изменения объекта рисования с помощьюView.findViewById()илиActivity.findViewById().
-  android:top
-  Измерение . Верхнее смещение как значение размера или ресурс измерения .
-  android:right
-  Измерение . Правое смещение в виде значения измерения или ресурса измерения .
-  android:bottom
-  Измерение . Нижнее смещение в виде значения размера или ресурса измерения .
-  android:left
-  Измерение . Смещение слева в виде значения измерения или ресурса измерения .
  По умолчанию все рисуемые элементы масштабируются в соответствии с размером содержащего их представления. Таким образом, размещение изображений в списке слоев в разных позициях может увеличить размер изображения, а некоторые изображения масштабируются соответствующим образом.  Чтобы избежать масштабирования элементов в списке, используйте элемент <bitmap>внутри элемента<item>, чтобы указать рисуемый объект и определить гравитацию для чего-то, что не масштабируется, например"center". Например, следующий<item>определяет элемент, который масштабируется в соответствии с представлением контейнера:
 <item android:drawable="@drawable/image" /> Чтобы избежать масштабирования, в следующем примере используется элемент <bitmap>с центрированной гравитацией:
 <item>
  <bitmap android:src="@drawable/image"
          android:gravity="center" />
</item>
 
-  пример:
-  XML-файл, сохраненный в res/drawable/layers.xml:<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
      <bitmap android:src="@drawable/android_red"
        android:gravity="center" />
    </item>
    <item android:top="10dp" android:left="10dp">
      <bitmap android:src="@drawable/android_green"
        android:gravity="center" />
    </item>
    <item android:top="20dp" android:left="20dp">
      <bitmap android:src="@drawable/android_blue"
        android:gravity="center" />
    </item>
</layer-list>В этом примере используется вложенный элемент <bitmap>для определения рисуемого ресурса для каждого элемента с"center"силой тяжести. Это гарантирует, что ни одно из изображений не будет масштабировано в соответствии с размером контейнера из-за изменения размера, вызванного смещением изображений.
  Этот XML-макет применяет возможность рисования к представлению:  <ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/layers" />В результате получается стопка изображений со все большим смещением:  
-  см. также:
 Государственный список
 StateListDrawable — это рисуемый объект, определенный в XML, который использует несколько изображений для представления одной и той же графики, в зависимости от состояния объекта. Например, виджет Button может находиться в состоянии касания, фокусировки или ни того, ни другого; используя рисуемый список состояний, вы можете предоставить различное фоновое изображение для каждого состояния.
 Вы описываете список состояний в файле XML. Каждое изображение представлено элементом <item> внутри одного элемента <selector> . Каждый <item> использует различные атрибуты для описания состояния, в котором он используется в качестве изображения для рисуемого объекта.
 При каждом изменении состояния список состояний просматривается сверху вниз и используется первый элемент, соответствующий текущему состоянию. Выбор основан не на «наилучшем совпадении», а на первом элементе, который соответствует минимальным критериям штата.
-  расположение файла:
-  res/drawable/ filename .xml
 Имя файла — это идентификатор ресурса.
-  тип данных скомпилированного ресурса:
-  Указатель ресурса на StateListDrawable
-  ссылка на ресурс:
-  В Java: R.drawable. filename
 В XML:@[ package :]drawable/ filename
-  синтаксис: 
- <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:constantSize=["true" | "false"]
    android:dither=["true" | "false"]
    android:variablePadding=["true" | "false"] >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:state_pressed=["true" | "false"]
        android:state_focused=["true" | "false"]
        android:state_hovered=["true" | "false"]
        android:state_selected=["true" | "false"]
        android:state_checkable=["true" | "false"]
        android:state_checked=["true" | "false"]
        android:state_enabled=["true" | "false"]
        android:state_activated=["true" | "false"]
        android:state_window_focused=["true" | "false"] />
</selector>
-  элементы:
-  <selector>
-  Необходимый. Это должен быть корневой элемент. Содержит один или несколько элементов <item>. Атрибуты: -  xmlns:android
-  Нить . Необходимый. Определяет пространство имен XML, которое должно иметь вид "http://schemas.android.com/apk/res/android".
-  android:constantSize
-  Логическое значение . Истинно, если сообщаемый внутренний размер рисуемого объекта остается постоянным при изменении состояния (размер является максимальным из всех состояний); false, если размер меняется в зависимости от текущего состояния. По умолчанию — ложь.
-  android:dither
-  Логическое значение . Значение true, чтобы включить сглаживание растрового изображения, если растровое изображение не имеет той же конфигурации пикселей, что и экран, например растровое изображение ARGB 8888 на экране RGB 565; false, чтобы отключить сглаживание. По умолчанию это правда.
-  android:variablePadding
-  Логическое значение . True, если заполнение рисуемого объекта изменяется в зависимости от текущего выбранного состояния; false, если заполнение должно оставаться прежним, исходя из максимального заполнения всех состояний. Включение этой функции требует, чтобы вы выполняли макет при изменении состояния, что часто не поддерживается. По умолчанию — ложь.
 
-  <item>
-  Определяет объект Drawable, который будет использоваться в определенных состояниях, как описано его атрибутами. Должен быть дочерним элементом элемента <selector>. Атрибуты: -  android:drawable
-  Рисуемый ресурс . Необходимый . Ссылка на доступный ресурс.
-  android:state_pressed
-  Логическое значение . True, если этот элемент используется при касании объекта, например при нажатии кнопки; false, если этот элемент используется по умолчанию, в неиспользуемом состоянии.
-  android:state_focused
-  Логическое значение . True, если этот элемент используется, когда объект имеет фокус ввода, например, когда пользователь выбирает ввод текста; false, если этот элемент используется по умолчанию, в несфокусированном состоянии.
-  android:state_hovered
-  Логическое значение . True, если этот элемент используется при наведении курсора на объект; false, если этот элемент используется по умолчанию, без наведения. Часто этот объект рисования может быть тем же объектом, который используется для «сфокусированного» состояния. Представлено на уровне API 14. 
-  android:state_selected
-  Логическое значение . True, если этот элемент используется, когда объект является текущим выбором пользователя при навигации с помощью элемента управления направлением, например, при навигации по списку с помощью крестовины; false, если этот элемент используется, когда объект не выбран. Выбранное состояние используется, когда android:state_focusedнедостаточно, например, когда представление списка имеет фокус и элемент внутри него выбирается с помощью D-pad.
 
-  android:state_checkable
-  Логическое значение . Истинно, если этот элемент используется, когда объект доступен для выбора; false, если этот элемент используется, когда объект недоступен для выбора. Полезно только в том случае, если объект может переходить между выбираемым и невыбираемым виджетом.
-  android:state_checked
-  Логическое значение . True, если этот элемент используется при выборе объекта; false, если он используется, когда объект не выбран.
-  android:state_enabled
-  Логическое значение . True, если этот элемент используется, когда объект включен, то есть способен получать события касания или щелчка; false, если он используется, когда объект отключен.
-  android:state_activated
-  Логическое значение . True, если этот элемент используется, когда объект активируется в качестве постоянного выбора, например, для «выделения» ранее выбранного элемента списка в постоянном представлении навигации; false, если он используется, когда объект не активирован. Представлено на уровне API 11. 
-  android:state_window_focused
-  Логическое значение . Значение true, если этот элемент используется, когда окно приложения находится в фокусе, то есть приложение находится на переднем плане; false, если этот элемент используется, когда окно приложения не имеет фокуса, например, если шторка уведомления опущена или появляется диалоговое окно.
  Примечание. Android применяет первый элемент в списке состояний, соответствующий текущему состоянию объекта. Таким образом, если первый элемент в списке не содержит ни одного из предыдущих атрибутов состояния, он применяется каждый раз. Вот почему вы хотите, чтобы значение по умолчанию всегда было последним, как показано в следующем примере. 
 
-  пример:
-  XML-файл, сохраненный в res/drawable/button.xml:<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@drawable/button_pressed" /> <!-- pressed -->
    <item android:state_focused="true"
          android:drawable="@drawable/button_focused" /> <!-- focused -->
    <item android:state_hovered="true"
          android:drawable="@drawable/button_focused" /> <!-- hovered -->
    <item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>Этот XML-макет применяет список состояний, который можно нарисовать к кнопке:  <Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/button" />
-  см. также:
 Список уровней
 Drawable, который управляет несколькими альтернативными drawables, каждому из которых присвоено максимальное числовое значение. Установка значения уровня объекта drawable с помощью setLevel() загружает ресурс drawable в список уровней, который имеет значение android:maxLevel большее или равное значению, переданному методу.
-  расположение файла:
-  res/drawable/ filename .xml
 Имя файла — это идентификатор ресурса.
-  тип данных скомпилированного ресурса:
-  Указатель ресурса на LevelListDrawable
-  ссылка на ресурс:
-  В Java: R.drawable. filename
 В XML:@[ package :]drawable/ filename
-  синтаксис: 
- <?xml version="1.0" encoding="utf-8"?>
<level-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/drawable_resource"
        android:maxLevel="integer"
        android:minLevel="integer" />
</level-list>
-  элементы:
-  <level-list>
-  Необходимый. Это должен быть корневой элемент. Содержит один или несколько элементов <item>. Атрибуты: -  xmlns:android
-  Нить . Необходимый. Определяет пространство имен XML, которое должно иметь вид "http://schemas.android.com/apk/res/android".
 
-  <item>
-  Определяет объект для использования на определенном уровне. Атрибуты: -  android:drawable
-  Рисуемый ресурс . Необходимый . Ссылка на доступный ресурс для вставки.
-  android:maxLevel
-  Целое число . Максимальный уровень, разрешенный для этого предмета.
-  android:minLevel
-  Целое число . Минимальный уровень, разрешенный для этого предмета.
 
 
-  пример: 
- <?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/status_off"
        android:maxLevel="0" />
    <item
        android:drawable="@drawable/status_on"
        android:maxLevel="1" />
</level-list>- Как только это будет применено к - View, уровень можно будет изменить с помощью- setLevel()или- setImageLevel().
 
-  см. также:
 Переход с возможностью рисования
 TransitionDrawable — это рисуемый объект, который может плавно переходить между двумя другими рисуемыми ресурсами.
 Каждый объект рисования представлен элементом <item> внутри одного элемента <transition> . Поддерживается не более двух элементов. Чтобы перейти вперед, вызовите startTransition() . Чтобы перейти назад, вызовите reverseTransition() .
-  расположение файла:
-  res/drawable/ filename .xml
 Имя файла — это идентификатор ресурса.
-  тип данных скомпилированного ресурса:
-  Указатель ресурса на TransitionDrawable
-  ссылка на ресурс:
-  В Java: R.drawable. filename
 В XML:@[ package :]drawable/ filename
-  синтаксис: 
- <?xml version="1.0" encoding="utf-8"?>
<transition
xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:id="@[+][package:]id/resource_name"
        android:top="dimension"
        android:right="dimension"
        android:bottom="dimension"
        android:left="dimension" />
</transition>
-  элементы:
-  <transition>
-  Необходимый. Это должен быть корневой элемент. Содержит один или несколько элементов <item>. Атрибуты: -  xmlns:android
-  Нить . Необходимый. Определяет пространство имен XML, которое должно иметь вид "http://schemas.android.com/apk/res/android".
 
-  <item>
-  Определяет объект рисования, который будет использоваться как часть рисуемого перехода. Должен быть дочерним элементом элемента <transition>. Принимает дочерние элементы<bitmap>. Атрибуты: -  android:drawable
-  Рисуемый ресурс . Необходимый . Ссылка на доступный ресурс.
-  android:id
-  Идентификатор ресурса . Уникальный идентификатор ресурса для этого объекта. Чтобы создать новый идентификатор ресурса для этого элемента, используйте форму: "@+id/ name ". Символ плюса указывает, что он создан как новый идентификатор. Вы можете использовать этот идентификатор для получения и изменения объекта рисования с помощьюView.findViewById()илиActivity.findViewById().
-  android:top
-  Целое число . Верхнее смещение в пикселях.
-  android:right
-  Целое число . Правое смещение в пикселях.
-  android:bottom
-  Целое число . Нижнее смещение в пикселях.
-  android:left
-  Целое число . Смещение слева в пикселях.
 
 
-  пример:
-  XML-файл, сохраненный в res/drawable/transition.xml:<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/on" />
    <item android:drawable="@drawable/off" />
</transition>Этот XML-макет применяет возможность рисования к представлению:  <ImageButton
    android:id="@+id/button"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/transition" />А следующий код выполняет переход за 500 мс от первого элемента ко второму:   Котлин val button: ImageButton = findViewById(R.id.button)
val drawable: Drawable = button.drawable
if (drawable is TransitionDrawable) {
    drawable.startTransition(500)
} Ява ImageButton button = (ImageButton) findViewById(R.id.button);
Drawable drawable = button.getDrawable();
if (drawable instanceof TransitionDrawable) {
    ((TransitionDrawable) drawable).startTransition(500);
}
-  см. также:
 Вставка выдвижная
 Объект рисования, определенный в XML, который вставляет другой объект рисования на указанное расстояние. Это полезно, когда для представления требуется фон, который меньше фактических границ представления.
-  расположение файла:
-  res/drawable/ filename .xml
 Имя файла — это идентификатор ресурса.
-  тип данных скомпилированного ресурса:
-  Указатель ресурса на InsetDrawable
-  ссылка на ресурс:
-  В Java: R.drawable. filename
 В XML:@[ package :]drawable/ filename
-  синтаксис: 
- <?xml version="1.0" encoding="utf-8"?>
<inset
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/drawable_resource"
    android:insetTop="dimension"
    android:insetRight="dimension"
    android:insetBottom="dimension"
    android:insetLeft="dimension" />
-  элементы:
-  <inset>
-  Необходимый. Определяет возможность рисования вставки. Это должен быть корневой элемент. Атрибуты: -  xmlns:android
-  Нить . Необходимый. Определяет пространство имен XML, которое должно иметь вид "http://schemas.android.com/apk/res/android".
-  android:drawable
-  Рисуемый ресурс . Необходимый . Ссылка на доступный ресурс для вставки.
-  android:insetTop
-  Измерение . Верхняя вставка — значение измерения или ресурс измерения .
-  android:insetRight
-  Измерение . Правая вставка в виде значения измерения или ресурса измерения .
-  android:insetBottom
-  Измерение . Нижняя вставка — значение измерения или ресурс измерения .
-  android:insetLeft
-  Измерение . Левая вставка — значение измерения или ресурс измерения .
 
 
-  пример: 
- <?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/background"
    android:insetTop="10dp"
    android:insetLeft="10dp" />
-  см. также:
 Клип выдвижной
 Объект рисования, определенный в XML, который отсекает другой объект рисования на основе текущего уровня этого объекта рисования. Вы можете контролировать, насколько обрезается дочерний объект по ширине и высоте в зависимости от уровня, а также гравитацию, чтобы контролировать, где он размещается в общем контейнере. Чаще всего используется для реализации таких вещей, как индикаторы выполнения.
-  расположение файла:
-  res/drawable/ filename .xml
 Имя файла — это идентификатор ресурса.
-  тип данных скомпилированного ресурса:
-  Указатель ресурса на ClipDrawable
-  ссылка на ресурс:
-  В Java: R.drawable. filename
 В XML:@[ package :]drawable/ filename
-  синтаксис: 
- <?xml version="1.0" encoding="utf-8"?>
<clip
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/drawable_resource"
    android:clipOrientation=["horizontal" | "vertical"]
    android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                     "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                     "center" | "fill" | "clip_vertical" | "clip_horizontal"] />
-  элементы:
-  <clip>
-  Необходимый. Определяет клип, который можно рисовать. Это должен быть корневой элемент. Атрибуты: -  xmlns:android
-  Нить . Необходимый. Определяет пространство имен XML, которое должно иметь вид "http://schemas.android.com/apk/res/android".
-  android:drawable
-  Рисуемый ресурс . Необходимый . Ссылка на ресурс, который можно обрезать.
-  android:clipOrientation
-  Ключевое слово . Ориентация клипа. Должно быть одно из следующих постоянных значений: | Ценить | Описание | 
|---|
 | horizontal | Закрепите выдвижной элемент горизонтально. |  | vertical | Закрепите вытягиваемый вертикально. |  
 
-  android:gravity
-  Ключевое слово . Указывает, где обрезать рисунок. Должно быть одно или несколько из следующих значений констант, разделенных |:
 | Ценить | Описание | 
|---|
 | top | Поместите объект вверху контейнера, не меняя его размера. Когда clipOrientationимеет значение"vertical", обрезка происходит в нижней части рисуемого объекта. |  | bottom | Поместите объект на дно контейнера, не меняя его размера. Когда clipOrientationимеет значение"vertical", обрезка происходит в верхней части рисуемого объекта. |  | left | Поместите объект у левого края контейнера, не меняя его размера. Это значение по умолчанию. Когда clipOrientationимеет значение"horizontal", обрезка происходит с правой стороны рисуемого объекта. |  | right | Поместите объект у правого края контейнера, не меняя его размера. Когда clipOrientationимеет значение"horizontal", обрезка происходит с левой стороны рисуемого объекта. |  | center_vertical | Поместите объект в вертикальный центр его контейнера, не меняя его размера. Отсечение ведет себя так же, как и в случае, когда гравитация находится в "center". |  | fill_vertical | При необходимости увеличьте вертикальный размер объекта, чтобы он полностью заполнил контейнер. Когда clipOrientationимеет значение"vertical", обрезка не происходит, поскольку рисуемый объект заполняет вертикальное пространство (если только уровень рисования не равен 0, в этом случае он не виден). |  | center_horizontal | Поместите объект в горизонтальный центр его контейнера, не меняя его размера. Отсечение ведет себя так же, как и в случае, когда гравитация находится в "center". |  | fill_horizontal | При необходимости увеличьте горизонтальный размер объекта, чтобы он полностью заполнил контейнер. Когда clipOrientationимеет значение"horizontal", обрезка не происходит, поскольку рисуемый объект заполняет горизонтальное пространство (если только уровень рисования не равен 0, в этом случае он не виден). |  | center | Поместите объект в центр контейнера как по вертикальной, так и по горизонтальной оси, не меняя его размера. Когда clipOrientationимеет значение"horizontal", обрезка происходит слева и справа. КогдаclipOrientationимеет значение"vertical", обрезка происходит сверху и снизу. |  | fill | При необходимости увеличьте горизонтальный и вертикальный размер объекта, чтобы он полностью заполнил контейнер. Никакого отсечения не происходит, поскольку рисуемый объект заполняет горизонтальное и вертикальное пространство (если только уровень рисования не равен 0, в этом случае он не виден). |  | clip_vertical | Дополнительная опция, которую можно настроить так, чтобы верхние и/или нижние края дочернего элемента были обрезаны до границ его контейнера. Зажим основан на вертикальной силе тяжести: верхняя сила тяжести зажимает нижний край, нижняя сила тяжести зажимает верхний край, и ни один из них не зажимает оба края. |  | clip_horizontal | Дополнительная опция, которую можно настроить так, чтобы левый и/или правый края дочернего элемента были обрезаны до границ его контейнера. Зажим основан на горизонтальной силе тяжести: левая сила тяжести зажимает правый край, правая сила тяжести зажимает левый край, и ни один из них не зажимает оба края. |  
 
 
 
-  пример:
-  XML-файл, сохраненный в res/drawable/clip.xml:<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/android"
    android:clipOrientation="horizontal"
    android:gravity="left" />Следующий XML макета применяет клип, который можно рисовать, к представлению:  <ImageView
    android:id="@+id/image"
    android:src="@drawable/clip"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" />Следующий код получает возможность рисования и увеличивает объем обрезки для постепенного раскрытия изображения:   Котлин val imageview: ImageView = findViewById(R.id.image)
val drawable: Drawable = imageview.background
if (drawable is ClipDrawable) {
    drawable.level = drawable.level + 1000
} Ява ImageView imageview = (ImageView) findViewById(R.id.image);
Drawable drawable = imageview.getBackground();
if (drawable instanceof ClipDrawable) {
    ((ClipDrawable)drawable).setLevel(drawable.getLevel() + 1000);
}
 Увеличение уровня уменьшает количество обрезки и медленно раскрывает изображение. Вот он на уровне 7000:   Примечание. Уровень по умолчанию — 0, который полностью обрезается, поэтому изображение не видно. Когда уровень равен 10 000, изображение не обрезается и полностью видно. 
-  см. также:
 Масштабируемый
 Объект Drawable, определенный в XML, который изменяет размер другого объекта Drawable в зависимости от его текущего уровня.
-  расположение файла:
-  res/drawable/ filename .xml
 Имя файла — это идентификатор ресурса.
-  тип данных скомпилированного ресурса:
-  Указатель ресурса на ScaleDrawable
-  ссылка на ресурс:
-  В Java: R.drawable. filename
 В XML:@[ package :]drawable/ filename
-  синтаксис: 
- <?xml version="1.0" encoding="utf-8"?>
<scale
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/drawable_resource"
    android:scaleGravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                          "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                          "center" | "fill" | "clip_vertical" | "clip_horizontal"]
    android:scaleHeight="percentage"
    android:scaleWidth="percentage" />
-  элементы:
-  <scale>
-  Необходимый. Определяет масштаб рисования. Это должен быть корневой элемент. Атрибуты: -  xmlns:android
-  Нить . Необходимый. Определяет пространство имен XML, которое должно иметь вид "http://schemas.android.com/apk/res/android".
-  android:drawable
-  Рисуемый ресурс . Необходимый . Ссылка на доступный ресурс.
-  android:scaleGravity
-  Ключевое слово . Указывает положение гравитации после масштабирования. Должно быть одно или несколько из следующих значений констант, разделенных |:
 | Ценить | Описание | 
|---|
 | top | Поместите объект вверху контейнера, не меняя его размера. |  | bottom | Поместите объект на дно контейнера, не меняя его размера. |  | left | Поместите объект у левого края контейнера, не меняя его размера. Это значение по умолчанию. |  | right | Поместите объект у правого края контейнера, не меняя его размера. |  | center_vertical | Поместите объект в вертикальный центр его контейнера, не меняя его размера. |  | fill_vertical | При необходимости увеличьте вертикальный размер объекта, чтобы он полностью заполнил контейнер. |  | center_horizontal | Поместите объект в горизонтальный центр его контейнера, не меняя его размера. |  | fill_horizontal | При необходимости увеличьте горизонтальный размер объекта, чтобы он полностью заполнил контейнер. |  | center | Поместите объект в центр контейнера как по вертикальной, так и по горизонтальной оси, не меняя его размера. |  | fill | При необходимости увеличьте горизонтальный и вертикальный размер объекта, чтобы он полностью заполнил контейнер. |  | clip_vertical | Дополнительная опция, которую можно настроить так, чтобы верхние и/или нижние края дочернего элемента были обрезаны до границ его контейнера. Зажим основан на вертикальной силе тяжести: верхняя сила тяжести зажимает нижний край, нижняя сила тяжести зажимает верхний край, и ни один из них не зажимает оба края. |  | clip_horizontal | Дополнительная опция, которую можно настроить так, чтобы левый и/или правый края дочернего элемента были обрезаны до границ его контейнера. Зажим основан на горизонтальной силе тяжести: левая сила тяжести зажимает правый край, правая сила тяжести зажимает левый край, и ни один из них не зажимает оба края. |  
 
-  android:scaleHeight
-  Процент . Высота шкалы, выраженная в процентах от границы рисуемого объекта. Формат значения — XX%, например 100% или 12,5%.
-  android:scaleWidth
-  Процент . Ширина шкалы, выраженная в процентах от границы рисуемого объекта. Формат значения — XX%, например 100% или 12,5%.
 
 
-  пример: 
- <?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/logo"
    android:scaleGravity="center_vertical|center_horizontal"
    android:scaleHeight="80%"
    android:scaleWidth="80%" />
-  см. также:
 Рисуемая форма
 Это общая форма, определенная в XML.
-  расположение файла:
-  res/drawable/ filename .xml
 Имя файла — это идентификатор ресурса.
-  тип данных скомпилированного ресурса:
-  Указатель ресурса на GradientDrawable
-  ссылка на ресурс:
-  В Java: R.drawable. filename
 В XML:@[ package :]drawable/ filename
-  синтаксис: 
- <?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape=["rectangle" | "oval" | "line" | "ring"] >
    <corners
        android:radius="integer"
        android:topLeftRadius="integer"
        android:topRightRadius="integer"
        android:bottomLeftRadius="integer"
        android:bottomRightRadius="integer" />
    <gradient
        android:angle="integer"
        android:centerX="float"
        android:centerY="float"
        android:centerColor="integer"
        android:endColor="color"
        android:gradientRadius="integer"
        android:startColor="color"
        android:type=["linear" | "radial" | "sweep"]
        android:useLevel=["true" | "false"] />
    <padding
        android:left="integer"
        android:top="integer"
        android:right="integer"
        android:bottom="integer" />
    <size
        android:width="integer"
        android:height="integer" />
    <solid
        android:color="color" />
    <stroke
        android:width="integer"
        android:color="color"
        android:dashWidth="integer"
        android:dashGap="integer" />
</shape>
-  элементы:
-  <shape>
-  Необходимый. Рисуемая форма. Это должен быть корневой элемент. Атрибуты: -  xmlns:android
-  Нить . Необходимый. Определяет пространство имен XML, которое должно иметь вид "http://schemas.android.com/apk/res/android".
-  android:shape
-  Ключевое слово . Определяет тип фигуры. Допустимые значения:| Ценить | Описание | 
|---|
 | "rectangle" | Прямоугольник, заполняющий содержащее его представление. Это форма по умолчанию. |  | "oval" | Овальная форма, соответствующая размерам содержащего представления. |  | "line" | Горизонтальная линия, охватывающая ширину содержащего представления. Эта фигура требует, чтобы элемент <stroke>определял ширину линии. |  | "ring" | Форма кольца. |  
 
  Следующие атрибуты используются только при android:shape="ring":
 -  android:innerRadius
-  Измерение . Радиус внутренней части кольца (отверстие посередине) как значение размера или ресурс размера .
-  android:innerRadiusRatio
-  Плавать . Радиус внутренней части кольца, выраженный как отношение ширины кольца. Например, если android:innerRadiusRatio="5", то внутренний радиус равен ширине кольца, разделенной на 5. Это значение переопределяетсяandroid:innerRadius. Значение по умолчанию — 9.
-  android:thickness
-  Измерение . Толщина кольца как значение размера или ресурс размера .
-  android:thicknessRatio
-  Плавать . Толщина кольца выражается как отношение ширины кольца. Например, если android:thicknessRatio="2", то толщина равна ширине кольца, разделенной на 2. Это значение переопределяетсяandroid:innerRadius. Значение по умолчанию — 3.
-  android:useLevel
-  Логическое значение . True, если это используется как LevelListDrawable. Обычно это неверно, иначе ваша фигура может не появиться.
 
-  <corners>
-  Создает закругленные углы фигуры. Применяется только в том случае, если фигура представляет собой прямоугольник. Атрибуты: -  android:radius
-  Измерение . Радиус для всех углов в виде значения размера или ресурса размера . Это переопределяется для каждого угла следующими атрибутами.
-  android:topLeftRadius
-  Измерение . Радиус верхнего левого угла в виде значения размера или ресурса измерения .
-  android:topRightRadius
-  Измерение . Радиус верхнего правого угла в виде значения размера или ресурса измерения .
-  android:bottomLeftRadius
-  Измерение . Радиус нижнего левого угла в виде значения размера или ресурса измерения .
-  android:bottomRightRadius
-  Измерение . Радиус правого нижнего угла в виде значения размера или ресурса измерения .
  Примечание. Изначально каждый угол должен иметь радиус угла больше 1, иначе углы не будут закруглены. Если вы хотите, чтобы определенные углы не были закруглены, обходным путем является использование android:radiusчтобы установить радиус угла по умолчанию больше 1, а затем переопределить каждый угол значениями, которые вам действительно нужны, указав 0 («0dp») там, где вы этого не делаете. Мне не нужны закругленные углы.
 
-  <gradient>
-  Задает цвет градиента для фигуры. Атрибуты: -  android:angle
-  Целое число . Угол градиента в градусах. 0 слева направо, 90 снизу вверх. Оно должно быть кратно 45. Значение по умолчанию — 0.
-  android:centerX
-  Плавать . Относительное X-положение центра градиента (0–1,0).
-  android:centerY
-  Плавать . Относительное положение по оси Y центра градиента (0–1,0).
-  android:centerColor
-  Цвет . Необязательный цвет, который находится между начальным и конечным цветами в виде шестнадцатеричного значения или ресурса цвета .
-  android:endColor
-  Цвет . Конечный цвет в виде шестнадцатеричного значения или ресурса цвета .
-  android:gradientRadius
-  Плавать . Радиус градиента. Применяется только тогда, когда android:type="radial".
-  android:startColor
-  Цвет . Начальный цвет в виде шестнадцатеричного значения или ресурса цвета .
-  android:type
-  Ключевое слово . Тип применяемого шаблона градиента. Допустимые значения:| Ценить | Описание | 
|---|
 | "linear" | Линейный градиент. Это значение по умолчанию. |  | "radial" | Радиальный градиент. Начальный цвет — это центральный цвет. |  | "sweep" | Широкая линия градиента. |  
 
-  android:useLevel
-  Логическое значение . True, если это используется как LevelListDrawable.
 
-  <padding>
-  Заполнение, применяемое к содержащему элементу представления. Это дополняет положение содержимого представления, а не формы. Атрибуты: -  android:left
-  Измерение . Заполнение слева в качестве значения измерения или ресурса измерения .
-  android:top
-  Измерение . Верхнее дополнение в качестве значения измерения или ресурса измерения .
-  android:right
-  Измерение . Заполнение справа в качестве значения измерения или ресурса измерения .
-  android:bottom
-  Измерение . Нижнее дополнение в качестве значения измерения или ресурса измерения .
 
-  <size>
-  Размер формы. Атрибуты: -  android:height
-  Измерение . Высота фигуры как значение размера или ресурс измерения .
-  android:width
-  Измерение . Ширина фигуры как значение размера или ресурс измерения .
  Примечание. По умолчанию фигура масштабируется до размера представления контейнера, пропорционального определенным здесь размерам. Когда вы используете фигуру в ImageView, вы можете ограничить масштабирование, установивandroid:scaleTypeзначение"center".
 
-  <solid>
-  Сплошной цвет для заполнения формы. Атрибуты: -  android:color
-  Цвет . Цвет, применяемый к фигуре, в виде шестнадцатеричного значения или ресурса цвета .
 
-  <stroke>
-  Линия обводки фигуры. Атрибуты: -  android:width
-  Измерение . Толщина линии как значение размера или ресурс измерения .
-  android:color
-  Цвет . Цвет линии в виде шестнадцатеричного значения или ресурса цвета .
-  android:dashGap
-  Измерение . Расстояние между штрихами линий как значение размера или ресурс измерения . Действует только в том случае, если установлен android:dashWidth.
-  android:dashWidth
-  Измерение . Размер каждой пунктирной линии как значения измерения или ресурса измерения . Действует только в том случае, если установлен android:dashGap.
 
 
-  пример:
-  XML-файл, сохраненный в res/drawable/gradient_box.xml:<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#FFFF0000"
        android:endColor="#80FF00FF"
        android:angle="45"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>Этот XML макета применяет фигуру, которую можно рисовать, к представлению:  <TextView
    android:background="@drawable/gradient_box"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" />Этот код приложения получает фигуру, которую можно нарисовать, и применяет ее к представлению:   Котлин val shape: Drawable? = getDrawable(resources, R.drawable.gradient_box,getTheme())
val tv: TextView = findViewById(R.id.textview)
tv.background = shape
  Ява Resources res = getResources();
Drawable shape = ResourcesCompat.getDrawable(res, R.drawable.gradient_box,getTheme());
TextView tv = (TextView)findViewById(R.id.textview);
tv.setBackground(shape);
 
-  см. также: