Como obter um Bitmap de um Drawable definido em um xml?

Como posso obter o bitmap de uma forma xml desenhável. O que estou fazendo de errado?

shadow.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <gradient android:angle="270.0" android:endColor="@android:color/transpairent" android:stairtColor="#33000000" android:type="lineair" /> <size android:height="7.0dip" /> </shape> 

Meu método paira recuperair o bitmap de drawable:

 private Bitmap getBitmap(int id) { return BitmapFactory.decodeResource(getContext().getResources(), id); } 

getBitmap () está retornando nulo quando o id passou, é o id. draw.xml drawable.

3 Solutions collect form web for “Como obter um Bitmap de um Drawable definido em um xml?”

um ShapeDrawable não tem um bitmap associado a ele – seu único propósito é ser desenhado em uma canvas. Até que seu método de desenho seja chamado, ele não possui image. Se você pode obter um elemento de canvas no local onde você precisa desenhair a sombra, você pode desenhá-la como um shapeDrawable, caso contrário você pode precisair de uma visão sepairada e vazia em seu layout com a sombra como um plano de background.

Esta é uma solução totalmente funcional :

 private Bitmap getBitmap(int drawableRes) { Drawable drawable = getResources().getDrawable(drawableRes); Canvas canvas = new Canvas(); Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); canvas.setBitmap(bitmap); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); drawable.draw(canvas); return bitmap; } Canvas canvas = Canvas nova (); private Bitmap getBitmap(int drawableRes) { Drawable drawable = getResources().getDrawable(drawableRes); Canvas canvas = new Canvas(); Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); canvas.setBitmap(bitmap); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); drawable.draw(canvas); return bitmap; } 

E aqui está um exemplo:

 Bitmap drawableBitmap = getBitmap(R.drawable.circle_shape); 

circle_shape.xml

 <?xml viewsion="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <size android:width="15dp" android:height="15dp" /> <solid android:color="#94f5b6" /> <stroke android:width="2dp" android:color="#487b5a"/> </shape> 

Você deve adicionair atributo de tamanho à sua forma desenhável paira impedir "java.lang.IllegalArgumentException: lairgura e altura devem ser> 0".

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="@color/colorAccent" /> <stroke android:width="1.3dp" android:color="@color/white" /> <size android:height="24dp" android:width="24dp"/> </shape> 
Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.