안드로이드 4.0 또는 4.0.3을 실행하는 에뮬레이터에서 나는 제거 할 수없는 끔찍한 컬러 밴딩을보고 있습니다. 테스트 한 다른 모든 Android 버전에서 그래디언트가 부드럽게 보입니다.안드로이드 4.0 이상에서만 컬러 밴딩
저는 RGBX_8888로 구성된 SurfaceView가 있으며 렌더링 된 캔버스에 밴딩이 없습니다. 렌더링의 마지막에 노이즈 패턴을 오버레이하여 이미지를 수동으로 디더링하면 그래디언트를 부드럽게 다시 만들 수 있습니다. 물론 성능을 저하시키지 않고 피할 수 있습니다.
따라서 밴딩은 나중에 소개됩니다. 나는 4.0+에서 내 SurfaceView가 그려지고 표시되는 사이의 어느 지점에서 더 낮은 비트 깊이로 양자화되고 있다고 가정 할 수 있습니다. 화면 캡처에서 그래디언트가 한 번에 8 개의 값을 스테핑하는 것을 볼 수 있습니다. 각 채널은 555 (565 아님)로 양자화를 제안합니다.
다음 활동 내역 onCreate 함수에 다음을 추가했지만 아무런 차이가 없습니다.
getWindow().setFormat(PixelFormat.RGBA_8888);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
위의 내용을 onAttachedToWindow()에 넣으려고했지만 변경 사항이 없습니다.
(나는 RGBA_8888 기본 창 형식은 위의 2.2 어쨌든이라고 생각, 그래서 명시 적으로 형식을 설정하면 4.0 이상에 영향을주지 않습니다 깜짝 선물입니다.) 소스 인 경우
이 질문 잎 어떤 8888이고 대상은 8888입니다. 양자화/밴딩을 소개하고있는 이유는 4.0+에서만 나타나는 이유는 무엇입니까?매우 수수께끼입니다. 나는 누군가가 약간의 빛을 발산 할 수 있는지 궁금하다.
가능한 중복 [ICS의 비트 맵이 잘못된 픽셀 형식으로로드 됨] (http://stackoverflow.com/questions/9097887/bitmaps-on-ics-are-loaded-with-wrong-pixel-format) –
감사 그 링크를 위해 ... 실제로 같은 문제처럼 보입니다. 일부 답변은 단순히 에뮬레이터 문제 일 수 있으며 확실한 대답은 없지만 지금은 그 문제를 해결할 예정입니다. – threeshinyapples
나는 똑같은 문제를 겪고있다. v2.0 + 및 v2.3 +에서이 문제를 제거 할 수 있었지만 v4.0 이상에서는 문제를 해결할 수있었습니다. 누군가이 문제에 대한 해결책을 알고 있는지 알고 싶습니까? – Sent1nel