4

Hello everyone and thanks for your time.

Introduction to the problem: Basically the main problem is that I'm designing an android tablet application and I don't know exactly which is the best way to implement the kind of design I've been thinking about. I've been reading that is possible to use another platforms apart of Android, like OpenGL or HTML, but I don't actually know how to do it and if its necessary.

What do I attempt to do? I didn't know how to explain exactly which is my idea using words so I decided to prepare a small image about it, here it is:

Design about what I attempt to implement

So, the idea is to drag&drop the buttons to the color square, and detect if they are colliding, if that happens, start an event. Then all the buttons are going to be ordered again by themselves.

Which is the question then? I'm new at android, and I have no idea which is the best way to start implementing this, if I should bet for OpenGL or program directly in android. And in both cases, which is the best way START CREATING something like this?

Last things: I want to make clear something, just in case: This IS NOT any school work that someone asked me to do, I'm doing it by my own. I'm NOT ASKING PEOPLE TO DO MY WORK I'm just asking your opinion and asking for help and guidance about how to start managing this. (so I want your professional opinion, not any single line of code) :D

Thank you very much to you all. :)

Martí.

4

3 回答 3

2

这听起来很容易在 HTML / JavaScript 中使用触摸事件来完成,也许使用拖放事件的支持库。我不知道这对您是否重要,但该解决方案的好处是它可以很容易地从 Android 移植到其他移动设备。

就像 Quintin 所说,如果性能是一个大问题,您可以优化并使用 OpenGL,但您可能会在一天内用 HTML 敲出一个简单的原型......

于 2012-10-17T08:00:25.817 回答
1

Open GL 似乎是您最好的选择。我对 Android OpenGL 没有太多经验,但它将是编写应用程序的最有效方式 - 因为您正在处理碰撞检测和颜色。

Android OpenGL 将是最佳选择,因为它将由 ADK 本地编译,而 HTML 将在运行时进行解释。

至于使用普通乏味的 Android 布局,我不建议这样做,因为这不是使用标准组件的“标准”UI。您正在创建一个非常图形化的完全独特的界面,因此我建议您坚持这一点。

编辑:您会发现,通过使用标准布局,您的所有用户界面组件都必须进行自定义,并且您将在 onDraw() 方法中花费大量时间进行碰撞检测。

这样做的一个问题是您需要检查对象是否与另一个对象发生冲突,从而使某些类型的对象相互了解,并且可能会冒循环引用的风险。而如果您使用 OpenGL,您可以拥有一个“Shape”类型列表,然后拥有一个“checkCollision(Shape draggedObject)”方法,该方法遍历形状列表并使用最简单对象的优化碰撞检测来检查碰撞。

第二个问题是在 onDraw() 方法中进行碰撞检测会使您的应用程序滞后,并且在执行拖动时对用户来说似乎很粘。组件越多,问题就越多。

编辑 2: 以下是 Android OpenGL 的一些资源:http: //developer.android.com/guide/topics/graphics/opengl.html
http://www.learnopengles.com/android-lesson-one-getting-started/
使用 OpenGL 的 2D 示例

于 2012-10-17T07:55:45.497 回答
1

在我看来,您不需要任何框架。你可以用安卓来做这一切。我也建议你使用安卓。我不是一个好的设计师,但我的建议是:

2x Framelayout,用于左侧的颜色工具和右侧的颜色工具对于颜色工具,对于每 2 种颜色,您可以使用 LinearLayout。如果您想要精确的背景设计,您可以使用图像软件进行设计,并将其设置在背景中。对于颜色,您可以使用 imageButton。

我还建议您阅读如何设计应用程序的教程,这是一个很好的教程:http: //mobile.tutsplus.com/tutorials/android/android-layout/

于 2012-10-17T08:10:24.063 回答