2013-04-04 3 views
5

In meiner App verwende ich die LayerDrawable Overlayer Image anzuzeigen. Und ich verwende LayerDrawable erfolgreich.Wie konvertiert man die LayerDrawable zu Drawable in Android?

nachdem ich layerDrawable als imageView.setImageDrawable (layerDrawable);

Jetzt möchte ich dieses Bild als Tombak nehmen und in der nächsten Bildverarbeitung verwenden. aber wenn ich versuche, die Bitmap Verwendung dieser bekam Fehler die folgenden i

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

zu bekommen.

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 ändern i die Folge meiner Bildverarbeitung und versuchen, die LayerDrawable zu Drawable und setzen Sie diesen ziehbar als imageLayout Hintergrund zu konvertieren. dann funktioniert es perfekt. Mein Problem ist, wie die LayerDrawable in drwable konvertieren?

bitte eine Hilfe. geben Sie mir eine Idee. Danke.

Antwort

5

nur ein Test, ich habe nicht versucht

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; 
} 
+3

+100000 als i Bruder can.Thank .. –

+0

hat nicht funktioniert, zeigt nur 1 Schicht mit der falschen Größe – Lester

+3

@Lester Wenn Sie diese finden Antwort funktioniert nicht für Ihren Fall, also um eine Lösung für Sie zu bekommen, erklären Sie bitte kurz Ihren Fall und Code ODER der beste Weg ist, Ihre eigene Frage zu beginnen.! Wenn Sie eine negative Stimme abgeben, kann ich nichts über Ihren Fall/Ihr Problem erfahren. – MKJParekh