当方向发生变化时,如何在GridView中保存位图图像的状态?

时间:2018-03-18 22:10:53

标签: java android gridview android-sharedpreferences

所以我正在创建一个滑动益智游戏应用程序,并且当前使用在活动的onCreate方法中创建的位图数组列表填充GridView。然后我使用Collections.swap来交换这些图像,然后我重新加载我的GridView来更新屏幕上的GridView。

这一功能完美无缺,直到手机方向改变为止。 GridView图像(拼图块)返回到它们的开始发布(在Collections.swap之前)。

我已经能够通过使用SharedPreferences保存旋转分数,这非常有效。但是,我不知道如何将位图或位图的ArrayList保存到SharedPreferences。有没有办法做到这一点?还是有替代方案吗?

1 个答案:

答案 0 :(得分:0)

我通过创建一个使用state.putSerializable保存我的列表数组的onSavedInstanceState方法来改变方向:

@Override
protected void onSaveInstanceState(Bundle state) {
    super.onSaveInstanceState(state);
    state.putSerializable(tileLocationsKey, puzzleTilesList);
}

然后我通过这样做检查他们是否是我的onCreate方法中保存的实例状态:

if ((savedInstanceState != null) && (savedInstanceState.getSerializable(tileLocationsKey) != null)) {
    puzzleTilesList = (ArrayList<Bitmap>) savedInstanceState.getSerializable(tileLocationsKey);
}

并且如果!= null则它使用保存的列表数组。