您只能在 SharedPreference 中添加 Boolean、Float、Int、Long、String 值。但是您可以做的一件事是将位图转换为 Base64 字符串。并从 SharedPrefrence 中检索它后将其转换为位图。
使用以下方法将位图转换为字节数组:
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。
现在假设您的图像数据位于名为 encoded 的字符串中,以下内容应该为您提供来自 Base64 字符串的 BitMap:
byte[] imageAsBytes = Base64.decode(encoded.getBytes(), Base64.DEFAULT);
ImageView image = (ImageView)this.findViewById(R.id.ImageView);
image.setImageBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length));
这可能会对您有所帮助。试试看,请告诉我!