我有一个有一个包含图像预览的ImaveView的Activity1。 按下按钮后,我从Activity1进入Activity2。在Activity2中,我没有图像预览,而是一个选项按钮"保存Activit1的图像?"是或否。
目前我的做法是错误的,就像将图像保存在磁盘中然后从磁盘读回来一样。但有没有保存图像的方法我可以将一个imageView从Activity1传输到Activity2?
以下是我在Activity1中获取图片的方法> ImageView,然后需要移动到Activity2。有什么想法吗?
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.imageView = (ImageView)this.findViewById(R.id.picture);
Button photoButton = (Button) this.findViewById(R.id.capture_btn);
Button btnShareToEmail = (Button) this.findViewById(R.id.btnshare);
btnShareToEmail.setOnClickListener(this);
//photoButton.setOnClickListener(new View.OnClickListener() {
//@Override
// public void onClick(View v) {
// Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
// startActivityForResult(cameraIntent, CAMERA_REQUEST);
// }
//});
// without frozen
new Handler().postDelayed(new Runnable() { public void run() {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}}, 100);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(photo);
}
}
修改 的
// Set - Activity1
Intent winShare = new Intent(getBaseContext(), Activity2.class);
winShare.putExtra("Title", "r2.jpg");
winShare.putExtra("image1", photo);
//int image_link = getIntent().getIntExtra("image1");
startActivityForResult(winShare,0);
// GET - Activity2
Bitmap bitmap = (Bitmap) getIntent().getParcelableExtra("image1"); // BITMAP_SHARED_KEY = "bitmap_shared_key"
imageView.setImageBitmap(bitmap);
// save it
imageView.buildDrawingCache();
Bitmap bm=imageView.getDrawingCache();
OutputStream fOut = null;
Uri outputFileUri;
try {
File root = new File(Environment.getExternalStorageDirectory() + File.separator + "MYAPPPPPPPPPS" + File.separator);
root.mkdirs();
File sdImageMainDirectory = new File(root, "myPicName.jpg");
outputFileUri = Uri.fromFile(sdImageMainDirectory);
fOut = new FileOutputStream(sdImageMainDirectory);
bm.compress(Bitmap.CompressFormat.PNG, 100, fOut);
fOut.flush();
fOut.close();
} catch (Exception e) {
Toast.makeText(this, "Error occured. Please try again later.",Toast.LENGTH_SHORT).show();
}
答案 0 :(得分:1)
首先,您需要了解当您使用相机活动获取图像时,您将获得所拍摄图像的缩略图版本。为了获得一个完整大小的图像,它必须保存,你可以看看我在这个问题上写的这篇博文,以获取更多信息:
Use Camera Activity for Thumbnail and Full Size Image
现在针对您的问题,我认为最好的选择是将此图像保存到文件(在指南中描述),并使用图像的字符串路径将额外的内容传递给以下活动。
答案 1 :(得分:1)
有很多方法可以解决这个问题。以下是两种简单的方法:
首先,您可以阅读有关SharedPreferences
的更多信息第二,您可以将此活动的以下位图放到另一个活动中:
putExtra:
intent.putExtra(BITMAP_SHARED_KEY, yourBitmap);
startActivity(intent);
你共享的getBitmap
Bitmap bitmap = (Bitmap) intent.getParcelableExtra(BITMAP_SHARED_KEY); // BITMAP_SHARED_KEY = "bitmap_shared_key"
答案 2 :(得分:1)
简单方法使用此
第一项活动
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.men_icon);
Bundle extras = new Bundle();
Intent intent=new Intent(FirstActivity.class,SecondActivity.class);
extras.putParcelable("Bitmap", bitmap);
intent.putExtras(extras);
startActivity(intent);
第二项活动
ImageView iv_photo=(ImageView)findViewById(R.id.iv_photo);
Bundle extras = getIntent().getExtras();
Bitmap bmp = (Bitmap) extras.getParcelable("Bitmap");
iv_photo.setImageBitmap(bmp);