我是Android开发的新手,我正在尝试弄清楚如何在我的应用中点按图片并将其保存到设备中。当点击图像时,我想要一个“保存”按钮出现,当按下该按钮时,应该出现一个吐司,说明图片已保存。在iOS上,我可以使用UIActionSheet执行此操作。
我还应该提一下,使用Picasso从URL下载图像视图图像。
我刚试过这个,它说图片已保存,但当我在手机上看照片应用时,图片就不存在了。
largeImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
saveButton.setVisibility(View.VISIBLE);
}
});
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
largeImage.getDrawable();
Bitmap bitmap = ((BitmapDrawable)largeImage.getDrawable()).getBitmap();
OutputStream outStream = null;
File file = new File(storageDirectory, "er.PNG");
try {
outStream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
outStream.flush();
outStream.close();
Toast.makeText(FlickrImageActivity.this, "Saved", Toast.LENGTH_LONG).show();
}
catch (FileNotFoundException e) {
e.printStackTrace();
Toast.makeText(FlickrImageActivity.this, e.toString(), Toast.LENGTH_LONG).show();
}
catch (IOException e) {
e.printStackTrace();
Toast.makeText(FlickrImageActivity.this, e.toString(), Toast.LENGTH_LONG).show();
}
saveButton.setVisibility(View.GONE);
}
});
答案 0 :(得分:1)
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/saved_images");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-"+ n +".jpg";
File file = new File (myDir, fname);
if (file.exists ()) file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
Manifest permission
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 1 :(得分:0)
您可以使用RelativeLayout来包含ImageView和Button。
将它们中心对齐父母
在活动内部,将按钮可见性设置为“已消失”
将ImageView和Button的setOnClickListener调用到您的Activity
在您的活动中实现OnClickListener
在onClick(View v)中,如果单击的视图是ImageView,则将Button的可见性设置为“可见”
在onClick(View v)中,如果单击的视图是Button,则将图像保存到磁盘
**如何将图像保存到磁盘
如果图像源是可绘制资源,请使用BitmapFactory.decodeResource创建位图,然后使用Bitmap.compress导出到特定路径
然后通知Android刷新图库
MediaScannerConnection.scanFile(context,
new String[] { imagePath }, null,
new MediaScannerConnection.OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri) {
//....
}
});
然后使用Toast.makeText(context,“message here”)。show();向用户显示消息
答案 2 :(得分:0)
请参阅以下步骤在Android中实现此目的:
1. Create layout with ImageView & 'Save' named Button
2.By deafult set 'Save' Button's visibility = gone/invisible
3. Apply click listener on both the views (ImageView & Button)
4. OnClick of ImageView, set 'Save' Button's visibility = visible
5. onclick of save button click call your save image to sdcard logic. Check below link for that.
http://android-er.blogspot.in/2010/07/save-file-to-sd-card.html
希望这会对你有所帮助。