2

2つのSurfaceViewを含むFrameLayoutがあります。1つはカメラのプレビューを表示し、もう1つは描画に使用するカスタムサーフェスビューです。問題は、サーフェスビューが表示されないことです。カメラがプレビューを開始する行をコメントアウトすると、黒の背景にコメントアウトされます。これは、サーフェスビューが適切に配置されていることを示していますが、カメラプレビューが描画されるときに、問題が発生していると思われます。

カメラビュー:

public CameraView(Context context, AttributeSet a) {
    super(context, a);
    mHolder = getHolder();
    mHolder.addCallback(this);
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}

カスタムビュー:

public InclinaisonGauge(Context context, AttributeSet attrs) {
    super(context, attrs);
    getHolder().addCallback(this);
    getHolder().setFormat(PixelFormat.TRANSLUCENT);
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
    run = true;
    updateThread = new Thread()
    {
        public void run()
        {
            Canvas c = null;
            final SurfaceHolder inclHolder = getHolder();
            while (run) {
                try {
                    c = inclHolder.lockCanvas();
                    if(c!=null)
                    {
                        synchronized (inclHolder) {
                            onDraw(c);
                        }
                    }
                } finally {
                // do this in a finally so that if an exception is thrown
                // during the above, we don't leave the Surface in an
                // inconsistent state
                if (c != null) {
                    inclHolder.unlockCanvasAndPost(c);
                }
            }           
        }
    }
};

そして、カスタムビューでこの非常に単純な描画方法を使用して、フレームレートの問題ではないことを確認します

public void doDraw(final Canvas canvas, final boolean bigSize, float daDirection)
{
    canvas.drawARGB(255, 255, 255, 255);
}

誰かがこれを経験しましたか?

ありがとう

4

2 に答える 2

7

わかりました、他の誰かがこれを取得した場合、解決策はsurfaceViewでこれを呼び出すことです

this.setZOrderMediaOverlay(true);
于 2012-09-24T11:26:45.127 に答える
3

SurfaceViewsをオーバーレイとして使用することは意図されていないと思いますが、この動作を実現することは可能です。あなたがしなければならないことは、SurfaceViewクラスが作成されたときです:

    setZOrderMediaOverlay(true);
    getHolder().setFormat(PixelFormat.TRANSPARENT);
于 2016-02-02T16:12:59.847 に答える