2014-04-01 2 views
2

내 게임에서 영원히 스크롤하는 배경으로 사용하기 위해 두 이미지 (둘 다 800 x 1280)를로드하려고합니다. 다음 코드를 사용하여 정상적으로로드 할 수 있습니다.안드로이드 애플 리케이션에 그릴 때 리소스 이미지가 정말로 희미합니다.

public Image newImage(String imageName, ImageFormat format) { 
    Config config = null; 
    if (format == ImageFormat.RGB565) 
     config = Config.RGB_565; 
    else if (format == ImageFormat.ARGB4444) 
     config = Config.ARGB_4444; 
    else 
     config = Config.ARGB_8888; 

    Options options = new Options(); 
    options.inPreferredConfig = config; 

    Bitmap bitmap = null; 
    try { 
     int id = resources.getIdentifier("<package>"+imageName, null, null); 
     bitmap = BitmapFactory.decodeResource(resources, id, options); 
     if (bitmap == null) 
      throw new RuntimeException("Couldn't load bitmap from resources"); 
    } catch (Exception e) { 
     throw new RuntimeException("Failed to load image"); 
    } 

    if (bitmap.getConfig() == Config.RGB_565) 
     format = ImageFormat.RGB565; 
    else if (bitmap.getConfig() == Config.ARGB_4444) 
     format = ImageFormat.ARGB4444; 
    else 
     format = ImageFormat.ARGB8888; 

    return new AndroidImage(bitmap, format); 
} 

그러나 그림을 화면에 그릴 때 실제 이미지보다 훨씬 어둡습니다. 화면 밝기가 100 %로 조정되었는지 확인하고 3 가지 이미지 형식을 모두 시도했습니다. 여기에 무슨 일이 일어나고 있는지의 예입니다

실제 이미지는

enter image description here

스크린 샷

enter image description here

+1

아마도 이미지 때문이 아니라 표시 방법 때문일 수 있습니다. 보기에 일부 알파가 설정되어 있습니까? – Henry

+0

나는 그렇게 생각하지 않는다. 비록 당신이 원한다면 나는 코드를 게시 할 수있다. – user3483611

+0

이 질문은 오래되었지만 파일에서 이미지를로드하고 표시하는 것과 비슷한 문제가 있습니다. 매우 어둡지 만 특정 전화기에서만 나타납니다. @Henry가보기에 알파와 관련이 있다는 것이 옳다고 상상합니다. 그러나 설정이 어디로 가고 있는지 또는 특정 휴대 전화에만 영향을주는 이유는 모르겠습니다. – LarsH

답변

0

이 경우 나도 몰라 무엇을 영향을 받았다. 당신도 마찬가지지만, 비슷한 문제가 있었고 아래에서 해결책을 찾았습니다.

ImageView를 사용하는 스플래시 화면 액티비티가 있으며 파일에 이미지를 동적으로로드합니다.

setContentView(R.layout.activity_splash); 
ImageView imageView = (ImageView)findViewById(R.id.imageView); 

File splashImageFile = new File(dir, filename); 
Drawable splashDrawable = Drawable.createFromPath(splashImageFile.getAbsolutePath()); 
if (splashDrawable != null) { 
    imageView.setImageDrawable(splashDrawable); 
} 
// The following works but maybe only for newer versions of the API: 
// imageView.setImageURI(Uri.fromFile(splashImageFile)); 

이것은 대부분의 휴대폰에서 잘 작동합니다,하지만 그들 중 몇 가지에 이미지가 희미한 약 50 %를 보여줄 것이다 : 여기에 활동의에서 onCreate()에서 발췌 한 것입니다.

여기 저에게 도움이되는 해결책이 있습니다. 위의 기록은 '대신 255의 내가 돈, imageAlpha 55 것을 보여줄 것이다 문제가 발생 휴대폰에

if (Build.VERSION.SDK_INT >= 11) { 
    float alpha = imageView.getAlpha(); 
    Log.d(TAG, "alpha is " + alpha); 
    if (alpha < 1.0) 
     imageView.setAlpha(1.0f); 

    if (Build.VERSION.SDK_INT >= 16) { 
     int imageAlpha = imageView.getImageAlpha(); 
     Log.d(TAG, "imageAlpha is " + imageAlpha); 
     if (imageAlpha < 255) 
      imageView.setImageAlpha(255); 
    } 
} 

: 나는 imageView을 채우기 후 (그리고 파일에서 이미지를로드하기 전에) 다음을 추가 그 일이 어떻게 일어 났는지 알지. 그러나 255로 설정하면 문제가 해결되었습니다.

먼저 활동에 대한 레이아웃 xml 파일에 android:imageAlpha="255" 설정을 시도했지만 해당 속성이 없다는 오류가 발생했습니다. 고맙게도 런타임에 setImageAlpha()이 트릭을했습니다.