2013-01-07 35 views
6

Trong ứng dụng của tôi, tôi sử dụng drawBitmap() để hiển thị bitmap có độ phân giải thấp trong khi tôi phóng to nó ra. Tôi đã thử nghiệm trên một số thiết bị (Galaxy Tab, Kindle Fire, Moto Xoom và Nexus 7). Trong tất cả chúng tôi nhận được chất lượng kết xuất giống nhau, ngoại trừ trong Nexus 7. Bạn có thể thấy trên màn hình được đính kèm với ảnh khác biệt. Khu vực bên ngoài là một trong những Tôi đang sử dụng drawBitmap, một cái gì đó như thế này:drawBitmap với các kết quả hiển thị khác nhau (Nexus 7 so với các thiết bị khác)

mSrcRectF.set(src_x1, src_y1, src_x2, src_y2); 
mDesRectF.set(view_x1, view_y1, view_x2, view_y2); 
mMatrix.setRectToRect(mSrcRectF, mDesRectF, Matrix.ScaleToFit.CENTER); 
canvas.drawBitmap(bmp, mMatrix, mPagePaint); 

Nếu tôi cố gắng sử dụng các biến thể drawBitmap khác (Bitmap bitmap, Rect src, RectF dst, sơn sơn) mà không có ma trận tôi nhận được cùng một kết quả.

Tôi tin rằng sự cố/sự khác biệt này có thể liên quan đến tăng tốc phần cứng. Nếu tôi tắt nó (trong tệp kê khai), tôi nhận được kết quả tương tự cho tất cả các thiết bị. Nếu tôi bật tính năng này, kết xuất sẽ cải thiện cho tất cả chúng ngoại trừ Nexus, nhưng vẫn hiển thị bitmap 'pixelated' hơn. Tôi đã đọc rằng một số thói quen không được hỗ trợ trong HA, nhưng ngay cả như vậy, tôi không thể hiểu những gì đang xảy ra trong trường hợp này. Trong bài đăng gần đây của Romain Guy trong blog của anh ấy, anh ấy nhận xét:

Lưu ý rằng bitmap alpha chỉ hoạt động với trình đổ bóng khi gọi phiên bản "đơn giản" của drawBitmap(). Các biến thể lấy Ma trận hoặc hình chữ nhật nguồn và đích không được hỗ trợ với tăng tốc phần cứng tại thời điểm này.

Ai đó có thể làm sáng tỏ điều này?

Nexus 7: Nexus 7 screen shot

Xoom (hay Galaxy Tab, Kindle Fire): Xoom screen shot

Trả lời

1

Bạn có thể lựa chọn tắt tăng tốc phần cứng cho Canvas của bạn theo các hướng dẫn trong this Stack Overflow article

Đó là không phải là giải pháp lý tưởng, nhưng nó có thể cho phép phần còn lại của ứng dụng của bạn nhận được lợi ích của tăng tốc phần cứng cho đến khi tất cả các tùy chọn để drawBitmap() hỗ trợ tăng tốc phần cứng.

+0

Vâng, tôi nghĩ rằng tôi sẽ phải ở lại với điều đó cho đến khi họ thêm hỗ trợ cho nó. – Ander

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