2013-01-21 26 views
5

Tôi đang cố gắng tạo chín hình ảnh bản vá theo lập trình. Tôi đã thử cách tiếp cận Griffey's nhưng dường như không làm cho nó hoạt động. Có rất ít thông tin về cách sử dụng lớp học. Tôi tin rằng tôi đang nhập bitmap không chính xác. Nếu bất cứ ai biết làm thế nào để có được điều này để làm việc hoặc biết một cách tốt hơn, tôi rất muốn đánh giá cao sự giúp đỡ của bạn.Tạo hình ảnh có bản vá chín với mã

Mã của tôi:

// Dynamically create the 9patch image and apply it to a LinearLayout 
LinearLayout llcode = (LinearLayout) findViewById(R.id.llcode); 
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.white_button); 
Drawable np = NinePatchBitmapFactory.createNinePathWithCapInsets(getResources(), bitmap, 15, 15, 16, 16, null); 

llcode.setBackgroundDrawable(np); 

// The following code using the actual 9patch image: white_button_np.9.png 
LinearLayout llxml = (LinearLayout) findViewById(R.id.llxml); 
llxml.setBackgroundDrawable(getResources().getDrawable(R.drawable.white_button_np)); 

ảnh chụp màn hình này cho thấy phương pháp theo chương trình trên và phương pháp 9patch điển hình sử dụng công cụ android ở phía dưới.

enter image description here

Hình ảnh gốc trước khi được chuyển đổi thành 9patch.

enter image description here

+1

Sau một số thử nghiệm khác, tôi đã phát hiện ra rằng lỗi ở trên chỉ xảy ra trong điện thoại cũ và tất cả các trình giả lập. Tôi đã thử nghiệm trên một chiếc Nexus Galax chạy 4.1.2 và lớp của Griffey đã hoạt động tốt. Tôi đã thử nghiệm trên một Droid X chạy 2.3.4 và tất cả các trình giả lập (bao gồm Galaxy Nexus-4.1.2) và LinearLayout có các màu lạ khác nhau như ảnh chụp màn hình ở trên. – Brendan

+0

Tôi cũng bị mắc kẹt trên cái này, bạn có tìm cách giải quyết nó không? – Nativ

+0

Tôi đã thử nghiệm điều này với các nút với trình giả lập. Trong API cấp 10 nó dường như bị hỏng, nhưng trong API cấp 16 nó hoạt động OK cho tôi. – Scorchio

Trả lời

0

Bạn đã cố gắng buộc các cấu hình bộ giải mã để đảm bảo có một kênh alpha?

Thử đặt inPreferredConfig thành ARGB_8888.

+0

Cảm ơn bạn đã đề xuất. Thật không may, điều đó dường như không có hiệu lực. – Brendan

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