如何在android中将图像从一个活动发送到另一个活动

时间:2016-07-01 16:02:44

标签: java android image android-studio send

主要活动

holder.cardView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
       String title = ((TextView) view.findViewById(R.id.recipe_title)).getText().toString();
       String time = ((TextView) view.findViewById(R.id.time)).getText().toString();
       String servings = ((TextView) view.findViewById(R.id.servings)).getText().toString();
       String calories = ((TextView) view.findViewById(R.id.calories)).getText().toString();
       ImageView thumbnail = (ImageView) view.findViewById(R.id.recipe_img);
       Intent intent = new Intent(context, ActivityDetail.class);
       intent.putExtra("RecipeTitle", title);
       intent.putExtra("RecipeTotalTime", time);
       intent.putExtra("RecipeServings", servings);
       intent.putExtra("RecipeCalories", calories);
       context.startActivity(intent);
    }
});

详情活动

TextView time = (TextView)findViewById(R.id.time_detail);
TextView servings = (TextView)findViewById(R.id.servings_detail);
TextView calories = (TextView)findViewById(R.id.calories_detail);
ImageView thumbnail = (ImageView)findViewById(R.id.image_paralax);
time.setText(getIntent().getExtras().getString("RecipeTotalTime"));
servings.setText(getIntent().getExtras().getString("RecipeServings"));
calories.setText(getIntent().getExtras().getString("RecipeCalories"));

如何将缩略图从第一个Activity发送到第二个Activity。在第二个`Activity中,缩略图将显示在ImageView上。

5 个答案:

答案 0 :(得分:4)

您不应该尝试通过Intent发送图像。相反,最好发送图像的Uri ..并且在第二个活动中加载来自Uri的图像。

答案 1 :(得分:1)

我不建议您将位图传递给其他活动,而应该传递字符串网址,在接收活动中,您可以从网站或文件加载图像。

如果您真的只想使用位图传递图像,那么在将其添加到intent,将其发送出去并进行解码之前,必须将其转换为Byte数组。

Bitmap bmp = ((BitmapDrawable)thumbnail.getDrawable()).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

Intent in1 = new Intent(this, Activity2.class);
in1.putExtra("image",byteArray);

然后在您的接收活动中,您需要添加以下代码来接收字节数组:

byte[] byteArray = getIntent().getByteArrayExtra("image");
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

现在您有一个位图,您可以添加setImageDrawable(new BitmapDrawable(mContext.getResources(), bmp));

这就是你需要做的一切。

答案 2 :(得分:1)

发送和成像到一个意图并不是一件好事,你应该尝试发送图像的uri。

但是如果你真的想这样做,那么你可以从图像视图中获取Bitmap:

Bitmap bitmap = ((BitmapDrawable) thumbnail.getDrawable()).getBitmap();

由于位图是Parcelable,您可以直接将其作为Extra:

发送
intent.putExtra("RecipeThumbnail", bitmap); 

答案 3 :(得分:0)

是的,有可能......但不推荐

1)首先,你必须从该位图制作位图和字节数组

Bitmap bitmap = ((BitmapDrawable)thumbnail.getDrawable()).getBitmap();
ByteArrayOutputStream stream=new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream);
byte[] image=stream.toByteArray();

2)然后你可以使用意图

传递它
intent.putExtra("Thumbnail Image", image);

3)在接受活动时,

byte[] = getIntent.getExtra("Thumbnail Image");
Bitmap bmp = BitmapFactory.decodeByteArray(byte, 0, byteArray.length);
imageView.setImageBitmap(bmp);

答案 4 :(得分:0)

像主人那样更快地完成:)

传递图片的ID,你有资源,所以为什么seralisin如此多的信息,如果活动b可以通过知道id加载它...

Intent intent = new Intent(context, ActivityDetail.class);
...
intent.putExtra("imageId", R.id.recipe_img);

并且在其他活动上就足够了:

ImageView thumbnail = (ImageView) view.findViewById(yourREceivedImageId);