【问题标题】:Resource images really dim when painted in android app在 android 应用程序中绘制时,资源图像真的很暗
【发布时间】:2014-04-01 05:01:44
【问题描述】:

我正在尝试加载两张图片(均为 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 种不同的图像格式。这是正在发生的事情的一个例子:

实物图

截图

【问题讨论】:

  • 可能不是因为图像,而是因为你显示它的方式。视图上是否设置了一些 alpha?
  • 我不相信,不过如果你愿意,我可以发布代码。
  • 这个问题很老了,但我在从文件加载图像并显示它时遇到了类似的问题 - 它显示得很暗,但仅在某些手机上。我想@Henry 是对的,它与视图上的 alpha 有关,但我不知道它在哪里设置或为什么它只影响某些手机。

标签: android image brightness


【解决方案1】:

我不知道这是否影响了您,但我遇到了类似的问题,下面是我找到的解决方案。

我有一个启动屏幕活动,它使用 ImageView,并从文件中动态加载图像以放入其中。以下是 Activity 的 onCreate() 的摘录:

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% 的暗度。

这是对我有用的修复程序。我在填充 imageView 之后(在从文件加载图像之前)添加了以下内容:

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);
    }
}

在出现问题的手机上,上面的日志显示 imageAlpha 是 55,而不是 255。我不知道这是怎么发生的。但是将其设置为 255 可以解决问题。

我首先尝试在 Activity 的布局 xml 文件中设置 android:imageAlpha="255",但收到错误消息,提示没有此类属性。幸运的是,setImageAlpha() 在运行时起到了作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-19
    • 2013-07-03
    • 2014-12-10
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多