在android应用程序中绘制资源图像时,图像非常暗淡
我正在尝试加载两个图像(都是800 x 1280),作为游戏中永久滚动的背景。我可以使用以下代码很好地加载它们:在android应用程序中绘制资源图像时,图像非常暗淡,android,image,brightness,Android,Image,Brightness,我正在尝试加载两个图像(都是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
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);
}
public Image newImage(字符串imageName,ImageFormat){
Config=null;
if(format==ImageFormat.RGB565)
config=config.RGB_565;
else if(format==ImageFormat.argb444)
config=config.ARGB_4444;
其他的
config=config.ARGB_8888;
选项=新选项();
options.inPreferredConfig=config;
位图=空;
试一试{
int id=resources.getIdentifier(“+imageName,null,null);
位图=BitmapFactory.decodeResource(资源、id、选项);
如果(位图==null)
抛出新的RuntimeException(“无法从资源加载位图”);
}捕获(例外e){
抛出新的RuntimeException(“加载映像失败”);
}
if(bitmap.getConfig()==Config.RGB_565)
format=ImageFormat.RGB565;
else if(bitmap.getConfig()==Config.ARGB_4444)
格式=ImageFormat.argb444;
其他的
格式=ImageFormat.argb888;
返回新的AndroidImage(位图,格式);
}
但当我在屏幕上绘制它们时,它们明显比实际图像暗。我已经确保屏幕亮度调整到100%,并且我已经尝试了所有3种不同的图像格式。下面是正在发生的事情的一个例子:
真实图像
截图
我不知道这是否影响了你,但我有一个类似的问题,下面是我找到的解决方案 我有一个启动屏幕活动,它使用ImageView,并从文件中动态加载一个图像以放入其中。下面是该活动的onCreate()的摘录: 这在大多数手机上都可以,但在其中一些手机上,图像会显示约50%的暗淡 这是对我有效的修复方法。在填充
imageView
之后(从文件加载图像之前),我添加了以下内容:
if(Build.VERSION.SDK\u INT>=11){
float alpha=imageView.getAlpha();
Log.d(标签“alpha为”+alpha);
如果(α<1.0)
imageView.setAlpha(1.0f);
如果(Build.VERSION.SDK_INT>=16){
int-imageAlpha=imageView.getImageAlpha();
Log.d(标签“imageAlpha为”+imageAlpha);
如果(imageAlpha<255)
setImageAlpha(255);
}
}
在出现问题的手机上,上面的日志显示imageAlpha是55,而不是255。我不知道这是怎么发生的。但将其设置为255解决了问题
我第一次尝试在活动的布局xml文件中设置
android:imageAlpha=“255”
,但得到一个错误,说没有这样的属性。谢天谢地,setImageAlpha()
在运行时成功了。可能不是因为图像,而是因为您显示图像的方式。视图上是否设置了alpha?我不这么认为,如果你愿意,我可以发布代码。这个问题很老,但我在从文件加载图像并显示它时遇到了类似的问题-它显示得很暗,但仅在某些手机上。我想@Henry是对的,它与视图中的alpha有关,但我不知道设置在哪里,也不知道为什么它只影响某些手机。
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));
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);
}
}