Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert the LayerDrawable to Drawable in Android?

In my app i use the LayerDrawable to display overlayer image.and i do this is successfully use of layerDrawable.

after i get layerDrawable set as a imageView.setImageDrawable(layerDrawable);

Now i want to use this image drawable take as Bitmap and use in next imageprocessing. but when i try to get the Bitmap use of this

((BitmapDrawable)imageLayout.getDrawable()).getBitmap();

i got the following Error.

04-04 12:56:02.102: E/AndroidRuntime(15127): java.lang.ClassCastException: android.graphics.drawable.LayerDrawable cannot be cast to android.graphics.drawable.BitmapDrawable

so i change the follow of my image processing and try to convert the LayerDrawable to Drawable and set this drawable as imageLayout backGround. then it's work perfectly. My problem is how to convert the LayerDrawable to drwable?

please any one help. give me some idea. Thanks.

like image 471
Zala Janaksinh Avatar asked Apr 04 '13 07:04

Zala Janaksinh


1 Answers

Just a test, I haven't tried this

public Drawable geSingleDrawable(LayerDrawable layerDrawable){

          int resourceBitmapHeight = 136, resourceBitmapWidth = 153;

          float widthInInches = 0.9f;

          int widthInPixels = (int)(widthInInches * getResources().getDisplayMetrics().densityDpi);
          int heightInPixels = (int)(widthInPixels * resourceBitmapHeight / resourceBitmapWidth);

          int insetLeft = 10, insetTop = 10, insetRight = 10, insetBottom = 10;

          layerDrawable.setLayerInset(1, insetLeft, insetTop, insetRight, insetBottom);     

          Bitmap bitmap = Bitmap.createBitmap(widthInPixels, heightInPixels, Bitmap.Config.ARGB_8888);

          Canvas canvas = new Canvas(bitmap);
          layerDrawable.setBounds(0, 0, widthInPixels, heightInPixels);
          layerDrawable.draw(canvas);

          BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources(), bitmap);
          bitmapDrawable.setBounds(0, 0, widthInPixels, heightInPixels);

          return bitmapDrawable;
}
like image 199
MKJParekh Avatar answered Sep 29 '22 05:09

MKJParekh