在android上实现页面curl?

我在网上冲浪寻找一个很好的效果,在Android上翻页,似乎没有一个。 由于我正在学习这个平台,所以能够做到这一点似乎是件好事。

我设法在这里find一个页面: http : //wdnuon.blogspot.com/2010/05/implementing-ibooks-page-curling-using.html

- (void)deform { Vertex2f vi; // Current input vertex Vertex3f v1; // First stage of the deformation Vertex3f *vo; // Pointer to the finished vertex CGFloat R, r, beta; for (ushort ii = 0; ii < numVertices_; ii++) { // Get the current input vertex. vi = inputMesh_[ii]; // Radius of the circle circumscribed by vertex (vi.x, vi.y) around A on the xy plane R = sqrt(vi.x * vi.x + pow(vi.y - A, 2)); // Now get the radius of the cone cross section intersected by our vertex in 3D space. r = R * sin(theta); // Angle subtended by arc |ST| on the cone cross section. beta = asin(vi.x / R) / sin(theta); // *** MAGIC!!! *** v1.x = r * sin(beta); v1.y = R + A - r * (1 - cos(beta)) * sin(theta); v1.z = r * (1 - cos(beta)) * cos(theta); // Apply a basic rotation transform around the y axis to rotate the curled page. // These two steps could be combined through simple substitution, but are left // separate to keep the math simple for debugging and illustrative purposes. vo = &outputMesh_[ii]; vo->x = (v1.x * cos(rho) - v1.z * sin(rho)); vo->y = v1.y; vo->z = (v1.x * sin(rho) + v1.z * cos(rho)); } } 

这给了一个例子(上面)代码为iPhone,但我不知道如何去执行这个在Android上。 那么请问任何一位math之神,请帮我解释一下在Android Java中如何实现这一点。

是否有可能使用本地绘制API,我将不得不使用openGL? 我能以某种方式模仿这种行为吗?

任何帮助,将不胜感激。 谢谢。

****************编辑********************************* *************

我在Android API演示中find了一个位图网格示例: http : //developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/BitmapMesh.html

也许有人可以帮助我一个方程,只是简单地将页面右上angular向内折叠,以创build一个类似的效果,以便以后可以使用阴影来更深入地进行绘制。

我刚刚创build了一个开放源代码项目,它使用本地canvas在2D中进行页面curl模拟: https : //github.com/moritz-wundke/android-page-curl我仍在努力添加适配器等使其可以作为独立的视图使用。

  • 编辑:链接更新。
  • 编辑:缺less文件已被推到回购。

我正在做一些关于使用OpenGL ES的Android页面curl效果的实验。 这实际上是一个草图,但也许给了一些想法如何实现页面curl为您的需求。 如果您对3D翻页实施感兴趣,

至于你提到的公式 – 我试了一下,不太喜欢这个结果。 我会说,它根本不适合小屏幕,并开始黑客一个更简单的解决scheme。

代码可以在这里find: https : //github.com/harism/android_page_curl/

在写这篇文章时,我正在决定如何实现“假”软阴影,以及是否创build一个适当的应用程序来炫耀这个页面的curl效果。 而且这也是我所做过的非常less的OpenGL实现之一,不应该被视为一个合适的例子。

我很确定,你必须使用OpenGL才能获得很好的效果。 基本的UI框架的function是相当有限的,你只能使用animation对视图做基本的转换(alpha,translate,rotate)。

这可能是模仿类似的东西在二维使用FrameLayout,并在其中的自定义视图。