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



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

459   4  

4 ответов:

растровое изображение-это представление растрового изображения (что-то вроде java.ОУ.Изображение.) Рисование-это абстракция "чего-то, что можно нарисовать". Это может быть растровое изображение (завернутое как BitmapDrawable), но это также может быть сплошной цвет, коллекцию других объектов мешочки, или любое количество других структур.

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

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

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

Drawable Resource

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

  • Bitmap-Файлы, растровый графический файл (.формат PNG. ,формат JPG или. gif), создает a BitmapDrawable.

  • Девять-Патч Файл, A PNG файл с растягивающимися областями, чтобы разрешить изменение размера изображения на основе содержимого (.9.ПНГ), создает NinePatchDrawable.

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

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

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

  • Переход Drawable, либо XML файл, который определяет Drawable Что может перекрестное затухание между двумя Drawable ресурсы, создает TransitionDrawable.

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

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

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

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

Также смотрите анимацию Ресурсный документ для создания AnimationDrawable.

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

точечный

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

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

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

растровое изображение не является изображением. Битовая карта бита (обратите внимание, название: бит-карте). И эта карта представляет собой пиксели, на которых можно что-то нарисовать. Это может быть ваше собственное растровое изображение (не изображение), например square:

Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);

или вы можете создать объект Bitmap из изображения:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.your_image);    

растровое изображение является держателем пикселей. И холст используется, чтобы нарисовать что-то на свой растровых изображений (растровых точек).

все о 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

Comments

    Ничего не найдено.