在Android中,Activity没有看到方向改变?

时间:2013-08-19 19:16:55

标签: android android-videoview

我有一个播放视频的简单活动。

        uriStr = ("http://pathToVideo.com/video/" + yyyyMdd_Str + "/" + yyyyMdd_Str +       ".mp4");

    VideoView testVideo1_VV =(VideoView) findViewById(R.id.videoTest7vid_VV);
    testMediaCon1_MC = new MediaController(this);
    testMediaCon1_MC.setAnchorView(testVideo1_VV);
    testVideo1_VV.setMediaController(testMediaCon1_MC);
    testVideo1_VV.setKeepScreenOn(true);
    testVideo1_VV.setVideoPath(uriStr);
    testVideo1_VV.requestFocus();
    testVideo1_VV.start();

在纵向布局中,视频与顶部对齐,使其在屏幕的前三分之一处播放,在横向布局中,视频通过在高度和宽度上包装内容来全屏显示。在Manifest中我设置了android:configChanges="orientation",以便Activity不会在方向更改时刷新。但我的问题是布局不会随着方向的改变而改变。如何在方向更改时保持视频播放,还可以在方向更改时显示正确的布局?

所以现在我认为解决方案是在播放时记录视频的位置,然后使用savedInstanceState检索视频状态,并在方向更改时从该点开始播放视频。像这样:

    @Override
protected void onSaveInstanceState(Bundle out) {

 super.onSaveInstanceState(out);
//video state would go here
}

@Override
protected void onRestoreInstanceState(Bundle in) {

 super.onRestoreInstanceState(in);
 //video state would go here
}

但现在我不知道获取视频状态的代码......

2 个答案:

答案 0 :(得分:1)

当您设置android:configChanges="orientation"时,您明确告诉Android操作系统,您将自行处理方向更改,包括根据需要切换布局等,因此您需要在活动中实施onConfigurationChanged()并处理任何更改你想在那里做。

另外值得注意的是android:configChanges="orientation"只关注景观 - >肖像改变,而不是肖像到风景。尝试将orientation更改为orientation|keyboardHidden以处理这两种情况。

答案 1 :(得分:0)

Android: alternate layout xml for landscape mode根据方向设置不同的布局。

你需要一些方法来为视频中确切的点添加书签,其中定位时间发生了。