自定义视图类的代码结构

时间:2012-09-11 14:23:33

标签: android android-activity android-view

我事先道歉,这是一个有点模糊的话题/问题。

假设我正在编写一个普通棋盘游戏的活动类。这个类可以命名为Game.java(通常足够)并扩展Activity并维护一些按钮和文本视图,以及(更重要的是)一个名为Board.java(或静态嵌套类)的自定义View类,它扩展了SurfaceView。

现在,所有绘图基本上都需要在SurfaceView类中完成,因为这是Android应用程序的本质。如果这个棋盘游戏的部分(例如 - 英雄和怪物)存储在相对列表中,那么问题就出现在哪里,最佳实践在哪里指示存储这些列表?也就是说,人们会认为这些列表应该由Game类维护,因为从技术上讲,这是对正在进行的游戏的更全面的整体视图。但是,在这种情况下,静态嵌套类(或单独的顶级类)Board无法访问这些列表,因此出于绘图目的,它不知道每个部分的状态是什么,而不是同时在两个类中维护,这是非常麻烦的。几乎同样繁琐的是在Board中维护这个列表,除了将其指定为要启动的活动之外,它似乎显着地抽象了Game的目的。

关于如何彻底实施这一点的任何总体共识或意见?我个人的想法倾向于将其保留在董事会中,为了记忆和理智的目的而不是任何事情,但如果有一些明显缺失的东西,那将是非常有帮助的。

1 个答案:

答案 0 :(得分:0)

我已经对此进行了一些实验,并且在我的自定义SurfaceView类包含Thread的自定义实现时取得了成功。除了处理所有物理和绘图外,该线程还有内部类,用于表示绘制的对象,并为画布上的所有可见项维护这些对象的列表。

Google在下载SDK时会提供示例,而且还有一些涉及在画布上绘图的内容。我发现LunarLander示例是如何实现此行为的一个非常好的起点。使用SDK管理器下载样本后,您可以在android-sdk/samples中找到它们。希望这会有所帮助。