Java Android在视图中保存/显示绘制的图像
我对android平台相当陌生,我用canvas.drawPath(path,paint)覆盖了CustomView的onDraw方法,以便在页面上生成图形 但是,我试图保存此图形以用于另一个活动(最终页面),在该活动中可以并排显示多个保存的图形,但我经常遇到问题,最终页面上没有显示任何图像 我想知道如何处理这种情况。我读了一些关于将图形存储为位图并在以后重建的帖子。所以我用 从包含原始图形的自定义视图中提取位图。然后,我使用提取的位图创建了一个画布Java Android在视图中保存/显示绘制的图像,java,android,android-canvas,android-view,Java,Android,Android Canvas,Android View,我对android平台相当陌生,我用canvas.drawPath(path,paint)覆盖了CustomView的onDraw方法,以便在页面上生成图形 但是,我试图保存此图形以用于另一个活动(最终页面),在该活动中可以并排显示多个保存的图形,但我经常遇到问题,最终页面上没有显示任何图像 我想知道如何处理这种情况。我读了一些关于将图形存储为位图并在以后重建的帖子。所以我用 从包含原始图形的自定义视图中提取位图。然后,我使用提取的位图创建了一个画布 Bitmap map = getBitmap
Bitmap map = getBitmapFromView(cView);
Canvas canvas = new Canvas(map);
并将此画布附加到画布对象的静态列表中
在用于并排显示所有图形的活动中,我
RelativeLayout layout = (RelativeLayout) findViewById(R.id.activity_display);
for (int x=0; x < canvasList.size(); x++) {
Canvas currCanvas = canvasList.get(x)
View view = new View(this);
view.draw(currCanvas);
layout.addView(canvasList.get(x));
}
RelativeLayout布局=(RelativeLayout)findViewById(R.id.activity\u显示);
对于(int x=0;x
我的方法肯定有问题,但我无法识别它。那么,您是否尝试在getBitmapFromView中显示接收到的位图以验证它是否有效 然后下一步是将其存储在一个静态类中,并尝试在另一个acitvity中显示它,以确保按计划存储工作
在最后一段代码中:您正在创建一个视图,在其画布上绘制,然后将画布添加到布局中?没有进一步的研究来做合乎逻辑的事情,似乎是把视图添加到布局中,还是我错了 尝试使用Bundle savedInstance。我将使用位图数组,而不是使用画布列表:
@Override
protected void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
state.putSerializable("starttime", startTime);
for(int i=0; i<bmp.size; i++){
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp[i].compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
state.putByteArray("img"+i, byte[] value);
}
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
if ((bundle != null)
for(int i=0; bundle.getByteArray("img"+i) != null; i++) {
//Load byteArray back to bitmap array
}
}
@覆盖
SaveInstanceState上受保护的无效(捆绑状态){
super.onSaveInstanceState(状态);
state.putSerializable(“starttime”,starttime);
对于(int i=0;i
@Override
protected void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
state.putSerializable("starttime", startTime);
for(int i=0; i<bmp.size; i++){
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp[i].compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
state.putByteArray("img"+i, byte[] value);
}
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
if ((bundle != null)
for(int i=0; bundle.getByteArray("img"+i) != null; i++) {
//Load byteArray back to bitmap array
}
}