Как сохранить ImageView на activity_main?
Есть код который генерирует QR-код в imageView, но мне нужно чтобы при закрытии и повторном открытии приложения сгенерированный QR-код не пропадал. Дополнительно: хотелось бы скрыть EditText и Button после генерации QR-кода.
etInput = findViewById(R.id.et_input);
btGenerate = findViewById(R.id.bt_generate);
ivOutput = findViewById(R.id.iv_output);
btGenerate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String sText = etInput.getText().toString().trim();
MultiFormatWriter writer = new MultiFormatWriter();
try {
BitMatrix matrix = writer.encode(sText, BarcodeFormat.QR_CODE,
350, 350);
BarcodeEncoder encoder = new BarcodeEncoder();
Bitmap bitmap = encoder.createBitmap(matrix);
ivOutput.setImageBitmap(bitmap);
InputMethodManager manager = (InputMethodManager) getSystemService(
Context.INPUT_METHOD_SERVICE
);
manager.hideSoftInputFromWindow(etInput.getApplicationWindowToken()
,0);
} catch (WriterException e) {
e.printStackTrace();
}
}
});
Ответы (2 шт):
Чтобы он остался и после перезагрузки активности (перезагрузки приложения) я думаю имеет смысл сохранить картинку QR-кода в файлах приложения и потом при наличии данного файла сетить его в виджет и скрывать поле для ввода. Сохранить можно таким способом:
try {
FileOutputStream fileOutputStream = context.openFileOutput("Your File Name", Context.MODE_PRIVATE);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
дальше при входе в приложение и активность, вы проверяете наличие файла. Вот есть подобный вопрос. И вот так получаем картинку из файла:
File imgFile = new File("/sdcard/Images/test_image.jpg");
if(imgFile.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ImageView myImage = (ImageView) findViewById(R.id.imageviewTest);
myImage.setImageBitmap(myBitmap);
}
нужно только проверить путь сохранения. Так же в этом условии можно скрыть поле для ввода.
1)Для того чтобы ваш QR код не пропадал его необходимо сохранить в файл, а при запуске приложение должно проверять есть ли сохранная картинка в методе onCreate и если она имеется установить его в ваш imageView:
ivOutput.setImageBitmap(bitmapQR)
2)Когда QR код сгенерируется используйте:
btGenerate.setVisibility(View.INVISIBLE);
etInput.setVisibility(View.INVISIBLE);