我正在使用volley
在我的活动listview
下载图片和文字。
点击一行后,我将图片和文字传递给详细信息活动。
在详细信息活动上,我只希望将Image
传递给另一项活动。
在对S / O进行研究后,我发现了一个有效的代码:
BitmapDrawable bd = (BitmapDrawable) ((NetworkImageView) view.findViewById(R.id.img2))
.getDrawable();
Bitmap bitmapzoom=bd.getBitmap();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bd.getBitmap().compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] imgByte = baos.toByteArray();
Intent intent=new Intent(getApplicationContext(),ZoomImage.class);
intent.putExtra("image", imgByte);
startActivity(intent);
}
});
在下一个活动中,我会检索它:
Bundle extras = getIntent().getExtras();
byte[] b = extras.getByteArray("image");
Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
BitmapDrawable background = new BitmapDrawable(bmp);
findViewById(R.id.img2).setBackgroundDrawable(background);
然而,图片被放置为背景图片。我想将图片放在我的ImageView.
中
不像上面的代码那样背景。
目前在ImageView上设置图像尚未成功。欢迎任何建议。
layout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000"
android:orientation="vertical"
tools:context="com.softtech.stevekamau.buyathome.ZoomImage">
<ImageView
android:id="@+id/back"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/back"/>
<RelativeLayout
android:id="@+id/root_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000">
<ImageView
android:id="@+id/img2"
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:scaleType="matrix"
android:maxHeight="100dp"
android:maxWidth="50dp" />
</RelativeLayout>
</LinearLayout>
答案 0 :(得分:2)
编辑:使用位图设置imageview实际图像,而不是bitmapdrawable:
Bundle extras = getIntent().getExtras();
byte[] b = extras.getByteArray("image");
Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
findViewById(R.id.img2).setImageBitmap(bmp);
小心地在活动之间传递大图像,它可能不会在其他活动中显示图像。最好保存到内部或外部存储器,然后将其用于其他活动。
答案 1 :(得分:2)
获取图片的Url并通过bundle传递,稍后在活动中您可以使用Picasso库将其加载到下面的视图中,您可以查看代码。
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!");
}
}
答案 2 :(得分:0)
替换:
findViewById(R.id.img2).setBackgroundDrawable(background);
有:
findViewById(R.id.img2).setImageDrawable(background);
然而,图像被放置为背景图像。我想将图像放在我的ImageView中。不像上面的代码那样背景。
我想我得到了你的困惑。我不确定你是否完全理解ImageView是什么。你的图像实际上是你的imageview,否则你将无法看到它。
答案 3 :(得分:0)
我不建议您在活动之间传递图像数据。
建议的方法是将其保存在磁盘中,并在活动之间传递文件路径。