我有一个包含多行的ListActivity应用程序。每一行都会打开一个活动,其中包含视图,其中之一是一个按钮,当点击时会打开无限画廊类(图像存储在应用程序内的RES => drawable文件夹中),每个图像下面都有一个按钮,当按下它时,它将图像保存到名为(saved_images)的文件夹中的SD卡目录中。
我在画廊类中使用SharedPreferences按顺序存储所有图像,这很好用,但我正试图:
1. 防止重复保存在SD卡文件夹(saved_images)中的图像: 假设您成功保存了图像-1,然后再次按下图像-1下面的相同按钮,它将再次保存在SD卡文件夹中,因此最终您将拥有相同的图像(图像-1)两次, 所以我想要的是:当我按下已经保存的图像下面的按钮时,会弹出“图像已保存”的Toast,因此所有应用程序图像都将保存一次在Sd卡文件夹中。
2. 在重新安装后按顺序继续保存图像: 在设备中安装应用程序并将一些图像保存在已在SD卡中创建的文件夹(saved_images)中后,假设您从设备中卸载应用程序并保留SD卡中的(saved_images)文件夹,则再次安装应用程序并想要保存一些新图像,会发生的是新图像将替换先前保存的图像, 但我希望它能够:继续按顺序保存新图像和以前保存的图像。
用于将图像保存到SD卡的代码:
我在画廊类中使用SharedPreferences按顺序存储所有图像,这很好用,但我正试图:
1. 防止重复保存在SD卡文件夹(saved_images)中的图像: 假设您成功保存了图像-1,然后再次按下图像-1下面的相同按钮,它将再次保存在SD卡文件夹中,因此最终您将拥有相同的图像(图像-1)两次, 所以我想要的是:当我按下已经保存的图像下面的按钮时,会弹出“图像已保存”的Toast,因此所有应用程序图像都将保存一次在Sd卡文件夹中。
2. 在重新安装后按顺序继续保存图像: 在设备中安装应用程序并将一些图像保存在已在SD卡中创建的文件夹(saved_images)中后,假设您从设备中卸载应用程序并保留SD卡中的(saved_images)文件夹,则再次安装应用程序并想要保存一些新图像,会发生的是新图像将替换先前保存的图像, 但我希望它能够:继续按顺序保存新图像和以前保存的图像。
用于将图像保存到SD卡的代码:
public void onClick(View arg0) {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/saved_images");
if (!myDir.exists()) {
myDir.mkdirs();
SharedPreferences saveNumber = mContext.getApplicationContext()
.getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editorset = saveNumber.edit();
editorset.putInt("lastsavednumber", 0);
editorset.commit();
}
bm = BitmapFactory.decodeResource(mContext.getResources(),
images[itemPos]);
holder.image.setImageBitmap(bm);
SharedPreferences savedNumber = mContext.getSharedPreferences(
PREFS_NAME, 0);
int lastSavedNumber = savedNumber.getInt("lastsavednumber", 0);
lastSavedNumber++;
String fname = "Image-" + lastSavedNumber + ".png";
File file = new File(myDir, fname);
if (file.exists()) {
file.delete();
}
try {
FileOutputStream out = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
SharedPreferences saveNumber = mContext.getApplicationContext()
.getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editorset = saveNumber.edit();
editorset.putInt("lastsavednumber", lastSavedNumber);
editorset.commit();
Toast.makeText(mContext, "Saved", Toast.LENGTH_SHORT).show();
vi.setTag(holder);
}