2013-03-26 13 views
6

Ho bisogno di ridimensionare l'immagine di sfondo di un pulsante ma non posso trasformarlo in un Bitmap. Ecco il codice in questo momento:Java (Android): come scalare un drawable senza Bitmap?

int height = 50; 
int width = 80; 

Button b = new Button (this); 
b. setBackgroundResource(R.drawable.btn); 

Ora ho bisogno di scalare "R.drawable.btn" secondo la "altezza" e "larghezza". SetBackgroundResource non accetta una bitmap. Come lo faccio?

Grazie.

+0

A causa del testo "ma non si può trasformarlo in una bitmap", temo che la seconda metà della mia risposta, di seguito, non è applicabile alla tua domanda. Hai davvero bisogno di non trasformare la risorsa "R.drawable.btn" in una bitmap? Se è così, per soddisfare la mia curiosità e per aiutare a generare una risposta migliore, perché? –

+0

Poiché btn.setBackgroundResource non mi consente di impostare una bitmap come sfondo. Penso di aver provato anche btn.setBackgroundDrawable, ora ho intenzione di provarlo di nuovo. – BinaryMonster

risposta

18

È possibile consentire ai parametri di layout di controllare la scala o scalare l'immagine da soli.

Lasciare che il layout per ridimensionare l'immagine:

b.setBackground(getResources().getDrawable(R.drawable.btn)); 

Scala l'immagine manualmente:

Bitmap original = BitmapFactory.decodeResource(context.getResources(), R.drawable.btn); 
Bitmap b = Bitmap.createScaledBitmap(original, width, height, false); 
Drawable d = new BitmapDrawable(context.getResources(), b); 
button.setBackground(d); 

Attenzione: L'immagine non può apparire sullo schermo in scala esattamente come ci si aspetta. Questo perché, in base ai parametri di layout del tuo Button, Android può scalare ulteriormente l'immagine in base alla densità dello schermo hardware del tuo dispositivo.

+0

Non è setBackgroundDrawable deprecato? – BinaryMonster

+0

Dovrebbe essere setBackground, ho modificato il codice – BinaryMonster

+0

grazie a @BinaryMonster. Buona pesca. –

0

questo si trasformerà una bitmap in un'immagine un disegnabile

image = new BitmapDrawable(getResources(),MenuScreen.image1); 

è drawable e Image1 è l'immagine bitmap

Problemi correlati