Android Camera2全屏展示时图像会拉伸

都知道在进行手机相机图像预览的时候一般都会设置展示的比例为4:3或者16:9之类的,一旦设置了这写固定的比例后,在需要手机全屏展示的时候就会出现问题,会明显的看出展示的图像被挤压了,因此如何解决这么问题呢?

这里以TextureView进行展示相机镜头返回的图像。

public class TexturePreviewView extends TextureView {

    private Context mContext;
    public int mRatioWidth = 0, mRatioHeight = 0;

    public TexturePreviewView(@NonNull Context context) {
        super(context);
        this.mContext = context;
    }

    public TexturePreviewView(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        this.mContext = context;
    }

    public TexturePreviewView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        this.mContext = context;
    }

    public void setAspectRatio(int width, int height) {
        if (width < 0 || height < 0) {
            throw new IllegalArgumentException("Size cannot be negative.");
        }
        mRatioWidth = width;
        mRatioHeight = height;
        requestLayout();
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int 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);
            }
        }
    }
}

接下来就是要使用Camera2进行图像预览了,至于Camera2的使用这里就不在赘述了,之前的文章里面有CSDN 或者百度一下有很多。

说下重点:

1. 

这里面这个方法的调用很关键,这两个参数分别传系统相机镜头返回尺寸的高和宽,也就是说

width = 系统相机镜头传的高

heigth =  系统相机镜头传的宽

这个方法在获取到系统相机返回的寸尺之后调用这个方法即可后面的onMeasure方法里面写的不用动。

案例在此需要的自取:Camera2全屏不拉伸展示的资源-Android文档类资源-CSDN下载

day day up! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wulileaf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值