Gostaria de definir um certo Drawable
papel de parede do dispositivo, mas todas as funções do papel de parede aceitam Bitmap
apenas s. Não posso usar WallpaperManager
porque sou pré-2.1.
Além disso, meus drawables são baixados da Web e não residem R.drawable
.
android
bitmap
wallpaper
android-drawable
Roubar
fonte
fonte
Respostas:
Este pedaço de código ajuda.
Aqui está uma versão em que a imagem é baixada.
fonte
fonte
getIntrinsicWidth()
egetIntrinsicHieght()
retornará -1 se o drawable for uma cor sólida.Isso converte um BitmapDrawable em um Bitmap.
fonte
BitmapDrawable
antes de convertê-lo:if (d instanceof BitmapDrawable) { Bitmap bitmap = ((BitmapDrawable)d).getBitmap(); }
d
já for umBitmapDrawable
; nesse caso, é trivial recuperá-lo como um bitmap ... Irá falharClassCastException
em todos os outros casos.A
Drawable
pode ser desenhado em umCanvas
e aCanvas
pode ser apoiado por umBitmap
:(Atualizado para lidar com uma conversão rápida de
BitmapDrawable
se garantir que oBitmap
criado tenha um tamanho válido)fonte
MÉTODO 1 : Você pode converter diretamente em bitmap como este
MÉTODO 2 : Você pode até converter o recurso no drawable e, a partir disso, obter um bitmap como este
Para o método API> 22
getDrawable
movido para aResourcesCompat
classe, é necessário fazer algo assimfonte
android.graphics.drawable.VectorDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
muito simples
fonte
Então, depois de procurar (e usar) as outras respostas, parece que todas estão lidando mal
ColorDrawable
ePaintDrawable
mal. (Especialmente no pirulito) parecia queShader
s eram ajustados para que blocos de cores sólidos não fossem manuseados corretamente.Estou usando o seguinte código agora:
Diferente dos outros, se você solicitar
setBounds
oDrawable
antes de transformá-lo em um bitmap, ele desenhará o bitmap no tamanho correto!fonte
Drawable
não tiver limites definidos, ele usa oIntrinsicWidth/Height
. Se ambos forem <= 0, configuramos a tela como 1px. Você está correto se oDrawable
não tiver limites, será passado alguns (1x1 é a maioria dos casos), mas isso é NECESSÁRIO para coisas como asColorDrawable
que NÃO possuem tamanhos intrínsecos. Se não fizéssemos isso, lançaria umException
, você não pode desenhar 0x0 em uma tela.mutate()
faria uma cópia deixando o drawable original sozinho, o que negaria a questão de retornar aos limites originais. Raramente altero o código com base nesses pontos. Se o seu caso de uso exigir, adicione outra resposta. Sugiro que você crie outra pergunta para o dimensionamento de bitmap.Talvez isso ajude alguém ...
De PictureDrawable para Bitmap, use:
... implementado como tal:
fonte
Drawable
, neste caso aPictureDrawable
.Aqui está melhor resolução
Código de Como ler bits desenháveis como InputStream
fonte
1) extraível para Bitmap:
2) bitmap para Drawable:
fonte
Aqui está a boa versão do Kotlin da resposta fornecida por @ Chris.Jenkins aqui: https://stackoverflow.com/a/27543712/1016462
fonte
android-ktx tem o
Drawable.toBitmap
método: https://android.github.io/android-ktx/core-ktx/androidx.graphics.drawable/android.graphics.drawable.-drawable/to-bitmap.htmlDe Kotlin
fonte
VectorDrawable
Kotlin! Também compartilhado neste post aqui aqui com mais detalhes.Android fornece uma solução para a frente não direto:
BitmapDrawable
. Para obter o Bitmap, precisaremos fornecer o ID do recursoR.drawable.flower_pic
para aBitmapDrawable
e depois convertê-lo em aBitmap
.fonte
Use este code.it irá ajudá-lo a alcançar seu objetivo.
fonte
BitmapFactory.decodeResource()
dimensiona automaticamente o bitmap, para que seu bitmap fique confuso. Para impedir o dimensionamento, faça o seguinte:ou
fonte
Se você estiver usando o kotlin, use o código abaixo. vai funcionar
// para usar o caminho da imagem
fonte
A biblioteca principal do androidx (androidx.core: core-ktx: 1.2.0) agora tem uma função de extensão:
Drawable.toBitmap(...)
converter um Drawable em um Bitmap.fonte
fonte
A Biblioteca ImageWorker pode converter bitmap em drawable ou base64 e vice-versa.
Implementação
No nível do projeto Gradle
No nível do aplicativo Gradle
Você também pode armazenar e recuperar imagens de bitmaps / drawables / base64 de fora.
Verifique aqui. https://github.com/1AboveAll/ImageWorker/edit/master/README.md
fonte