VideoView以纵向模式播放,但不以横向模式播放

时间:2015-07-14 10:22:12

标签: android android-videoview

我创建了两个布局一个普通布局和一个用于横向布局。下面是两个方向的VideoView xml。视频从URL流式传输。视频在纵向模式下完美播放,但是当将方向更改为横向模式时,视频不会播放,只是继续向我显示ProgressDialog。以下代码可能有助于理解我的问题。

正常布局:

<VideoView
            android:id="@+id/vv_item_video"
            android:layout_width="match_parent"
            android:layout_height="250dp" />

景观布局:

<VideoView
            android:id="@+id/vv_item_video"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

执行VideoView

的Java代码
getWindow().setFormat(PixelFormat.TRANSLUCENT);
vvItemVideo.setVideoURI(Uri.parse(getResUrl()));
vvItemVideo.requestFocus();
progDailog = ProgressDialog.show(this, "Please wait ...", "Retrieving data ...", true, true);
vvItemVideo.setOnPreparedListener(new android.media.MediaPlayer.OnPreparedListener() {

    @Override
    public void onPrepared(android.media.MediaPlayer mp) {
        Log.e(TAG, "video is prepared");
        progDailog.dismiss();
        vvItemVideo.seekTo(position);
        vvItemVideo.start();
        final MyMediaController mc = new MyMediaController(ItemDetailActivity.this);
        vvItemVideo.setMediaController(mc);
        mc.setAnchorView(vvItemVideo);
        mc.show();
    }
});

感谢任何形式的帮助。

1 个答案:

答案 0 :(得分:1)

如果您确实不需要手动处理方向更改,请在清单中定义您的活动,如下所示。

    <activity
        android:name="youractivity"
        android:configChanges="screenSize|orientation"
        android:launchMode="singleTask" >
    </activity>

这将管理方向更改,您无需为其编码。

并在onConfigurationChanged方法中使用此代码:

LinearLayout.LayoutParams linear_layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
    linear_layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
} else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
    linear_layoutParams = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT, 250);
}
videoView.setLayoutParams(linear_layoutParams);