我在Android中创建一个应用程序,它需要从一个活动发送位图对象并显示在第二个活动页面上发送的位图对象。但是,我得到一个空白的屏幕
以下是我发送Bitmap对象的代码示例: -
Intent intent = new Intent(Display2.this, Display3.class);
ImageView iv = (ImageView) findViewById(R.id.imageView1);
Bitmap bitmap = Bitmap.createBitmap(iv.getWidth(), iv.getHeight(), Bitmap.Config.RGB_565);
intent.putExtra("BitmapImage", bitmap);
startActivity(intent);
现在是第二个活动的代码部分,用于检索已发送的对象并在屏幕上显示: -
public class Display3 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Bitmap bitmap = (Bitmap)getIntent().getParcelableExtra("BitmapImage");
ImageView myIV = (ImageView) findViewById(R.id.imageView1);
bitmap = bitmap.createBitmap(myIV.getWidth(), myIV.getHeight(), Bitmap.Config.RGB_565);
myIV.setImageBitmap(bitmap);
setContentView(R.layout.display3);
}
}
有人能说这部分有什么不对吗?
谢谢!
答案 0 :(得分:3)
Bitmap实现了Parcelable对象,因此你总是可以在下面的意图中传递它:
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
并在另一端检索它:
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
答案 1 :(得分:2)
这不适合将位图从一个活动传递到另一个活动..
您可以简单地将Bitmap命名为静态优先。 然后创建一个类似
的方法public static Bitmap getBitmap(){
return bitmap;
}
然后你可以简单地从其他活动中打电话,
bitmapexistingclass.getBitmap();
如果我们使用Intent传递位图,我们会得到一些错误,请检查此问题How to pass bitmap from one activity to another
答案 2 :(得分:1)
从上面的代码中创建一个空位图:
ImageView iv = (ImageView) findViewById(R.id.imageView1);
Bitmap bitmap = Bitmap.createBitmap(iv.getWidth(), iv.getHeight(), Bitmap.Config.RGB_565);
我没有看到任何理由为什么从这段代码中你会得到任何其他的空白黑色位图,高度和宽度等于imageView高度和宽度
答案 3 :(得分:0)
你期望从android填充Bitmap
本身的绘图,你创建一个空Bitmap
Object
,其高度和宽度等于ImageView
对象;
当Bitmap实现Parcelable
时,您可以简单地将其放入捆绑包并在其他Activity
答案 4 :(得分:0)
使用以下两种方法将位图转换为字符串,反之亦然。然后,您可以将带有意图的字符串从活动传递到另一个活动。我在我的申请中也是这样做的。 然后我们不需要使用ParcelableExtra和serialzable类。
public String convertBitmapToString(Bitmap src) {
if(src!= null){
ByteArrayOutputStream os=new ByteArrayOutputStream();
src.compress(android.graphics.Bitmap.CompressFormat.PNG, 100,(OutputStream) os);
byte[] byteArray = os.toByteArray();
return Base64.encodeToString(byteArray,Base64.DEFAULT);
}
return null;
}
public Bitmap getBitMapFromString(String src){
Bitmap bitmap = null;
if(src!= null){
byte[] decodedString = Base64.decode(src.getBytes(), Base64.DEFAULT);
bitmap = BitmapFactory.decodeByteArray(decodedString,0,decodedString.length);
return bitmap;
}
return null;
}