问题描述
||
在我们的应用程序中,我们需要在执行某些图像处理后将位图从一个活动类发送到另一个活动。我们在第一个活动中调用方法,然后在第二个活动中显示输出图像。这两个活动类具有不同的布局xml文件。我们该怎么做?
解决方法
正如EboMike所说,位图是可模仿的,因此在您的第一个Activity中,您可以这样做:
Intent intent = new Intent(this,SecondActivity.class);
intent.putExtras(\"MYBITMAP\",yourImage);
startActivity(intent);
在您的SecondActivity中,添加以下代码:
Bitmap imageToDisplay = (Bitmap) this.getIntent().getExtras(\"MYBITMAP\");
//and then you can display it in your imageView :)
,位图是可打包的,因此您可以额外发送它,但是,如果位图很大,则这是个坏主意-它可能在没有太多RAM的旧手机上失败。
如果您有很大的位图,则应在传输时考虑将其写入内部存储。这也可以处理用户临时切换到其他应用程序(例如打来的电话),然后又返回到您的应用程序(此时可能已终止)的情况。
,如果活动在相同的apk中,则最好的方法是简单地使用静态变量。
您将要处理位图对象(来自Canvas?)
class Globals {
public static BitmapDrawable processedBitmapDrawable=null;
}
....
进行中的活动:
Bitmap processedBitmap = canvas.getBitmap();
Globals.processedBitmapDrawable = new BitmapDrawable(processedBitmap);
...
第二度:
if (Globals.processedBitmapDrawable!=null) {
imageView.setDrawable(Globals.processedBitmapDrawable);
}
看起来(而且很简单),但是是最好的方法,因为它可以多次保存/加载位图。
您可能还选择使用“ 5”,这样可以在需要时通过垃圾回收清理引用。尽管您可能需要重新加载/存储,但仍需要重新加载/存储。