使用カメラ2は、フルスクリーンソリューションとして表示されていないフルスクリーンTextureViewを設定しました

あなたが公式のデモを使用している場合は、次のようにコードがなければならないことを、彼らのonMeasureのTextureView()メソッドを検索します。

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int width = MeasureSpec.getSize(widthMeasureSpec);
    int height = MeasureSpec.getSize(heightMeasureSpec);
    if (0 == mRatioWidth || 0 == mRatioHeight) {
        setMeasuredDimension(width, height);
    } else {
        if (width < height * mRatioWidth / mRatioHeight) {
            setMeasuredDimension(width, width * mRatioHeight / mRatioWidth);
        } else {
            setMeasuredDimension(height * mRatioWidth / mRatioHeight, height);
        }
    }
}

このコードは、TextureView電話画面を超えない幅と高さの場合に最大となります。
解決策はTextureViewは常に最大の境界ではなく、過剰プレビューを(実際には、まだ撮影することができる)に達するようにすることです。コードは以下の通りであります:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int width = MeasureSpec.getSize(widthMeasureSpec);
    int height = MeasureSpec.getSize(heightMeasureSpec);
    if (0 == mRatioWidth || 0 == mRatioHeight) {
        setMeasuredDimension(width, height);
    } else {
    	//注意这里骚操作,替换"小于号"为"大于号"
        if (width > height * mRatioWidth / mRatioHeight) {    
            setMeasuredDimension(width, width * mRatioHeight / mRatioWidth);
        } else {
            setMeasuredDimension(height * mRatioWidth / mRatioHeight, height);
        }
    }
}

あなたはプログラマが被害を受けていること、コードのどのくらいの作品を知っているに実際には、の決意条件は、「<」に置き換え「>」。

公開された208元の記事 ウォンの賞賛844 ビュー122万+

おすすめ

転載: blog.csdn.net/baishuiniyaonulia/article/details/104114203