Android颜色格式(RGB565、ARGB8888)
(使用上述选项创建Bitmat) 当使用上述代码时,我得到以下结果Android颜色格式(RGB565、ARGB8888),android,bitmap,rgb,bitmapfactory,argb,Android,Bitmap,Rgb,Bitmapfactory,Argb,(使用上述选项创建Bitmat) 当使用上述代码时,我得到以下结果 我的平板电脑设备上没有色带 测试手机上明显的色带(三星Galaxy Ace) 我的平板电脑上没有色带 银河王牌上明显的色带 结果同上 getHolder().setFormat(PixelFormat.RGBA_888); Options options = new BitmapFactory.Options(); options.inDither=true;
- 我的平板电脑设备上没有色带
- 测试手机上明显的色带(三星Galaxy Ace)
- 我的平板电脑上没有色带
- 银河王牌上明显的色带
- 结果同上
getHolder().setFormat(PixelFormat.RGBA_888); Options options = new BitmapFactory.Options(); options.inDither=true; options.inScaled = true; options.inPreferredConfig = Bitmap.Config.ARGB_565; options.inPurgeable=true;
- 我平板电脑上的色带
- SG Ace上的色带
getHolder().setFormat(PixelFormat.RGB_565); Options options = new BitmapFactory.Options(); options.inDither=true; options.inScaled = true; options.inPreferredConfig = Bitmap.Config.RGB_565; options.inPurgeable=true;
- 我平板电脑上的色带
- SG Ace上的色带
(顺便说一句,我已经阅读了官方指南,在向SO发布问题之前,我总是会查看该指南以及其他相关SO问题,但官方指南(通常情况下)没有为我澄清这一点,我无法通过其他问题找到答案,因此,如果它已经在这里,我深表歉意).565格式是默认格式,因为它可以更快地绘制,并且需要更少的处理能力。至于你的SG Ace,我相信不久前只有某些版本的Android支持8888颜色 为了让我的一个应用程序背景成为not band,我必须执行以下操作: 1-将背景添加到可绘制文件夹 2-使用以下内容创建background_dithered.xml:
getHolder().setFormat(PixelFormat.RGB_565);
Options options = new BitmapFactory.Options();
options.inDither=true;
options.inScaled = true;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inPurgeable=true;
有人能解释一下下面这句话的目的吗
options.inPreferredConfig=Bitmap.Config.xxxxxxx
这似乎对已绘制的位图没有任何影响
不同的位图
配置将具有不同的内存占用<代码>RGB_565是一种16位彩色格式<代码>ARGB_8888是32位格式
无论哪个
getHolder().setFormat()代码>您选择的配置,或者它是如何绘制的,ARGB_8888
位图将比RGB_565
格式的位图(内存中)大得多。啊,这可能解释了Ace的问题,您上面的实现能与surfaceview一起工作吗?(我正在用Canvas.drawbitmap绘制背景)-谢谢,我不确定,因为我只使用了静态png,但您可以尝试在onAttachedToWindow OverrideProperty上执行设置格式,确保ARGB_8888现在是默认值。谢谢@TylerM,我了解不同的格式和内存大小等,我不明白的是你/我上面引用的那句话的目的。你是说,如果我有一个RGB8888图像,并加载它与inPreferredConfig设置为RGB565它将在内存中更小?如果是这种情况,为什么当我将支架设置为8888时,它仍然显示为无带入(即32位格式)?对不起,如果这不合理,但我不明白。。。。。。。谢谢:-/
getHolder().setFormat(PixelFormat.RGB_565);
Options options = new BitmapFactory.Options();
options.inDither=true;
options.inScaled = true;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inPurgeable=true;
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:antialias="true"
android:dither="true"
android:src="@drawable/background" />
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
getWindow().setFormat(PixelFormat.RGBA_8888);
}