Android 在位图上制作透明画布

Android 在位图上制作透明画布,android,canvas,transparent,Android,Canvas,Transparent,我有两个ImageView,一个用于画布,另一个用于ImageBackground ImageView具有屏幕的大小 当我触摸屏幕时,我需要重新绘制画布,如示例所示: private void reDraw() { Display display = getWindowManager().getDefaultDisplay(); bmOverlay = Bitmap.createBitmap(display.getWidth(), display.getHeight(),

我有两个ImageView,一个用于画布,另一个用于ImageBackground

ImageView具有屏幕的大小

当我触摸屏幕时,我需要重新绘制画布,如示例所示:

    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);

}

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

检查以确保您创建的覆盖位图实际上是透明的。 使用config ARGB_8888显式创建它。


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

检查以确保您创建的覆盖位图实际上是透明的。 使用config ARGB_8888显式创建它。


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

但另一方面,我认为每次都绘制背景图像并不重要。当屏幕刷新时,它总是被绘制出来。但另一方面,我认为每次都绘制背景图像并不重要。当屏幕刷新时,它将始终以任何方式绘制。