2

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

2 に答える 2

2

この投稿は1年前のものですが、色を0に設定します。これは黒を表します。使用する

canvas.drawColor( Color.TRANSPARENT, PorterDuff.Mode.CLEAR );

それを透明にするために。

于 2013-08-25T20:59:20.313 に答える
1

この方法では、SurfaceViewsを透過的にすることはできません。API 11以降を使用している場合は、SurfaceTextureを試してください。それ以外の場合は、通常のビューに描画してください。

SurfaceViewは、パフォーマンスに最適化された特別な方法でサーフェス合成を調整する特殊なケースです。構成されている場合は、ビュー階層のSurfaceViewの上にコンテンツを描画できますが、SurfaceViewのコンテンツをその背後のコンテンツとブレンドすることはできません。

于 2012-09-23T19:51:03.790 に答える