【问题标题】:Drawing on photo - when rotating, lose strokes在照片上绘图 - 旋转时,会丢失笔画
【发布时间】:2018-04-24 04:50:35
【问题描述】:

我目前正在使用这里的代码,尽管为了满足我的需要而进行了大量修改 https://stackoverflow.com/a/28186621/4541217 例如我需要从相机拍摄图像以及从图库中选择。我也在缩放图像。

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

我有

    bTemp = null;

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

    }

在我的 onCreate 中,还有一个覆盖...

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

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

从示例中,我尝试保存 Uri、alteredBitmap、位图和 choosenImageView。但是,这些都不起作用。如果我拍一张照片,在上面涂鸦,然后在做任何其他事情之前,使用改变的位图,如果我旋转,那么我会得到第一组笔画。但是,之后就什么都没有了。

谁能帮我保持我的笔画信息旋转?

【问题讨论】:

    标签: java android imageview


    【解决方案1】:

    Learn about the activity lifecycle.

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

    【讨论】:

    • 谢谢。我已经阅读了所有这些,但只是部分更明智。看来我需要将图像状态保存在 onSaveInstanceState 中,然后我可以在设备旋转时在 onCreate 中恢复它。但是,这就是我提出问题的原因......我不知道要保存什么对象,这将给我我的基本图像,以及所有的涂鸦。
    【解决方案2】:

    我最终设法解决了这个问题,所以对于其他尝试这样做的人来说,这就是我所做的。

    从我的开篇文章中的示例链接开始,为了让它在旋转时粘住......

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

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

    那么,在activity的onCreate中...

        if(getLastNonConfigurationInstance() != null) {
    
            bmp = (Bitmap)getLastNonConfigurationInstance();
    
            alteredBitmap = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig());
    
            choosenImageView.setNewImage(alteredBitmap, bmp);
        }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多