Android 直接使用可绘制资源和解码资源的区别

Android 直接使用可绘制资源和解码资源的区别,android,android-drawable,Android,Android Drawable,我正在使用位图资源在传输模式下使用DST_屏蔽另一幅图像。这是位图: (您可能看不到它,因为它是白色和透明的。) 如果我这样加载,一切都会按预期进行: mMaskBitmap = BitmapFactory.decodeResource(getResources(), mMaskId); 但如果我这样加载,就好像遮罩图像是完全透明的: mMaskDrawable = getResources().getDrawable(mMaskId); mMaskBitmap = Bitmap.c

我正在使用位图资源在传输模式下使用
DST_屏蔽另一幅图像。这是位图:

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

如果我这样加载,一切都会按预期进行:

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
、density 320和512x512。这个大小很奇怪,因为资源文件是256x256,但两者都是一样的


我想使用
Drawable
方法,这样资源就可以是一个ninepatch。

我在调用
draw(…)
之前添加了这个:

我可以发誓这是我尝试的第一件事,但不管怎样,它现在起作用了。也许我以前试着清理和重建的时候做错了什么

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