android在Activity之间传递图片
假设有两个Activity,FirstActivity上的一张图片,想跳转到到SecondActivity上时显示出来。
一、图片较小的情况(图片小于40K)
FirstActivity:
1 Intent intent=new Intent(FirstActivity.this,SecondActivity.class); 2 intent.putExtra("bitmap", bitmap); 3 startActivity(intent);
SecondActivity:
1 imageview=(ImageView)findViewById(R.id.imageview1); 2 Intent intent=getIntent(); 3 if(intent!=null) 4 { 5 bitmap=intent.getParcelableExtra("bitmap"); 6 imageview.setImageBitmap(bitmap); 7 }
这样,SecondActivity上面就能显示了。
二、当图片稍大,大于40K时,用第一种方法就容易死机了,要用下面的方法
FirstActivity:
1 Intent intent = new Intent(); 2 ByteArrayOutputStream baos=new ByteArrayOutputStream(); 3 bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); 4 byte [] bitmapByte =baos.toByteArray(); 5 intent.putExtra("bitmap", bitmapByte); 6 intent.setClass(FirstActivity.this, SecondActivity.class); 7 startActivity(intent);
SecondActivity:
1 imageview=(ImageView)findViewById(R.id.trans_imageview); 2 Intent intent=getIntent(); 3 if(intent!=null) 4 { 5 byte[] bitmapByte = intent.getByteArrayExtra("bitmap"); 6 Bitmap bitmap= null; 7 bitmap=BitmapFactory.decodeByteArray(bitmapByte, 0, bitmapByte.length, null); 8 imageview.setImageBitmap(bitmap); 9 }
这样,SecondActivity上面就能显示了。
备注:这两个方法的区别在于,第二种先把bitmap存储为byte数组,然后再通过Intent传递。