2013-03-26 13 views
6

Potrzebuję przeskalować obraz tła przycisku, ale nie mogę go przekształcić w mapę bitową. Oto kod teraz:Java (Android): Jak skalowac losowanie bez Bitmapy?

int height = 50; 
int width = 80; 

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

Teraz muszę Scale „R.drawable.btn” zgodnie z „wysokości” i „szerokość”. Obiekt setBackgroundResource nie zaakceptuje bitmapy. Jak mogę to zrobić?

Dziękuję.

+0

powodu tekstu „ale nie można przekształcić go w Bitmap”, obawiam że druga połowa mojej odpowiedzi nie dotyczy twojego pytania. Czy naprawdę nie należy zamieniać zasobu "R.drawable.btn" w bitmapę? Jeśli tak, to aby zaspokoić moją ciekawość i pomóc w uzyskaniu lepszej odpowiedzi, dlaczego? –

+0

Ponieważ obiekt btn.setBackgroundResource nie pozwala ustawić bitmapy jako tła. Myślę, że również wypróbowałem btn.setBackgroundDrawable, teraz spróbuję jeszcze raz. – BinaryMonster

Odpowiedz

18

Można zezwolić parametrom układu na kontrolowanie skali lub skalować obraz samodzielnie.

Pozostawić układ do skalowania obrazu:

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

Skala obraz ręcznie:

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

Warning: Obraz nie może ekranie pojawi skalowane dokładnie jak można się spodziewać. Dzieje się tak dlatego, że w zależności od parametrów układu telefonu Button system Android może dodatkowo skalować obraz na podstawie gęstości ekranu urządzenia.

+0

Czy ustawienie setBackgroundDrawable nie jest przestarzałe? – BinaryMonster

+0

Powinny być ustawioneBackground, ja edytowałem kod – BinaryMonster

+0

Dzięki @BinaryMonster. Dobry połów. –

0

to okaże się bitmapę do rozciągliwej

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

obrazu jest odkształcalne i Image1 jest bitmapy

Powiązane problemy