旋转手机在android上重启视频

旋转手机在android上重启视频,android,video,controls,android-videoview,Android,Video,Controls,Android Videoview,当我旋转手机时,我的活动重新开始。我有一个播放视频的视频视图,我旋转视频并重新启动。现在我发现在清单中将其添加到我的活动中修复了它 <activity android:name="Vforum" android:configChanges="orientation"></activity> 现在的问题是视频控件在消失并返回之前不会被重新绘制,因此会留下很长的控件从横向模式切换到纵向模式,或者很短的控件从纵向模式切换到横向模式。一旦它们消失,然后我点击让它们回来,那么

当我旋转手机时,我的活动重新开始。我有一个播放视频的视频视图,我旋转视频并重新启动。现在我发现在清单中将其添加到我的活动中修复了它

<activity android:name="Vforum" android:configChanges="orientation"></activity>


现在的问题是视频控件在消失并返回之前不会被重新绘制,因此会留下很长的控件从横向模式切换到纵向模式,或者很短的控件从纵向模式切换到横向模式。一旦它们消失,然后我点击让它们回来,那么它们的大小就正确了。有更好的方法吗?

考虑在活动生命周期事件中记住视频文件的位置。创建活动时,您可以获取视频位置并从重新启动时开始播放

在活动课上:

@Override
protected void onCreate(Bundle bundle){
   super.onCreate(bundle);
   int mPos=bundle.getInt("pos"); // get position, also check if value exists, refer to documentation for more info
}

@Override
protected void onSaveInstanceState (Bundle outState){
    outState.putInt("pos", myVideoView.getCurrentPosition()); // save it here
}

configChanges
属性添加到清单中意味着您将。覆盖活动中的
onConfigurationChanged()
方法:

int lastOrientation = 0;

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks if orientation changed
    if (lastOrientation != newConfig.orientation) {
        lastOrientation = newConfig.orientation;
        // redraw your controls here
    } 
}

android:configChanges=“orientation”

到AndroidManifest.xml中的活动

  • 解决了我的问题,不再下载渐进式视频
如果您的目标API级别为13或更高,则除了所述的
方向
值外,还必须包括
屏幕大小
值。所以你的标签看起来像

android:configChanges="orientation|screenSize"

ConfigChanges是正确的,但它确实是这样工作的

    <activity
        android:configChanges="orientation|screenSize" ... >

你应该试试这个。转到AndroidManifest.xml文件,然后通过它的标记

<activity android:name=".activity_name"
 android:configChanges="keyboardHidden|orientation|screenSize">
</activity>


旋转时调用什么生命周期事件?我很快就在谷歌上搜索到了答案。我看到
myVideoView.getCurrentPosition()
将保存当前时间,但当我旋转并重置时,我还看到渐进式下载也重新开始。你能举个简单的例子吗?Sudo代码甚至可以为我工作,谢谢!旋转手机时,当前活动实例将被销毁,新实例将被创建,所以您可以在onCreate()中检查捆绑对象的视频位置。视频位置可以保存在onSaveInstanceState(捆绑)中。我看到的是,视频从未来某个时间开始。也许是下一帧,大约1秒钟。但是信息丢失了。有人知道如何旋转而不丢失任何视频吗?哦,好的,明白了!我刚刚开始java的第二个星期,所以我对它一无所知……现在我该如何重新绘制控件呢?我尝试了
mVideoView.refreshDrawableState()并失败。我不知道是什么方法重新绘制的。你不想重新创建整个视图,因为这会杀死视频播放器。您只需要更换需要更改(控制)的部件,并保持播放机完好无损。基本上,您将:找到父视图组(布局),获取要替换的视图的位置(索引),删除它们,膨胀新视图,添加到相同的位置:不过我使用的是标准MediaController。我不想改变任何布局。这是需要重新绘制的内置视频控件。我发布了一段视频,讲述了正在发生的事情:看了视频后有什么想法吗?我7年前问过这个问题,所以我确信事情已经改变了。不过,谢谢你的回复。
<activity android:name=".activity_name"
 android:configChanges="keyboardHidden|orientation|screenSize">
</activity>