Android 如何将截取下载的图像发送到下一个活动

Android 如何将截取下载的图像发送到下一个活动,android,image,android-volley,Android,Image,Android Volley,我正在活动中使用volley在列表视图上下载图像和文本。 单击一行时,我将图像和文本都传递给详细信息活动。 在详细信息活动中我只想将图像传递给另一个活动 在对S/O进行研究后,我发现了一个有效的代码: BitmapDrawable bd=(BitmapDrawable)((NetworkImageView)view.findViewById(R.id.img2)) .getDrawable(); 位图bitmapzoom=bd.getBitmap(); ByteArrayOutputStrea

我正在活动中使用
volley
列表视图上下载图像和文本。
单击一行时,我将图像和文本都传递给详细信息活动。
在详细信息活动中我只想将
图像
传递给另一个活动

在对S/O进行研究后,我发现了一个有效的代码:

BitmapDrawable bd=(BitmapDrawable)((NetworkImageView)view.findViewById(R.id.img2))
.getDrawable();
位图bitmapzoom=bd.getBitmap();
ByteArrayOutputStream bas=新的ByteArrayOutputStream();
bd.getBitmap().compress(Bitmap.CompressFormat.PNG,100,baos);
字节[]imgByte=bas.toByteArray();
Intent Intent=新的Intent(getApplicationContext(),ZoomImage.class);
intent.putExtra(“图像”,imgByte);
星触觉(意向);
}

});编辑:要使用位图而不是bitmapdrawable设置imageview实际图像,请执行以下操作:

Bundle extras = getIntent().getExtras();
byte[] b = extras.getByteArray("image");

Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
findViewById(R.id.img2).setImageBitmap(bmp);

在活动之间传递大型图像时要小心,它可能不会在其他活动中显示图像。最好保存到内部或外部内存,然后在其他活动中获取它。

编辑:要使用位图而不是bitmapdrawable设置imageview实际图像,请执行以下操作:

Bundle extras = getIntent().getExtras();
byte[] b = extras.getByteArray("image");

Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
findViewById(R.id.img2).setImageBitmap(bmp);
在活动之间传递大型图像时要小心,它可能不会在其他活动中显示图像。最好保存到内部或外部内存,然后在其他活动中获取它。

替换:

findViewById(R.id.img2).setBackgroundDrawable(background);
用于:

但是,该图像被放置为背景图像。我想将该图像放置在ImageView中。不是像上面代码那样的背景

我想我知道你的困惑是从哪里来的。我不确定您是否完全理解ImageView是什么。您的图像实际上在ImageView中,否则您将看不到它

替换:

findViewById(R.id.img2).setBackgroundDrawable(background);
用于:

但是,该图像被放置为背景图像。我想将该图像放置在ImageView中。不是像上面代码那样的背景


我想我知道你的困惑是从哪里来的。我不确定您是否完全理解ImageView是什么。您的图像实际上在ImageView中,否则您将看不到它

我不建议您在活动之间传递图像数据


建议的方法是将其保存在磁盘中,并在活动之间传递文件路径。

我不建议在活动之间传递图像数据


建议的方法是将其保存在磁盘中,并在活动之间传递文件路径。

获取图像的Url并通过捆绑传递,稍后在活动中,您可以使用毕加索库将其加载到视图中。下面是代码,您可以查看

private void setImageWithPicaso(String imageUrl) {
    if (!(imageUrl == null)) {
        Picasso.with(getActivity()).load(imageUrl).placeholder(R.drawable.placeholder_background).into(imageView, new Callback() {
            @Override
            public void onSuccess() {
                spinner.setVisibility(View.GONE);
            }

            @Override
            public void onError() {
                spinner.setVisibility(View.GONE);
                AppLog.showToastMessage(getActivity(), "Image  loading failed!");

            }
        });
    } else {
        spinner.setVisibility(View.GONE);
        AppLog.showToastMessage(getActivity(), "Image  loading failed!");
    }
}

获取图像的Url并通过bundle传递,稍后在活动中,您可以使用毕加索库将其加载到视图中。下面是您可以查看的代码

private void setImageWithPicaso(String imageUrl) {
    if (!(imageUrl == null)) {
        Picasso.with(getActivity()).load(imageUrl).placeholder(R.drawable.placeholder_background).into(imageView, new Callback() {
            @Override
            public void onSuccess() {
                spinner.setVisibility(View.GONE);
            }

            @Override
            public void onError() {
                spinner.setVisibility(View.GONE);
                AppLog.showToastMessage(getActivity(), "Image  loading failed!");

            }
        });
    } else {
        spinner.setVisibility(View.GONE);
        AppLog.showToastMessage(getActivity(), "Image  loading failed!");
    }
}


谢谢你的快速回复。但是我已经尝试过了,我得到了错误
无法解析'setImageResource(android.graphics.drawable.BitmapDrawable)
同样的错误
无法解析'setImageBitmap(android.graphics.drawable.BitmapDrawable)
设置bmp而不是背景。它需要位图,而不是位图绘制。查看更新的答案。@SteveKamau您是否尝试过
ImageView imgView=(ImageView)findViewById(R.id.img2)并使用API
setImageBitmap
作为
imgView.setImageBitmap
它应该将图像设置为您的
ImageView
而不是其背景感谢您的快速回复..但是我已经尝试过了,我得到了错误
无法解析“setImageResource(android.graphics.drawable.BitmapDrawable)“
也出现同样的错误
无法解析“setImageBitmap(android.graphics.drawable.BitmapDrawable)”
设置bmp而不是背景。它需要位图,而不是位图绘制。查看更新的答案。@SteveKamau您是否尝试过
ImageView imgView=(ImageView)findViewById(R.id.img2)
并使用API
setImageBitmap
作为
imgView.setImageBitmap
它应该将图像设置为您的
ImageView
而不是其背景获取此错误也
无法解决“setImageDrawable(android.graphics.drawable.BitmapDrawable)”
您在活动中对图像应用了任何样式吗?喜欢圆角吗?@ojonugwaochalifu,我想它会有用的+1为you@HirenPatel,是的,它应该,我使用的东西非常相似,虽然我的是
RoundedBitmapDrawable
Steve good你添加了布局代码,但我很惊讶它对你不起作用,因为我使用的东西非常相似,唯一的区别是我的
RoundedBitmapDrawable
而不是
BitmapDrawable
也出现了这个错误
无法解析“setImageDrawable”(android.graphics.drawable.BitmapDrawable)“
您是否对活动中的图像应用了任何样式?喜欢圆角吗?@ojonugwaochalifu,我想它会有用的+1为you@HirenPatel,是的,它应该,我使用的东西非常相似,虽然我的是
RoundedBitmapDrawable
Steve good您添加了布局代码,但我很惊讶它对您不起作用,因为我使用的东西非常相似,唯一的区别是我的是
RoundedBitmapDrawable
而不是
BitmapDrawable