Android 如何将图像从一个活动动态传递到另一个活动,并通过JSON在imageview中显示它
我通过JSON将值从一个活动传递到另一个活动。我能够在下一个活动中接收字符串值。但我不知道该派法师去。同时,它们都是来自数组的动态值 发送方式如下:Android 如何将图像从一个活动动态传递到另一个活动,并通过JSON在imageview中显示它,android,json,android-imageview,Android,Json,Android Imageview,我通过JSON将值从一个活动传递到另一个活动。我能够在下一个活动中接收字符串值。但我不知道该派法师去。同时,它们都是来自数组的动态值 发送方式如下: jsonobj.put(“Location”, “Chennai”); jsonobj.put(“Name”, “test1”); Receving like the following: location = MainActivity.jsonobj.getString(“Location”); name =MainActivity.js
jsonobj.put(“Location”, “Chennai”);
jsonobj.put(“Name”, “test1”);
Receving like the following:
location = MainActivity.jsonobj.getString(“Location”);
name =MainActivity.jsonobj.getString(“Name”);
请帮助我如何动态发送图像并在下一个活动中显示它。您可以将图像的路径作为字符串传递给intent,并在imageview中进行设置
Intent intent = new Intent(getBaseContext(), ActivityB.class);
intent.putExtra("image_url", imageUrl);
startActivity(intent)
在你的第一次活动中
将ImageView转换为位图
imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
在第二个活动中
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
然后将位图设置为imageview。方法1:
Intent intent = new Intent(getBaseContext(), ActivityB.class);
intent.putExtra("image_url", imageUrl);
startActivity(intent)
在你的第一次活动中
将ImageView转换为位图
imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
在第二个活动中
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
然后在ImageView中显示位图
方法2:
将位图转换为字节数组:-
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 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);
只需将其作为字符串传递,并从下一个活动中获取。您说过您可以这样做,所以我不会解释该部分!如果你有一个url,它是一个字符串,所以根本不用担心。假设您发送的图像名称没有其文件类型,这是一种轻量级的方式 如果要获取可绘制文件夹中图像的ID,请使用获得的字符串
int id1 = getResources().getIdentifier(StringImageNameWithOutPng, "drawable", getPackageName());
如果您希望可绘制
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.
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
...
this.imgDetails = (ImageDetails) getIntent().getSerializableExtra("ImageDetails");
...
}
ToActivity.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.
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
...
this.imgDetails = (ImageDetails) getIntent().getSerializableExtra("ImageDetails");
...
}
谢谢
Sriram只需将图像的名称作为字符串传递。这不是答案,应该放在评论中。我希望这能回答他的问题:-)@Sankar ganesh你能用一个例子解释一下路径吗如果是本地图像-意图=新意图(getBaseContext(),ActivityB.class);intent.putExtra(“image_url”,“/sdcard/Images/test_image.jpg”);startActivity(intent)如果它是来自web的图像,则可能是image@Charuka的url