Save/restore android 中自定义视图的状态

Save/restore state of custom views in android

我已经为 EditText 实现了自定义视图,如下图所示:

现在这个自定义视图包括翻转、编辑、旋转、拖放和调整大小的功能。我在资源管理器中以位图格式保存此自定义视图。问题是我想编辑它,我想恢复自定义视图的细节并检索 CustomView 的每个细节,甚至是它的位置。那么,有什么方法可以实现吗?

您需要像这样存储所有编辑:

Rotation :为此你必须保持从初始值 0 到下一个旋转值的角度。

Flip:为此创建一个标志,并为前后设置True,False值。

Text : 你知道如何采用文本形式 EditText.

Layout position within parent View:

为了计算父视图中的布局位置,请使用以下方法并为此创建四个 int 变量,

Left =

Top =

Right =

Bottom =

Height=

Width =

private Map<String,Integer>  getPositionOnScreen(View view){
        Map<String,Integer> map = new HashMap<String,Integer>();
        View rootLayout = view.getRootView().findViewById(android.R.id.content);

        int[] viewLocation = new int[2];
        view.getLocationOnScreen(viewLocation);

        int[] rootLocation = new int[2];
        rootLayout.getLocationOnScreen(rootLocation);

        int relativeLeft = viewLocation[0] - rootLocation[0];
        int relativeTop  = viewLocation[1] - rootLocation[1];

        int height = viewLocation[0] - rootLocation[0];
        int width  = viewLocation[1] - rootLocation[1];


        map.put("left",relativeLeft);
        map.put("top",relativeTop);
        map.put("height",view.getLayoutParams().height);
        map.put("width",view.getLayoutParams().width);
        return map;
    }

上面的方法return视图的左上角位置,但是你需要从左上角计算右下角的高度,宽度。

创建一个 Pojo 将所有这些参数保存在一起,并将此 pojo 存储到 SharedPreferences 或数据库或应用程序上下文中。

最简单的方法

  • 1 - 通过映射将所有必需的属性存储在首选项中,Pojo
    或通过序列化。
  • 2 - 在多个的情况下保留多个密钥 意见。
  • 3 - 启动特定屏幕后,获取视图
    首选项中的属性并将其设置为视图(正确的 util 方法 使用 Pref 键,设置所有内容和 return 视图)。

终于找了几天解决办法。

有一个名为 StickerView 的库可以帮助存储特定 Drawable Sticker 或任何 Text Sticker 的数据使用 Matrix 并且许多细节可以通过使用 StickerView 的对象来存储,并且可以根据应用程序的要求进行定制。

还有一个与此类似的库 StickerView