Как сохранить и восстановить растровое изображение перед закрытием приложения

#java #android #android-studio

#java #Android #android-studio

Вопрос:

Я хочу сделать сменный персональный фон для пользователей приложения. Когда они меняют изображение, я не могу сохранить его перед закрытием приложения. Я пробую общие настройки, но не работаю с растровым изображением. Как я могу сохранить и восстановить растровое изображение перед закрытием приложения?

Ответ №1:

 //use this method to save your bitmap, call this method when you have bitmap
private void saveBitmap(Bitmap pBitmap){
    ContextWrapper contextWrapper = new ContextWrapper(getApplicationContext());
    File directory = contextWrapper.getDir("folderName", Context.MODE_PRIVATE);
    if (!directory.exists()) {
        directory.mkdirs();
    }
    File file = new File(directory, "fileName.png");
    FileOutputStream fos = null;
    try {
        fos = new FileOutputStream(file);
        pBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
        fos.close();
        String filePath = file.getAbsolutePath();
        //save this path in shared preference to use in future.
    } catch (Exception e) {
        Log.e("SAVE_IMAGE", e.getMessage(), e);
    }
}
  

используйте этот метод для получения растрового изображения из пути к файлу, который вы сохранили

 private void getBitmapFromPath(String pFilePath) {
    try {
        File f = new File(pFilePath);
        Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(f));
        //use this bitmap as you want
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}
  

для сохранения и получения пути к файлу

     //This for saving file path 
    PreferenceManager.getDefaultSharedPreferences(context).edit().putString("FILE_PATH_KEY", filePath).apply();

    //this for getting saved file path
    String filePath = PreferenceManager.getDefaultSharedPreferences(context).getString("FILE_PATH_KEY", "path not retrieved successfully!");
  

Комментарии:

1. Я сохраняю путь к файлу с помощью этого кода SharedPreferences . Редактор editor = sharedpreferences.edit(); editor.putString(«image_key», путь к файлу); — Я сохраняю путь к файлу editor.commit(); super.onPause(); После того, как я попытаюсь получить код из сохраненных предисловий с помощью этого кода sharedpreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); Файловый путь= sharedpreferences.getString(«resim_anahtari»,»»); но он не работает

2. ваш ключ отличается для сохранения и получения значения из SharedPreference, исправьте его

3. Я добавил ответ для сохранения и извлечения пути

4. Это работает! Спасибо, что помогли мне. И, извините, я пропустил эту часть.