비트 맵 모양이 좋지 않고, 디더링이 작동하지 않습니다.
문제
내 앱에서 Coverflow보기를 사용하고 싶습니다.반사 이미지 파트를 얻으려면 다음 코드를 사용했습니다 - http : //www.androidsnippets.com / create-image-with-reflection
Dithering 및 TileMode에 대한 많은 포럼 / 토론을 보았습니다. 토론 된 모든 것을 시도했지만 아무것도 나에게는 아무 것도 없습니다.
fyi - 레이아웃에서 비트 맵을 사용하지 않는 비트 맵을 동적으로 사용하고 있습니다.그리고 나는 그것이 얼마나 나쁜지 보여주기 위해 이미지를 첨부했다.
이 문제를 해결하려고 시도한 것과 나열했습니다.
1. getWindow().setFlags(WindowManager.LayoutParams.FLAG_DITHER, WindowManager.LayoutParams.FLAG_DITHER);
2. getWindow().setFormat(PixelFormat.RGBA_8888);
3. BitmapDrawable baseImageDawable = new BitmapDrawable(getResources().openRawResource(imageId));
baseImageDawable.setDither(true);
baseImageDawable.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
Bitmap originalImage = baseImageDawable.getBitmap();
int width = originalImage.getWidth();
int height = originalImage.getHeight();
Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, 0, width, height, matrix, true);
.
그러나 여전히 반사 이미지가 매우 못생다.
어떻게 해결할 수 있습니까?
해결책 2
위치를 설정 해야하는 위치를 발견했습니다.반사 비트 맵을 만드는 동안 구성을 ARGB_8888로 설정합니다.지금 그것의 일하고 있습니다.
다른 팁
흠.I "라고 생각하십시오."귀하의 문제는 귀하의 비트 맵이 ARGB_8888 (setFormat 호출에도 불구하고)로 작성되지 않는다는 것입니다.OpenRawResource를 사용하여 비트 맵을 만드는 대신 bitmapFactory를 사용하고 bitmap.config.argb_8888을 지정했는지 확인하는 대신 "제안하는 것이 좋습니다."그런 다음 비트 맵에서 도래 할 수 있습니다.그 일식으로 일을 할 수 없게하지 않고이 거리를 추측하기가 어렵습니다.흥미로운이 기사를 찾을 수 있습니다 : http : //www.curious-creature.org/2010/12/08/bitmap-quality-banding-and-dithering/
편집 : 그래서 문제는 분명히 반사 이미지를 할당하는 데 사용되는 CreateBitMap 호출에있었습니다.이야기의 도덕 (IMHO) : Bitmap.config를 명시 적으로 지정할 수없는 CreateBitmap 메소드를 사용하지 마십시오.그렇지 않으면 포레스트 곰팡이가 말할 수 있듯이, 당신이 얻는 것을 결코 알지 못할 것입니다.