如何将图像从一个 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");
...
}
谢谢
斯里拉姆
我正在通过 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");
...
}
谢谢 斯里拉姆