2013-04-04 9 views
5

W mojej aplikacji używam LayerDrawable do wyświetlania obrazu z warstwy overlay. I robię to z powodzeniem używając metody layerDrawable.Jak przekonwertować LayerDrawable na Drawable w systemie Android?

po otrzymaniu zestawu layerDrawable jako obrazuView.setImageDrawable (layerDrawable);

Teraz chcę użyć tego rysunku do pobrania jako bitmapy i użyć w następnym przetwarzaniu obrazu. ale gdy próbuję dostać użycie Bitmap tego

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

mam następujący błąd.

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

więc zmienić następczych mojego przetwarzania obrazu i spróbuj przekonwertować LayerDrawable do rozciągliwej i ustawić tę rozciągliwej jako imageLayout tle. to działa idealnie. Mój problem polega na tym, jak przekonwertować warstwę LayerDrawable na drible?

proszę o pomoc. daj mi jakiś pomysł. Dzięki.

Odpowiedz

5

tylko test, nie próbowałem tego

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 jak can.Thank brata .. –

+0

nie działa, pokazuje tylko 1 warstwę z niewłaściwym rozmiarze – Lester

+3

@Lester Jeśli okaże się to odpowiedź nie działa dla twojej sprawy, więc aby uzyskać dla ciebie rozwiązanie, proszę krótko wyjaśnić swoją sprawę i kod LUB najlepszym sposobem jest rozpoczęcie własnego pytania.! Udzielenie negatywnego głosu nie daje mi informacji o Twojej sprawie/sprawie. – MKJParekh

Powiązane problemy