В чем разница между Bitmap и Drawable в Android?

Я googled, но я не мог найти ни одной статьи, чтобы описать разницу между Bitmap и Drawable в Android.

Solutions Collecting From Web of "В чем разница между Bitmap и Drawable в Android?"

Растровое изображение представляет собой изображение растрового изображения (что-то вроде java.awt.Image). Drawable – это абстракция «что-то, что можно нарисовать». Это может быть битмап (завернутый как BitmapDrawable ), но он также может быть сплошным цветом, набором других объектов Drawable или любого количества других структур.

Большинство интерфейсов пользовательского интерфейса Android любят работать с объектами Drawable, а не с Bitmap. A View может принимать любые Drawable в качестве фона. ImageView может отображать передний план Drawable. Изображения, хранящиеся в качестве ресурсов, загружаются как объекты с возможностью рисования.

Drawable – это то, что можно нарисовать. Например, макет, векторное изображение (линия, круг), шрифт, изображение и т. Д.

Bitmap – это определенный тип Drawable, который является изображением, например: PNG, JPEG или так

Ресурс для рисования

Ресурс Drawable – это общая концепция графического изображения, которое можно отобразить на экране и которое вы можете получить с помощью API, таких как getDrawable(int) или применить к другому ресурсу XML с такими атрибутами, как android:icon android:drawable и android:icon Существует несколько различных типов чертежей:

  • Файл растрового изображения, графический файл растрового изображения (.png, .jpg или .gif), создает BitmapDrawable .

  • Nine-Patch File , PNG файл с растягиваемыми областями, позволяющий изменять размер изображения на основе содержимого (.9.png), создает NinePatchDrawable .

  • Layer List , Drawable который управляет массивом других Drawable s. Они рисуются в порядке массива, поэтому элемент с наибольшим индексом нарисован сверху, создает LayerDrawable .

  • State List , XML файл, который ссылается на другую растровую графику для разных состояний (например, для использования другого изображения при нажатии кнопки), создает StateListDrawable .

  • Список уровней , XML файл, который определяет Drawable который управляет несколькими альтернативными Drawable s, каждый из которых назначает максимальное числовое значение, создает LevelListDrawable .

  • Transition Drawable , XML файл, который определяет Drawable который может пересекать два ресурса Drawable , создает TransitionDrawable .

  • Inset Drawable , XML файл, который определяет Drawable который вставляет другой Drawable на указанное расстояние. Это полезно, когда для View требуется фоновый Drawble который меньше фактических границ представления.

  • Clip Drawable , XML файл, который определяет Drawable который зажимает другой Drawable основанный на текущем значении текущего Drawable , создает ClipDrawable .

  • Scale Drawable , XML файл, который определяет Drawable который изменяет размер другого Drawable на основе его текущего значения уровня, создает ScaleDrawable .

  • Shape Drawable , XML файл, который определяет геометрическую форму, включая цвета и градиенты, создает ShapeDrawable .

Также см. Документ «Ресурс анимации» о том, как создать AnimationDrawable .

Примечание. Ресурс цвета также можно использовать в качестве Ddrawable в XML . Например, при создании StateListDrawable вы можете ссылаться на ресурс цвета для атрибута android:drawable="@color/green" ( android:drawable="@color/green" ).

Битовая карта

Растровое изображение. Android поддерживает растровые файлы в трех форматах: .png (предпочтительно), .jpg (допустимо), .gif (обескуражен).

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

Примечание. Растровые файлы могут автоматически оптимизироваться при сжатии без потерь с помощью инструмента aapt во время процесса сборки. Например, PNG с истинным цветом, который не требует более 256 цветов, может быть преобразован в 8-битный PNG с цветовой палитрой. Это приведет к качеству изображения, но для этого требуется меньше памяти. Поэтому имейте в виду, что двоичные файлы изображений, помещенные в этот каталог, могут меняться во время сборки. Если вы планируете читать изображение в виде потока бит, чтобы преобразовать его в растровое изображение, поместите изображения в папку res/raw/ folder, где они не будут оптимизированы.