Android

时间:2015-06-27 21:15:44

标签: android user-interface

我是android的新手,为小学的孩子们写了一个学习应用程序。该应用程序用于练习简单的计算(加减)。

到目前为止,我已经完成了UI设计并编写了一个简单的概念验证实现来演示应用程序的基本用法。

其中一项活动的设计(添加123和456)如下所示:

|-----------------------------|
|  |c| 1   |c| 2   |c| 3      |
|                             |
|      4       5       6      |
|    --------------------     |
|   | r1 |  | r2 |  | r3 |    |
|                             |
|                             |
|  1  |  2  |  3  |  4  |  5  |
|  6  |  7  |  8  |  9  |  0  |
|    cancel    |     check    |
|-----------------------------|

numblock中的数字(0-9)是可以拖放到进位字段(|c|)或结果字段(|r1|等)的视图。已经下降到进位或结果字段的值也可以移动(再次拖放)到另一个进位或结果字段。

将会有多种练习模式,例如:

|-----------------------------|
|   1   +   9   =   |r1|r2|   |
|   2   +   8   =   |r1|r2|   |
|   3   +   7   =   |r1|r2|   |
|   4   +   6   =   |r1|r2|   |
|   5   +   5   =   |r1|r2|   |
|                             |
|                             |
|  1  |  2  |  3  |  4  |  5  |
|  6  |  7  |  8  |  9  |  0  |
|    cancel    |     check    |
|-----------------------------|

或:

|-----------------------------|
|  1   2   3   4   5          |
|  |   |   |   |   |          |
|   |+|     |+|    |          |
|    |       |     |          |
|   |r1|    |r2|   |          |
|    |       |     |          |
|    \       \    /           |
|     \       |-|             |
|      \       |              |
|       \     |r3|            |
|        \     /              |
|         \   /               |
|          |+|                |
|           |                 |
|          |r4|               |
|                             |
|                             |
|  1  |  2  |  3  |  4  |  5  |
|  6  |  7  |  8  |  9  |  0  |
|    cancel    |     check    |
|-----------------------------|

对于我目前的实现,我在一个活动中放置了所有拖放内容,布局是一个.xml个文件。

我想以某种方式重用拖放功能的代码来保持代码清洁,而不是在许多不同的活动中实现相同的功能。

我已经阅读过关于android中的片段,并考虑为numblock制作一个片段,并为每个丢弃数字的区域创建一个片段,但据我研究,在片段之间拖放并不是真正的方式去这里(drag and drop between two fragments,建议的解决方案似乎不是很优雅)。

现在,我正在考虑根据所需的模式,在单个活动的onCreate()中动态创建所有内容,但是动态的numblock。我希望你对这种方法有所了解。这样做有可能出现问题吗?

是否有其他方法可以实现相同的功能并保持代码可维护? 您有关于如何设计我的代码尽可能简单和可维护的建议吗? 您将如何设计具有所需功能的应用程序?

1 个答案:

答案 0 :(得分:5)

将设计决策留给你必须做出的一般建议肯定适用于此。我相信有数百种方法可以组织这样的代码。

在“活动”(或可能是片段)中,您到目前为止具有以下功能:

  • 拖放数字
  • 计算答案是否正确
  • 设置问题
  • 做所有活动必须做的事情 - 例如有一个onCreate()

你能以某种方式分解这些不同的功能吗?

是否有适合自己上课的好东西?

  • 可拖动数字?
  • 不可拖动的号码?
  • 数学符号?
  • 您可以拖放的地方吗?
  • 形成计算的行(可以嵌套在一起)?

这些元素将如何相互通信?

  • 计算答案是否正确?
  • 这样一个元素知道它在哪里?

您打算如何创建活动的新实例?

  • 您将哪些数据传递给活动?
  • 您想拨打一组不同类型的电话吗?
  • 如何确定活动加载的类型?

我甚至没有开始回答你的问题,但这个答案已经很长了。

最重要的问题是你想从设计中得到什么?我猜测答案是尽可能简单地向应用添加新类型的问题。

可能对您有帮助的事情:

  • 您可以以编程方式将视图添加到布局中。您不需要在xml文件中指定内容。当您从底部拖动或更复杂地以编程方式定义整个设置时,这可以简单地用于生成新数字。
  • 我认为接口和监听器将是元素进行通信的最佳方式。
  • 看一些模式可能会很好:模板方法,静态工厂方法甚至策略在这里可能会有所帮助。
  • 请记住,您可以轻松地从“活动”中将功能拆分为单独的Java文件,然后根据需要调用它们。
  • 感觉很像游戏。我认为是否值得花时间研究游戏引擎是否可以帮助你,这是50/50。
  • 保持简单 - 坚持一次拆分一件事。一次只上一节课。我不会尝试同时制作一些庞大,复杂,复杂的设计。