2013-03-26 38 views
6

Tôi cần chia tỷ lệ hình nền của một nút nhưng không thể biến nó thành một ảnh bitmap. Đây là mã ngay bây giờ:Java (Android): Làm cách nào để chia tỷ lệ có thể vẽ mà không có Bitmap?

int height = 50; 
int width = 80; 

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

Bây giờ tôi cần phải mở rộng "R.drawable.btn" theo "chiều cao" và "chiều rộng". SetBackgroundResource sẽ không chấp nhận một Bitmap. Làm thế nào để làm điều đó?

Cảm ơn bạn.

+0

Bởi vì văn bản của bạn "nhưng không thể biến nó thành một Bitmap", tôi sợ rằng phần thứ hai của câu trả lời của tôi, bên dưới, không áp dụng cho câu hỏi của bạn. Bạn có thực sự cần phải giữ từ việc chuyển đổi tài nguyên "R.drawable.btn" thành một Bitmap không? Nếu vậy, để thỏa mãn sự tò mò của tôi và giúp tạo ra một câu trả lời tốt hơn, tại sao? –

+0

Vì btn.setBackgroundResource không cho phép tôi đặt Bitmap làm nền. Tôi nghĩ rằng tôi cũng đã thử btn.setBackgroundDrawable, bây giờ tôi sẽ thử lại. – BinaryMonster

Trả lời

18

Bạn có thể cho phép tham số bố cục kiểm soát tỷ lệ hoặc bạn có thể tự chia tỷ lệ hình ảnh.

Cho phép bố trí để chia tỷ lệ ảnh:

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

Scale hình ảnh bằng tay:

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: Hình ảnh có thể không xuất hiện trên màn hình có quy mô chính xác như bạn mong đợi. Điều này là do tùy thuộc vào thông số bố cục của Button, Android có thể mở rộng quy mô hình ảnh dựa trên mật độ màn hình phần cứng của thiết bị của bạn.

+0

Không được đặtBackgroundDrawable deprecated? – BinaryMonster

+0

Nên được đặtBackground, tôi đã chỉnh sửa mã – BinaryMonster

+0

Cảm ơn @BinaryMonster. Nắm bắt tốt. –

0

này sẽ biến một bitmap thành một drawable

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

hình ảnh là drawable và image1 là bitmap

Các vấn đề liên quan