我在Android应用中使用Google Maps API,并且在更改方向后,每次自“活动”销毁后地图都会自动重绘。官方Google地图应用如何防止这种情况发生在他们的应用中?地图只是简单地移动方向而没有任何震动消失的地图。他们使用的是复杂的自定义onConfigurationChanged()
方法,还是更简单?感谢。
答案 0 :(得分:2)
他们自己处理配置更改。活动设置如下
<activity
android:configChanges="orientation|uiMode|screenSize|fontScale"
android:screenOrientation="user"
...
然后实现onConfigurationChanged
。在那里,他们很可能做广泛的布局动画,所以它看起来很流畅。
答案 1 :(得分:0)
尝试在您的活动中使用onSaveInstanceState方法,并在onRestoreInstanceState中恢复您的值。这是Android开发者页面中的示例:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
super.onSaveInstanceState(savedInstanceState);
}
然后:
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Always call the superclass so it can restore the view hierarchy
super.onRestoreInstanceState(savedInstanceState);
// Restore state members from saved instance
mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
}
查看此处的文档 - &gt; http://developer.android.com/intl/es/training/basics/activity-lifecycle/recreating.html
答案 2 :(得分:0)
在相关的AndroidManifest.xml
标签内添加到您的<activity>
:
<activity
...
android:configChanges="keyboardHidden|orientation|screenSize"
...>
请注意,这意味着onCreate
将在方向更改时不再被叫。如果仍然需要回调,请像这样使用onConfigurationChanged
:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// your code here
}
其他提示:在onConfigurationChanged
中,您的地图仍会显示其旧投影和边界框(从之前更改方向),以防您需要进行投影检查my other answer。