2012-03-21 31 views
13

Trên trình mô phỏng chạy Android 4.0 hoặc 4.0.3, tôi thấy dải màu khủng khiếp mà tôi không thể loại bỏ được. Trên tất cả các phiên bản Android khác tôi đã thử nghiệm, gradient trông mịn màng.Dải màu chỉ trên Android 4.0+

Tôi có SurfaceView được định cấu hình là RGBX_8888 và dải không hiện diện trong canvas được hiển thị. Nếu tôi làm hoà sắc hình ảnh bằng cách phủ một mẫu nhiễu ở phần cuối của kết xuất, tôi có thể làm cho các gradient trở nên mượt mà trở lại, mặc dù rõ ràng là ở mức chi phí cho hiệu suất mà tôi muốn tránh.

Vì vậy, dải được giới thiệu sau. Tôi chỉ có thể giả định rằng, trên 4.0+, SurfaceView của tôi đang được lượng tử thành độ sâu bit thấp hơn tại một số điểm giữa nó được rút ra và được hiển thị, và tôi có thể nhìn thấy từ một ảnh chụp màn hình mà gradient đang đẩy 8 giá trị tại một thời điểm mỗi kênh, cho thấy lượng tử hóa thành 555 (không phải 565).

Tôi đã thêm thông tin sau vào chức năng Hoạt động onCreate, nhưng nó không có sự khác biệt.

getWindow().setFormat(PixelFormat.RGBA_8888); 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER); 

Tôi cũng đã thử đặt ở trên trong onAttachedToWindow() thay vào đó, nhưng vẫn không có thay đổi.

(Tôi tin rằng RGBA_8888 là định dạng cửa sổ mặc định anyway cho 2.2 trở lên, do đó, nó ít ngạc nhiên khi thiết lập một cách rõ ràng định dạng mà không ảnh hưởng đến 4.0 +.)

nào rời khỏi câu hỏi, nếu nguồn là 8888 và đích đến là 8888, giới thiệu số lượng/dải là gì và tại sao nó chỉ xuất hiện trên 4.0+?

Rất khó hiểu. Tôi tự hỏi liệu có ai có thể làm sáng tỏ không?

+1

bản sao có thể có của [Bitmap trên ICS được tải với định dạng pixel sai] (http://stackoverflow.com/questions/9097887/bitmaps-on-ics-are-loaded-with-wrong-pixel-format) –

+0

Cảm ơn cho liên kết đó ... thực sự trông giống như vấn đề tương tự. Một số câu trả lời cho thấy rằng nó có thể chỉ đơn giản là một vấn đề giả lập và, mặc dù không có câu trả lời dứt khoát, tôi sẽ đi với điều đó ngay bây giờ. – threeshinyapples

+0

Tôi gặp vấn đề tương tự. Tôi đã có thể loại bỏ các vấn đề trên v2.2 + và v2.3 +, nhưng không v4.0 + Tôi muốn biết nếu ai đó biết một giải pháp này? – Sent1nel

Trả lời

2

Hãy thử dis ..

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
Bitmap gradient = BitmapFactory.decodeResource(getResources(), R.drawable.gradient, options); 

findViewById(R.id.main).setBackgroundDrawable(new BitmapDrawable(gradient)); 
0

Bật giả lập "GPU Sử dụng Host" tùy chọn cố định các vấn đề về màu sắc đối với tôi, tín dụng đi vào câu trả lời này https://stackoverflow.com/a/17166234/1287459

Trong trường hợp của tôi, tôi đã sử dụng Android 4.2 .2.

+0

một caveat: ảnh chụp màn hình không hoạt động khi sử dụng "Host GPU" (chúng xuất hiện màu đen) –

+0

Làm việc trong trường hợp của tôi ... Tôi đã làm điều này để tôi có thể có được một số ảnh chụp màn hình tốt cho Google Play. – Georgie

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