如何将图像从一个 activity 动态传递到另一个 activity 并通过 JSON 在 imageview 中显示

How to pass a image dynamically from one activity to another activity and display it in imageview through JSON

我正在通过 JSON 将值从一个 activity 传递到另一个 activity。我能够在下一个 activity 中接收字符串值。但我不知道派遣法师。同时都是数组中的动态值。

发送如下:

jsonobj.put(“Location”, “Chennai”);

jsonobj.put(“Name”, “test1”);

Receving like the following:

location = MainActivity.jsonobj.getString(“Location”);

name =MainActivity.jsonobj.getString(“Name”);

请帮助我如何动态发送图像并在下一个activity中显示它。

您可以将intent中的图片路径作为字符串传递,并在imageview中设置。

Intent intent = new Intent(getBaseContext(), ActivityB.class);
intent.putExtra("image_url", imageUrl);
startActivity(intent)

在你的第一个 Activity

将 ImageView 转换为位图

 imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();

Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);

秒Activity

  Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");

然后将位图设置为imageview。

方法一:

在你的第一个 Activity

将 ImageView 转换为位图

imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();

Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);

秒Activity

 Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");

然后在ImageView中显示位图。

方法二:

将位图转换为字节数组:-

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

将字节数组传递到意图中:-

Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("picture", byteArray);
startActivity(intent);

从 Bundle 中获取字节数组并转换为位图图像:-

Bundle extras = getIntent().getExtras();
byte[] byteArray = extras.getByteArray("picture");

Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);

image.setImageBitmap(bmp);

只需将它作为一个字符串传递并从下一个 activity.You 中取出它就可以了所以我不解释那部分!如果你有一个 url 无论如何它是一个字符串所以没有根本不需要担心。假设您发送不带文件类型的图像名称,这是一种轻量级方式。

如果您想获取可绘制文件夹中图像的 ID,请使用您获取的字符串

int id1 = getResources().getIdentifier(StringImageNameWithOutPng, "drawable", getPackageName());

如果你想要 drawable

Drawable drawable = ContextCompat.getDrawable(YourCurrantActivity.this, id1);

想怎么用就怎么用

whateverImageView.setImageDrawable(drawable);

更多:

在两个活动之间传递数据的简单方法如下。

FromActivity.java

Intent i = new Intent(FromActivity.this, ToActivity.class);
i.putExtra("ImageDetails", imgDetails);
startActivity(i);
/* Note: imgDetails can be an object with image details of ImageDetails.java class (or) 
you can set as many properties separately using putExtra multiple times. 
If you are using a class, make it serializable.
*/

ToActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    this.imgDetails = (ImageDetails) getIntent().getSerializableExtra("ImageDetails");
    ...
}

谢谢 斯里拉姆