現在、複数のサーフェス ビューと、単一のビューの 1 つをクリッピングして円として表示することに問題があります。それは画像で最もよく説明されています:
したがって、このビューでは、カメラのプレビューを表示しているフルスクリーンビューと、MediaPlayer でファイルを再生しているトップビューの 2 つのサーフェスビューがあります。次の行を使用して、一番上のものをプレビューの上に配置しました。
surfaceView.setZOrderMediaOverlay(true);
ご覧のとおり、次のコードでこれを円にマスクしようとしました:
@Override
protected void dispatchDraw(Canvas canvas) {
Path clipPath = new Path();
clipPath.addCircle(getWidth() / 2, getHeight() / 2, getWidth() / 2, Path.Direction.CCW);
canvas.clipPath(clipPath);
super.dispatchDraw(canvas);
}
しかし、なかなかうまくいかなかったようです。最初はこれはマスキング コードの問題だと思っていましたが、次の画像のようにプレビュー サーフェス ビューを削除すると、マスキングが正常に機能することがわかりました。
なぜこれが発生しているのか、またはそれを修正する方法について、誰にもアイデアがあります:S?
ご協力いただきありがとうございます