如何在Google地图活动中更改方向更改时阻止地图刷新?

时间:2015-11-03 19:16:42

标签: android google-maps android-activity

我在Android应用中使用Google Maps API,并且在更改方向后,每次自“活动”销毁后地图都会自动重绘。官方Google地图应用如何防止这种情况发生在他们的应用中?地图只是简单地移动方向而没有任何震动消失的地图。他们使用的是复杂的自定义onConfigurationChanged()方法,还是更简单?感谢。

3 个答案:

答案 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