我有一个活动应该在横向上显示VideoView,但活动本身不能处于横向模式,所以这就是我所拥有的。
<activity
android:name=".gui.VideoPlayer"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="portrait" >
</activity>
<?xml version="1.0" encoding="utf-8"?>
活动
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<VideoView
android:id="@+id/myvideoview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center" />
</LinearLayout>
(活动本身必须保持纵向模式,因为设备将放在一个覆盖导航和状态栏的情况下,但在横向模式下它将不再覆盖它们)
答案 0 :(得分:0)
我知道这不是最佳答案,但我前一段时间遇到了同样的问题,并找到了一个非常方便的解决方法,也可能对你有帮助。
尝试使用TextureView而不是VideoView,因为当您旋转它时,内部的内容也会旋转。
<TextureView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/my_texture_view"
android:rotation="90"
android:scaleX="1.8"
/>
接下来,您必须创建一个SurfaceTextureListener并将其设置为您的视图,如下所示:
TextureView.SurfaceTextureListener mTextureListener = new TextureView.SurfaceTextureListener() {
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int i, int i1) {
Surface s = new Surface(surfaceTexture);
try {
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(currentPageVideoUrl);
mMediaPlayer.setSurface(s);
mMediaPlayer.prepare();
}catch (Exception e){e.printStackTrace();}
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surfaceTexture, int i, int i1) {
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) {
return false;
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) {
}
};
现在只需将侦听器设置为TextureView:
mTextureView.setSurfaceTextureListener(mTextureListener);
剩下要做的就是调用它来启动视频:
mMediaPlayer.start();
奖励:如果您想进行更复杂的调整,例如调整视频宽高比You can check this library以获取更多详细信息。