Я хочу сохранить объект растрового изображения в общих предпочтениях, а метод возобновления просто получить этот объект и установить его в фоновом режиме. Пожалуйста, расскажите мне, как хранить и извлекать его из общих настроек. Проблема заключается в том, что в общих предпочтениях мы можем поместить значения как String, int, bolean, long и т. Д., Но не битмао-объект. Пожалуйста, помогите мне разобраться в этой проблеме. Ниже мой код:
@Override protected void onResume() { super.onResume(); rl_changeBackground.setBackgroundDrawable(new BitmapDrawable(getResources(),HomeSafeStaticVariables.bitmap)); } }
Вы можете добавлять только значения Boolean, Float, Int, Long, String в SharedPreference. Но одна вещь, которую вы можете сделать, это преобразовать Bitmap в Base64 String. И после извлечения его из SharedPrefrence конвертируйте его в Bitmap.
Используйте следующий метод для преобразования битмапа в массив байтов:
ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object byte[] b = baos.toByteArray();
Для кодирования base64 из массива байтов используйте следующий метод
String encoded = Base64.encodeToString(b, Base64.DEFAULT);
И сохраните его в SharedPrefrence.
Теперь, предполагая, что ваши данные изображения находятся в кодировке String, которая должна быть передана вам в BitMap из строки Base64:
byte[] imageAsBytes = Base64.decode(encoded.getBytes()); ImageView image = (ImageView)this.findViewById(R.id.ImageView); image.setImageBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length));
Это может вам помочь. Попробуйте, пожалуйста, дайте мне знать!
Вы можете хранить SharedPreferences
в качестве base64 в SharedPreferences
Но не рекомендуется хранить растровые изображения в SharedPreferences
. Вы должны сохранить изображение на SD-карте и сохранить путь в SharedPreferences
.
Проверьте этот вопрос
Если вы действительно хотите сохранить свое изображение в SharedPreferences, вы должны взглянуть на это решение (или подобное, которое уже существует здесь):
Как хранить и извлекать растровые изображения в sharedPreferences в Android?