【发布时间】:2017-06-18 09:57:29
【问题描述】:
我让我的用户从他们的图库中选择一个背景并将其保存到内存中:
当用户选择背景时:
new ImageBackground(getApplicationContext()).save(MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), data.getData()));
保存图片:
private void saveImageToFile(Bitmap bitmapImage){
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(createFile());
bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (fileOutputStream != null) {
fileOutputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
private File createFile() {
File directory = context.getDir(DIRECTORY_NAME, Context.MODE_PRIVATE);
return new File(directory, FILENAME);
}
所以此时我的图像被保存到内存中。现在,当用户启动应用程序时,此图像应加载到 ImageView 中。我使用 ASync、Picasso 和 Glide 来做到这一点,但效果很好;当我使用这些方法时,在启动应用程序时,一开始的背景总是黑色(默认背景)半秒钟。
我现在正在做的是使用下面的代码。这目前工作正常,但我总是读到最好使用 ASync 或 Glide/Picasso 加载。
private Bitmap getImageBackground(){
FileInputStream inputStream = null;
try {
inputStream = new FileInputStream(createFile());
return BitmapFactory.decodeStream(inputStream);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
//Default background
return BitmapFactory.decodeResource(context.getResources(), R.drawable.background);
}
所以我想要什么;当向用户显示 Activity 时,应该在 ImageView 中加载背景(所以我在半秒钟内看不到黑色背景)。
我怎样才能做到这一点?或者我现在怎么做可以吗?
【问题讨论】:
标签: android bitmap bitmapfactory