Я хотел бы установить определенные Drawable
в качестве обоев устройства, но все функции обоев принимают Bitmap
только s. Я не могу использовать, WallpaperManager
потому что я предварительно 2.1.
Кроме того, мои рисунки загружаются из Интернета и не находятся в R.drawable
.
android
bitmap
wallpaper
android-drawable
обкрадывать
источник
источник
Ответы:
Этот кусок кода помогает.
Здесь версия, где изображение загружается.
источник
источник
getIntrinsicWidth()
иgetIntrinsicHieght()
вернет -1, если рисуемый сплошной цвет.Это преобразует BitmapDrawable в Bitmap.
источник
BitmapDrawable
перед тем, как его разыграть :if (d instanceof BitmapDrawable) { Bitmap bitmap = ((BitmapDrawable)d).getBitmap(); }
d
уже естьBitmapDrawable
, в этом случае это тривиально , чтобы получить его как растровое изображение ... Будет ли столкновение сClassCastException
во всех остальных случаях.Drawable
может быть нарисован на aCanvas
, а aCanvas
может быть поддержанBitmap
:(Обновлено, чтобы обрабатывать быстрое преобразование для
BitmapDrawable
s и гарантировать, чтоBitmap
созданный имеет правильный размер)источник
МЕТОД 1 : Либо вы можете напрямую преобразовать в растровое изображение, как это
МЕТОД 2 : Вы даже можете конвертировать ресурс в рисованный, и из этого вы можете получить растровое изображение, как это
Для API> 22
getDrawable
метод перемещен вResourcesCompat
класс, так что вы делаете что-то вроде этогоисточник
android.graphics.drawable.VectorDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
очень просто
источник
Поэтому, посмотрев (и использовав) другие ответы, кажется, они все справляются
ColorDrawable
иPaintDrawable
плохо. (Особенно на леденце) казалось, чтоShader
были подправлены, поэтому сплошные блоки цветов не обрабатывались правильно.Я сейчас использую следующий код:
В отличие от других, если вы вызовете перед
setBounds
тем,Drawable
как попросить превратить его в растровое изображение, оно будет отображать растровое изображение в правильном размере!источник
Drawable
границы не установлены, он используетIntrinsicWidth/Height
. Если они оба <= 0, мы устанавливаем холст в 1px. Вы правы, еслиDrawable
у границы нет границ, ей будут пропущены некоторые (в большинстве случаев 1x1), но это ТРЕБУЕТСЯ для таких вещей,ColorDrawable
которые НЕ имеют внутренних размеров. Если бы мы этого не делали, это бы вывелоException
, вы не можете нарисовать 0x0 на холсте.mutate()
сделал бы копию, оставив оригинал пригодным для рисования в одиночку, что сведет на нет проблему возврата в исходные рамки. Я редко меняю код, основываясь на этих пунктах. Если ваш вариант использования требует, добавьте еще один ответ. Я предлагаю вам создать еще один вопрос для масштабирования растровых изображений.Может быть, это кому-то поможет ...
От PictureDrawable до Bitmap используйте:
... реализовано так:
источник
Drawable
, в данном случае aPictureDrawable
.Вот лучшее разрешение
Код из Как читать прорисовываемые биты как InputStream
источник
1) отрисовывается в растровое изображение:
2) растровое изображение в Drawable:
источник
Вот хорошая версия ответа от Kotlin, предоставленная @ Chris.Jenkins здесь: https://stackoverflow.com/a/27543712/1016462
источник
У android-ktx есть
Drawable.toBitmap
метод: https://android.github.io/android-ktx/core-ktx/androidx.graphics.drawable/android.graphics.drawable.-drawable/to-bitmap.htmlИз Котлина
источник
VectorDrawable
котлина! Также поделился в этом посте здесь более подробно.Android обеспечивает не прямое решение Foward:
BitmapDrawable
. Чтобы получить растровое изображение, мы должны предоставить идентификатор ресурсаR.drawable.flower_pic
для a,BitmapDrawable
а затем привести его к aBitmap
.источник
Используйте этот code.it поможет вам в достижении вашей цели.
источник
BitmapFactory.decodeResource()
автоматически масштабирует растровое изображение, поэтому ваше растровое изображение может оказаться нечетким. Чтобы предотвратить масштабирование, сделайте это:или
источник
Последняя базовая библиотека androidx (androidx.core: core-ktx: 1.2.0) теперь имеет функцию расширения:
Drawable.toBitmap(...)
для преобразования Drawable в растровое изображение.источник
если вы используете kotlin, используйте приведенный ниже код. это сработает
// для использования пути к изображению
источник
источник
Библиотека ImageWorker может конвертировать растровое изображение в drawable или base64 и наоборот.
Реализация
На уровне проекта Gradle
На уровне приложения Gradle
Вы также можете хранить и извлекать растровые изображения / рисованные изображения / изображения base64 из внешних источников.
Проверьте здесь. https://github.com/1AboveAll/ImageWorker/edit/master/README.md
источник