直接使用Drawable和解码资源之间的区别

时间:2014-12-14 22:12:13

标签: android android-drawable

我正在使用位图资源来使用DST_IN传输模式屏蔽其他图像。这是位图:

enter image description here

(你可能看不到它,因为它是白色透明的。)

如果我像这样加载它,一切都按预期工作:

mMaskBitmap = BitmapFactory.decodeResource(getResources(), mMaskId);

但是,如果我像这样加载它,就像掩模图像完全透明一样:

mMaskDrawable = getResources().getDrawable(mMaskId);    
mMaskBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
mMaskCanvas = new Canvas(mMaskBitmap);
mMaskDrawable.draw(mMaskCanvas);

有什么区别?

两种方式生成的位图是config ARGB_8888,密度320和512x512。大小很奇怪,因为资源文件是256x256,但它们都是相同的。

我想使用Drawable方法,因此资源可以是9patch。

1 个答案:

答案 0 :(得分:0)

我在致电draw(...)之前添加了这个:

mMaskDrawable.setBounds(0, 0, w, h);

我可以发誓这是我尝试的第一件事之一,但无论如何,它现在有效。也许我之前尝试清理和重建时做错了。