主要活动
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上。
答案 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);