Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android在视图中保存/显示绘制的图像_Java_Android_Android Canvas_Android View - Fatal编程技术网

Java Android在视图中保存/显示绘制的图像

Java Android在视图中保存/显示绘制的图像,java,android,android-canvas,android-view,Java,Android,Android Canvas,Android View,我对android平台相当陌生,我用canvas.drawPath(path,paint)覆盖了CustomView的onDraw方法,以便在页面上生成图形 但是,我试图保存此图形以用于另一个活动(最终页面),在该活动中可以并排显示多个保存的图形,但我经常遇到问题,最终页面上没有显示任何图像 我想知道如何处理这种情况。我读了一些关于将图形存储为位图并在以后重建的帖子。所以我用 从包含原始图形的自定义视图中提取位图。然后,我使用提取的位图创建了一个画布 Bitmap map = getBitmap

我对android平台相当陌生,我用canvas.drawPath(path,paint)覆盖了CustomView的onDraw方法,以便在页面上生成图形

但是,我试图保存此图形以用于另一个活动(最终页面),在该活动中可以并排显示多个保存的图形,但我经常遇到问题,最终页面上没有显示任何图像

我想知道如何处理这种情况。我读了一些关于将图形存储为位图并在以后重建的帖子。所以我用

从包含原始图形的自定义视图中提取位图。然后,我使用提取的位图创建了一个画布

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
           } 
}