在照片上绘图 - 旋转时,丢失笔划

时间:2018-04-22 14:16:39

标签: java android imageview

我目前正在使用此处的代码,尽管经过大量修改以满足我的需求 https://stackoverflow.com/a/28186621/4541217 比如我需要从相机拍摄图像以及从图库中选择。我也在缩放图像。

这一切都很好,除了一个问题。旋转设备时我丢失了东西。

我有

    bTemp = null;

    if(getLastNonConfigurationInstance() != null) {
        bTemp = getLastNonConfigurationInstance();

    }

在我的onCreate中,并覆盖...

@Override
@Deprecated
public Object onRetainNonConfigurationInstance() {
    return bTemp;
}

我可以让它返回图像但我丢失了所有的笔画信息。

从示例中,我尝试保存Uri,changedBitmap,位图和choosenImageView。但是,这些都不起作用。如果我拍照,乱涂乱画,然后在做其他任何事情之前,使用changedBitmap,如果我旋转,那么我得到第一组笔画。但是,之后什么都没有。

有人可以帮我保持旋转中风信息吗?

2 个答案:

答案 0 :(得分:0)

Learn about the activity lifecycle.

您需要覆盖onPause,onResume等函数,并使用savedInstanceState。

答案 1 :(得分:0)

我最终设法解决了这个问题,所以对于那些试图做同样事情的人来说,这就是我所做的。

继续开始帖子中的示例链接,为了让它在旋转时坚持......

在onRetainNonConfigurationInstance中,保留changedBitmap。 (这在活动中)

@Override
@Deprecated
public Object onRetainNonConfigurationInstance() {
    return alteredBitmap;
}

然后,在活动的onCreate中......

    if(getLastNonConfigurationInstance() != null) {

        bmp = (Bitmap)getLastNonConfigurationInstance();

        alteredBitmap = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig());

        choosenImageView.setNewImage(alteredBitmap, bmp);
    }

注意“bmp”是从changedBitmap发送的,现在changedBitmap是新图像。然后将其传递到DrawableImageView中的setNewImage。