我有imageView1,我想将其转换为位图并发送到上一个活动,所以我的代码是:
imageView1.buildDrawingCache();
Bitmap bm=imageView1.getDrawingCache();
int bytes = bm.getWidth()*bm.getHeight()*4;
ByteBuffer buffer = ByteBuffer.allocate(bytes);
bm.copyPixelsToBuffer(buffer);
final byte[] array = buffer.array();
但我得到:
04-25 17:45:55.959:E / AndroidRuntime(7066):由以下原因引起:java.lang.NullPointerException
不知道我是否可以通过这种方式使用drawingCache。
最佳答案
假设您有一个名为ChildActivity的活动,在其中使用imageView1,
而不是像这样声明它:
ImageView imageView1;
做:
protected static ImageView imageView1 = null;
为了在任何方法外部可见,必须在类声明部分的最高作用域级别上执行此操作。
然后,假设您有一个名为ParentActivity的活动,您想在其中使用imageView1的图形,
您可以在活动名称前添加imageView1控件:
Bitmap bmp = ((BitmapDrawable) ChildActivity.imageView1.getDrawable()).getBitmap();
关键功能是:ChildActivity.imageView1
我在其他活动中提到了ImageView。
而且我不必在活动之间传递位图。
它比您尝试的要安全,而且(我想)更快。
关于android - 图像和buildDrawingCache,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23297760/