Я googled, но я не мог найти какую-либо статью, чтобы описать разницу между Bitmap и Drawable в Android.
В чем разница между Bitmap и Drawable в Android?
Ответ 1
Растровое изображение представляет собой изображение растрового изображения (что-то вроде java.awt.Image). Drawable - это абстракция "что-то, что можно нарисовать". Это может быть битмап (завернутый как BitmapDrawable
), но он также может быть сплошным цветом, набором других объектов Drawable или любого количества других структур.
В большинстве интерфейсов пользовательского интерфейса Android нравится работать с объектами Drawable, а не с Bitmap. A View может принимать любые Drawable в качестве фона. ImageView может отображать передний план Drawable. Изображения, хранящиеся как ресурсы, загружаются как объекты с возможностью рисования.
Ответ 2
Drawable - это то, что можно нарисовать. Например. макет, векторное изображение (линия, круг), шрифт, изображение и т.д.
Bitmap - это определенный тип Drawable, который является изображением, например: PNG, JPEG или так
Ответ 3
Растровое изображение не является изображением. Битовая карта - это битовая карта (примечание: Битовая карта). И эта карта представляет пиксели, на которых вы можете что-то нарисовать. Это может быть ваше собственное растровое изображение (не изображение), например квадрат:
Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
или вы можете создать растровый объект из изображения:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.your_image);
Растровое изображение - это пиксельный держатель. А Canvas используется для рисования чего-либо на вашем растровом изображении (на растровых пикселях).
Все о Drawable хорошо описано выше.
TL; DR
Некоторые люди пишут, что вы рисуете на холсте. Вы не рисуете на холсте. Вы рисуете на растровых пикселях с помощью вспомогательного метода Canvas.
Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.RED) // now all bitmap pixels became red
Ответ 4
Ресурс <Ресурсы >
РесурсA Drawable
- это общая концепция графического объекта, который можно отобразить на экране и который вы можете получить с помощью API, например getDrawable(int)
, или применить к другому ресурсу XML с такими атрибутами, как android:drawable
и android:icon
. Существует несколько различных типов чертежей:
-
Растровый файл, графический файл растрового изображения (.png,.jpg или .gif), создает
BitmapDrawable
. -
Nine-Patch File, A
PNG
файл с растягиваемыми областями, чтобы разрешить изменение размера изображения на основе содержимого (.9.png), создаетNinePatchDrawable
. -
Список слоев, A
Drawable
, который управляет массивом другихDrawable
s. Они рисуются в порядке массива, поэтому элемент с наибольшим индексом нарисован сверху, создаетLayerDrawable
. -
Список состояний, файл
XML
, который ссылается на разные растровые графики для разных состояний (например, для использования другого изображения при нажатии кнопки) создаетStateListDrawable
. -
Список уровней,
XML
, который определяетDrawable
, который управляет несколькими альтернативнымиDrawable
s, каждый из которых назначает максимальное числовое значение, создаетLevelListDrawable
. -
Transable Drawable, файл
XML
, который определяетDrawable
, который может перекрестно затухать между двумя ресурсамиDrawable
, создаетTransitionDrawable
. -
Вставка Drawable, файл
XML
, который определяетDrawable
, который вставляет другойDrawable
на указанное расстояние. Это полезно, когда aView
нуждается в фоновомDrawble
, который меньше, чем просмотр фактических границ. -
Clip Drawable, файл
XML
, который определяетDrawable
, который скопирует другойDrawable
на основе этого значения текущего уровняDrawable
, создаетClipDrawable
. -
Масштабируемый Drawable, файл
XML
, который определяетDrawable
, который изменяет размер другогоDrawable
на основе его текущего значения уровня, создаетScaleDrawable
. -
Форма Drawable, файл
XML
, который определяет геометрическую форму, включая цвета и градиенты, создаетShapeDrawable
.
Также см. документ "Ресурс анимации" для создания AnimationDrawable
.
Примечание. Ресурс цвета также можно использовать как Ddrawable
в XML
. Например, при создании StateListDrawable
вы можете ссылаться на ресурс цвета для атрибута android:drawable
(android:drawable="@color/green"
).
Растровые
Растровое изображение. Android поддерживает файлы растровых изображений в трех форматах:.png(предпочтительно),.jpg(приемлемый),.gif(обескуражен).
Вы можете напрямую ссылаться на файл растрового изображения, используя имя файла в качестве идентификатора ресурса или создать идентификатор ресурса псевдонима в XML.
Примечание. Растровые файлы могут автоматически оптимизироваться при сжатии без потерь с помощью инструмента aapt во время процесса сборки. Например, PNG с истинным цветом, который не требует более 256 цветов, может быть преобразован в 8-битный PNG с цветовой палитрой. Это приведет к качеству изображения, но для этого требуется меньше памяти. Поэтому имейте в виду, что двоичные файлы изображений, размещенные в этом каталоге, могут меняться во время сборки. Если вы планируете читать изображение в виде потока бит, чтобы преобразовать его в растровое изображение, поместите изображения в папку res/raw/
, где они не будут оптимизированы.