你可以查看标题为
自行处理配置更改的链接:
http://developer.android.com/guide/topics/resources/runtime-changes.html。
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
现在,当这些配置之一发生更改时,MyActivity不会重新启动。相反,MyActivity会接收到一个onConfigurationChanged()的调用。该方法会传递一个Configuration对象,指定新的设备配置。
android:configChanges="orientation|screenSize" (andorid 3.2 and above screen size also changes. add this)
假设你的视频长度为10分钟。视频播放到5分钟时,方向发生改变,你知道它已经播放到了5分钟。
你可以在onSaveInstanceState()中保存实际的视频进度,并从Bundle中在onRestoreInstanceState()中获取保存的数据,之后你可以使用进度数据继续播放,或者如果没有保存数据,则从头开始播放。
当方向改变时,活动将被销毁并重新创建。如果你想保存数据并保留它们,你可以按照以下方式保存大量数据。
@Override
public Object onRetainNonConfigurationInstance() {
final MyDataObject data = collectMyLoadedData();
return data;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final MyDataObject data = (MyDataObject) getLastNonConfigurationInstance();
if (data == null) {
data = loadMyData();
}
}
对于小数据集
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putString("NICK_NAME", Name);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Name = savedInstanceState.getString("NICK_NAME");
}
检查方向。
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
“
在Android中使用VideoView。在这种情况下,视频也是从服务器流传输的。请查看已接受的答案(commonsware答案)。这正是我建议的。”