私の状況は次のとおりです。SDの画像で親レイアウトの背景を変更するボタンがあります(これは正常に機能します)。次に、これらの画像をSharedPreferenceに保存して、ユーザーがデフォルトの背景画像ではなく、背景画像を使用してアプリを起動できるようにします。この方法で画像を保存します:
SharedPreferences.Editor editor = prefs.edit();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
yourSelectedImage.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object
byte[] b = baos.toByteArray();
editor.putString("background", Base64.encodeToString(b, Base64.DEFAULT ));
そして、私はこの方法で取得します(このコードはonCreateにあります):
prefs = getSharedPreferences("Mis preferencias",Context.MODE_PRIVATE);
String fondo = prefs.getString("background", "vacio");
if(!fondo.equals("vacio")){
byte[] b = Base64.decode(fondo, Base64.DEFAULT);
InputStream is = new ByteArrayInputStream(b);
Bitmap yourSelectedImage = BitmapFactory.decodeStream(is);
BitmapDrawable bd = new BitmapDrawable(getResources(), yourSelectedImage);
View view = findViewById(R.id.padre);
view.setBackgroundDrawable(bd);
}
sharedpreferencesを使用し、base64で画像を操作するのは初めてなので、これに少しこだわっています。アプリを強制終了して再起動すると、カスタムではなくデフォルトの背景が表示されます。何か助けはありますか?私の英語に感謝し、申し訳ありません。