SurfaceView中的PNG格式图片隐藏不见的原因-背景覆盖

今天偶然发现了一个问题:在SurfaceView中设置了背景后,发现添加的图片无法显示出来了。

//设置背景
setBackgroundResource(R.drawable.background);
//获得图片
bitmapDrawable=(BitmapDrawable)getResources().getDrawable(R.drawable.test_png);
//设置显示大小
bitmapDrawable.setBounds(0, 0, 80, 80);
bitmap=bitmapDrawable.getBitmap();
//画出图片
canvas.drawBitmap(bitmap, 50, 50, null);

 在上面代码中,一个背景透明的PNG---test_png无法显示出来。但是如果不设置背景,或者把背景调成透明后就能显示出来。 
  

不使用SurfaceView,而直接用xml添加图片,则背景和PNG都可以正常显示。

原因就四个字:背景覆盖---图片给背景挡住了。(可能和MyWindow和SurfaceView的前后顺序有关)

但是解决办法如下:

//改变Surface在MyWindow中的位置
//setZOrderOnTop(true);
//把背景透明化
// getHolder().setFormat(PixelFormat.TRANSLUCENT);
当然,你还可以直接画出背景图,从而避免使用setBackGround方法。


你可能感兴趣的:(android)