繁体   English   中英

在android中保存/恢复自定义视图的状态

[英]Save/restore state of custom views in android

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

edittext的自定义视图

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

您需要存储所有编辑内容:

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

Flip :为此创建一个标志,并为正面和背面设置True,false值。

Text :你知道怎么把文字从EditTextEditText

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

上面的方法返回左视图和顶视图的位置,但您需要从左,顶部和高度,宽度计算右下角位置。

创建一个Pojo以将所有这些参数保存在一起,并将此pojo存储到SharedPreferences或Data Base或Application Context中。

这是最简单的方法

  • 1 - 通过地图Pojo将所有必需的属性存储在首选项中
    或通过序列化。
  • 2 - 在多个视图的情况下保留多个键。
  • 3 - 启动特定屏幕后,获取视图
    来自首选项的属性并将其设置在视图上(右侧是一个带有Pref键的util方法,设置所有内容并返回视图)。

最后,经过几天的搜索,我得到了一个解决方案。

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

还有一个类似于这个StickerView的库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM