我有一个列表活动应用程序形成多行。每行打开一个包含视图的活动,其中一个是一个按钮,单击时打开无限图库类(存储在应用程序内的 RES => 可绘制文件夹中的图像),每个图像下方都有按钮,按下时将图像保存到 SD名为 (saved_images) 的文件夹中的 card 目录。
我SharedPreferences
在画廊类中使用按顺序存储所有图像,效果很好 -
但我正在尝试:
防止重复保存在 SD 卡文件夹 (saved_images) 中的图像:
假设您成功保存了 image-1,然后您按下 image-1 下的相同按钮,它将再次保存在 SD 卡文件夹中,所以最后您将两次拥有相同的图像(image-1),
所以我想要得到:当我按下图像下的按钮时,已经保存的 Toast 图像必须上升,因此所有应用程序图像将在 SD 卡文件夹中保存一次。
重新安装后继续按顺序保存图像:
在设备中安装应用程序并将一些图像保存在已在 SD 卡中创建的文件夹 (saved_images) 后,假设您从设备卸载应用程序并将 (saved_images) 文件夹保留在 SD 卡中,然后再次重新安装应用程序并希望保存一些新图像,会发生什么是新图像替换以前保存的图像,
但我希望它:继续按顺序保存以前保存的图像和新图像。
用于将图像保存到 SDcard 的代码:
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);
}