TextureView等比全屏播放视频(避免拉伸)

TextureView默认以fitxy的方式加载surface数据,如果需要等比全屏播放视频,避免拉伸,可以采用Matrix对TextureView进行变换

 Matrix matrix = new Matrix();

//第1步:把视频区移动到View区,使两者中心点重合.
matrix.preTranslate((textureViewWidth - videoWidth) / 2, (textureViewHeight - videoHeight) / 2);

//第2步:因为默认视频是fitXY的形式显示的,所以首先要缩放还原回来.
matrix.preScale(videoWidth / textureViewWidth, videoHeight / textureViewHeight);

//第3步,等比例放大或缩小,直到视频区的一边和View一边相等.如果另一边和view的一边不相等,则留下空隙
if (sx >= sy){
    matrix.postScale(sy, sy, textureViewWidth / 2, textureViewHeight / 2);
 }else{
    matrix.postScale(sx, sx, textureViewWidth / 2, textureViewHeight / 2);
}

 mTextureView.setTransform(matrix);
 mTextureView.postInvalidate();

你可能感兴趣的:(Android)