我创建了两个布局一个普通布局和一个用于横向布局。下面是两个方向的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
:
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();
}
});
感谢任何形式的帮助。
答案 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);