我想在ImageView上放置一个透明的SurfaceView。我在SurfaceView子类构造函数
中有以下内容setZOrderOnTop(true); // necessary
SurfaceHolder h = getHolder();
h.setFormat(PixelFormat.TRANSPARENT);
我也在onDraw()函数的开头有这个
canvas.drawColor( 0, PorterDuff.Mode.CLEAR );
然而,我得到的只是一个阻挡图像的黑色背景。
有什么想法吗?
PS,我也试过这个而不是drawColor(),但无济于事
Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));
canvas.drawPaint(paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC));
答案 0 :(得分:2)
我知道,这篇文章已经有一年了,但你将颜色设置为0,代表黑色。使用
canvas.drawColor( Color.TRANSPARENT, PorterDuff.Mode.CLEAR );
使其透明。
答案 1 :(得分:1)
SurfaceViews不能以这种方式透明。如果您使用的是API 11或更高版本,请尝试使用SurfaceTexture,或者在其他情况下使用常规视图。
SurfaceView是一种特殊情况,它以一种针对性能优化的特殊方式协调表面合成。您可以在视图层次结构中为SurfaceView绘制内容(如果已为其配置),但无法将SurfaceView的内容与其背后的内容混合。