所以我扩展了VideoView的onMeasure以扩展视频以适应全屏视图.
这是如何:
public void setVideoAspect(int w,int h){
wVideo=w;
hVideo=h;
onMeasure(w, h);
}
@Override
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if(wVideo!=0 && hVideo!=0)
setMeasuredDimension(wVideo,hVideo);
}
Run Code Online (Sandbox Code Playgroud)
我使用屏幕的显示指标(宽度,高度)调用setVideoAspect().问题是这种方法会拉伸视频以适应屏幕内部.我希望能够保持纵横比.(我有4:3的视频和3:2的屏幕尺寸.)我使用下面的代码给视图保留比率测量值:
int height = (int) (metrics.widthPixels*3/(float)4);
int width= metrics.widthPixels;
mVideoView.setVideoAspect(width,height);
Run Code Online (Sandbox Code Playgroud)
所以这可以完成这项工作,但是有一个问题:它给了我一个4:3的视频,屏幕的宽度和正确的比例,但它不会使视频居中.(它只是播放视频的底部而不是顶部和底部.)我有一个包含VideoView的相对布局,VideoView的重力设置为居中.
在Android的VideoView中,有没有办法实现与ImageView.ScaleType.CENTER_CROP相同的效果?
也就是说,我希望我的VideoView能够播放视频,使其在不失真的情况下填满整个屏幕.如果视频宽高比不完全适合屏幕,则应裁剪而不是扭曲.
以下解决方案将填满屏幕,但不保持视频的宽高比:https: //stackoverflow.com/a/6927300/1068656
此解决方案保持视频的宽高比,但不会填满整个屏幕(视频会缩放,直到较长的一侧到达屏幕边缘,从而在侧面引入条形图):https: //stackoverflow.com/a/4855315/1068656
我在RelativeLayout中放了一个ImageView和一个VideoView.可以缩放ImageView以填充整个布局scaleType="fitXY".但是,VideoView没有类似的缩放属性.顺便说一下,我按设置隐藏视频控件setMediaController(null),只显示视频内容.是否可以在不保持纵横比的情况下缩放VideoView?这是布局示例.
<RelativeLayout
android:layout_width="280dp"
android:layout_height="200dp">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/image"
android:scaleType="fitXY" />
<VideoView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/video"
android:visibility="invisible"
android:layout_centerInParent="true" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud) 我有一个 RelativeLayout
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:foregroundGravity="center"
android:gravity="center"
android:orientation="horizontal" >
<VideoView
android:id="@+id/videoViewPanel"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:layout_centerInParent="true"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我需要的是显示视频全屏裁剪.如果我可以与ImageView进行比较,我需要将其显示为crop_center.
如何让VideoView不自动调整视频大小以适应中心,但裁剪中心?