Я 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, который управляет массивом другихDrawables. Они рисуются в порядке массива, поэтому элемент с наибольшим индексом нарисован сверху, создаетLayerDrawable. -
Список состояний, файл
XML, который ссылается на разные растровые графики для разных состояний (например, для использования другого изображения при нажатии кнопки) создаетStateListDrawable. -
Список уровней,
XML, который определяетDrawable, который управляет несколькими альтернативнымиDrawables, каждый из которых назначает максимальное числовое значение, создает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/, где они не будут оптимизированы.