在BitMap上创建透明画布

时间:2011-08-20 11:04:29

标签: android canvas transparent

我有2个ImageViews,1个用于Canvas,其他用于ImageBackground。

ImageViews具有屏幕大小。

当我触摸屏幕时,我需要像示例一样重绘Canvas:

    private void reDraw() {
    Display display = getWindowManager().getDefaultDisplay();
    bmOverlay = Bitmap.createBitmap(display.getWidth(), display.getHeight(), oBitmap.getConfig());
    oCanvas = new Canvas(bmOverlay);

    //I need to erase this line
    oCanvas.drawBitmap(bmpBackGround, new Matrix(), null);

    //this code paint some bitmaps on the canvas
    for (ColorBall ball : colorballs) {
        oCanvas.drawBitmap(ball.getBitmap(), ball.getX(), ball.getY(), null);
    }
    //set the canvas on the image view
    getImageView2().setImageBitmap(bmOverlay);

}

但是,在这个例子中,当我触摸屏幕时,我重绘了Bitmap。我需要重绘一个透明的Canvas,因为我不需要在背景上重绘Bitmap,因为位图永远不会改变。但是如果我不重绘位图,背景会保持黑色并且位图保持在背面。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

检查以确保您创建的叠加位图实际上是透明的。 使用配置ARGB_8888明确创建它。 http://developer.android.com/reference/android/graphics/Bitmap.Config.html

您可能希望将位图的创建移出reDraw方法,而只是创建一次。