Android的VideoView比例缩放 [英] Android VideoView Proportional Scaling

查看:4208
本文介绍了Android的VideoView比例缩放的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Android的VideoView,有没有什么办法来达到同样的效果ImageView.ScaleType.CENTER_CROP?

In Android's VideoView, is there any way to achieve the same effect as ImageView.ScaleType.CENTER_CROP?

也就是说,我希望我的VideoView玩,使其充满整个屏幕无失真的视频。如果视频宽高比并不完全适合屏幕的,那么它应该被裁剪,而不是扭曲的。

That is, I want my VideoView to play the video such that it fills the entire screen without distortion. If the video aspect ratio does not exactly fit the screen's, then it should be cropped rather than distorted.

下面将溶液填充屏幕,但不保持视频的高宽比: http://stackoverflow.com/a/6927300/1068656

The following solution will fill the screen, but does not maintain the video's aspect ratio: http://stackoverflow.com/a/6927300/1068656

和这个解决方案保持了影片的长宽比,但不会填满整个屏幕(视频缩放,直到长边打在屏幕的边缘从而引入酒吧就在旁边): http://stackoverflow.com/a/4855315/1068656

And this solution maintains the video's aspect ratio, but will not fill the entire screen (video is scaled until the longer side hits the screen's edge thereby introducing bars on the side): http://stackoverflow.com/a/4855315/1068656

推荐答案

虽然为时已晚,但它可能会帮助别人寻找同样的问题。以下的答案必须保持纵横比(videoProportion)。的额外部分 videoview是由手机的看法裁剪。

Although it is too late, but it might help someone else looking for the same problem. The following answer maintains the aspect ratio(videoProportion). The extra part of the videoview is cropped by the Phone's view.

private void setDimension() {
     // Adjust the size of the video
     // so it fits on the screen
     float videoProportion = getVideoProportion();
     int screenWidth = getResources().getDisplayMetrics().widthPixels;
     int screenHeight = getResources().getDisplayMetrics().heightPixels;
     float screenProportion = (float) screenHeight / (float) screenWidth;
     android.view.ViewGroup.LayoutParams lp = videoView.getLayoutParams();

     if (videoProportion < screenProportion) {
         lp.height= screenHeight;
         lp.width = (int) ((float) screenHeight / videoProportion);
     } else {
         lp.width = screenWidth;
         lp.height = (int) ((float) screenWidth * videoProportion);
     }
     videoView.setLayoutParams(lp);
 }

// This method gets the proportion of the video that you want to display.
// I already know this ratio since my video is hardcoded, you can get the  
// height and width of your video and appropriately generate  the proportion  
//    as :height/width 
private float getVideoProportion(){
  return 1.5f;
}

这篇关于Android的VideoView比例缩放的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆