通过拖放创建新视图&控制它们(自定义布局)

时间:2017-03-07 21:47:52

标签: android android-layout drag-and-drop

该应用程序的主要目的是为学生提供教育课程。 我有两个演员:

  • 从Android应用内部创建课程内容的教师 课程可以是android视图的任意组合。
  • 观看这些课程并与课程互动的学生可以点击按钮听取声音(仅查看本课程)

第1阶段: 实施拖放编辑器
到目前为止,我已经能够创建新的视图(ImageViews TextViews等)&把它们放在新的布局中。

但是一旦我放弃它们,我就再也无法控制它们了。现在我被限制在一种布局风格,我不想要。我想达到 android studio布局编辑器的水平,我可以在其中添加视图,更改位置,大小等。

第2阶段: 保存布局 您会建议一种方法来保存要向学生显示的布局数据。 JSON? XML?

阶段3: 解析布局数据
我已经实现了XML解析器并使用我在android studio中创建的布局对其进行了测试。但是,根据您的建议,我可能会改变我解析课程的方式。

拖动& DropLayout编辑器 - 讲师布局 - 学生布局 - Android Studio

pic

1 个答案:

答案 0 :(得分:0)

我建议如下:

  • 第1阶段

为可以删除的所有小部件创建自定义视图(LinearLayoutImageView等)。让他们全部实现以下界面:

interface Layout {
  Layout getLayout();
  LayoutEditor getLayoutEditor();
}

其中Layout是该视图布局(XML或JSON)的可序列化表示,LayoutEditor是另一个可用于修改View上的属性的接口( layout_width,layout_height background等)

  • 第二阶段

因此,在您拖放小部件以说明应用程序画布之后,您将获得实现Layout接口的视图的视图层次结构。只需递归地遍历此树并在每个视图上调用getLayout()并将Layout层次结构拼接在一起。然后您可以将其序列化并保存。

  • 第3阶段

您反序列化保存的Layout并遍历布局树并使用它重新创建View层次结构。

查看proteus的某些动向。这使用JSON布局来扩充原生Android视图。

相关问题