2013-03-26 9 views
6

ボタンの背景イメージを拡大/縮小する必要がありますが、それをビットマップに変換することはできません。ここでは、コードは今ある:Java(アンドロイド):ビットマップを使用せずにdrawableをスケールする方法は?

int height = 50; 
int width = 80; 

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

今、私は「高さ」と「幅」による「R.drawable.btn」を拡張する必要があります。 setBackgroundResourceはビットマップを受け入れません。それ、どうやったら出来るの?

ありがとうございます。

+0

である「が、ビットマップにそれを回すことができません」私の答えの後半はあなたの質問には当てはまりません。あなたは本当にリソース "R.drawable.btn"をビットマップに変えないでください。もしそうなら、私の好奇心を満たし、より良い答えを生み出すために、なぜですか? –

+0

btn.setBackgroundResourceはビットマップをバックグラウンドとして設定できないためです。私もbtn.setBackgroundDrawableを試したと思います。今度はもう一度試してみます。 – BinaryMonster

答えて

18

レイアウトパラメータでスケールを制御できるようにするか、画像を自分で拡大/縮小できます。

は、レイアウトは、画像を拡大縮小することを許可する:手動

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

スケール画像を:

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); 

警告:イメージは、あなたが期待するとおりに拡大縮小画面上に表示されない場合があります。これは、お使いのButtonのレイアウトパラメータに応じて、Androidがデバイスのハードウェア画面の密度に基づいてイメージを拡大縮小することがあるためです。 、私は恐れて

+0

setBackgroundDrawableは推奨されていませんか? – BinaryMonster

+0

設定する必要があります背景、私はコードを編集 – BinaryMonster

+0

ありがとう@BinaryMonster。良いキャッチ。 –

0

これは描画可能

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

画像にビットマップを向けるだろうが描画可能であるとimage1のは、そのため、テキストのビットマップ

関連する問題