Hamid - 2 years ago 74

Android Question

I was surfing the net looking for a nice effect for turning pages on Android and there just doesn't seem to be one. Since I'm learning the platform it seemed like a nice thing to be able to do is this.

I managed to find a page here: 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 x-y 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));

}

}

that gives an example (above) code for iPhone but I have no idea how I would go about implementing this on android. Could any of the Math gods out there please help me out with how I would go about implementing this in Android Java.

Is it possible using the native draw APIs, would I have to use openGL? Could I mimik the behaviour somehow?

Any help would be appreciated. Thanks.

****************EDIT**********************************************

I found a Bitmap Mesh example in the Android API demos: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/BitmapMesh.html

Maybe someone could help me out on an equation to simply fold the top right corner inward diagnally across the page to create a similar effect that I can later apply shadows to to gie it more depth?

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

I just created a open source project which features a page curl simulation in 2D using the native canvas: https://github.com/moritz-wundke/android-page-curl I'm still working on it to add adapters and such to make it usable as a standalone view.

- EDIT: Links updated.
- EDIT: Missing files has been pushed to repo.

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**