サーフェス ビューの背景色をカメラ サーフェス ビューに設定したいと考えています。
私はこれを同じものを実装するために使用しています。しかし、この例は完全ではありません。他の便利なリンクを教えてください。
ありがとう
サーフェス ビューの背景色をカメラ サーフェス ビューに設定したいと考えています。
私はこれを同じものを実装するために使用しています。しかし、この例は完全ではありません。他の便利なリンクを教えてください。
ありがとう
これを行うための回避策があります。
surfaceview の親ビューグループを追加し、surfaceview の代わりにこのビューグループに背景色を設定します。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_blue_dark">
<com.example.surfacetest.MySurface
android:id="@+id/surface"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
SurfaceView インスタンスに以下を追加します。
surfaceView.setZOrderOnTop(true);
surfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
これで、必要な背景色が得られ、表面ビューが半透明になります。
次のように、SurfaceView でバックグラウンドを機能させるには、ちょっとしたハックアラウンドを行う必要があります。
setBackground
およびsetBackgroundDrawable
メソッドをオーバーライドする
Drawable background
@Override
public void setBackgroundDrawable(Drawable background) {
this.background = background;
}
@Override
public void setBackground(Drawable background) {
this.background = background;
}
setBounds
ドローアブルを呼び出すことを忘れないでください
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
matrix = null;
if (background != null)
background.setBounds(left, top, right, bottom);
}
次に、キャンバスをロック、描画、ロック解除、および投稿しているコードで、背景を追加します
Canvas c = holder.lockCanvas();
if (background != null)
background.draw(c);
// do your stuff here
holder.unlockCanvasAndPost(c);
XML と Java の両方のバックグラウンドで機能します。
これを使って
surfaceview.getHolder().setFormat(PixelFormat.TRANSLUCENT);