Mettre en œuvre page curl sur android?

je surfais sur le net à la recherche d'un bel effet pour tourner des pages sur Android et il ne semble tout simplement pas être un. Depuis que j'ai appris la plateforme, ça m'a semblé être une bonne chose d'être capable de faire ça.

j'ai réussi à trouver une page Ici: 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));
  }  
}

qui donne un exemple (ci-dessus) de code pour iPhone mais je n'ai aucune idée de comment je voudrais allez mettre en œuvre cela sur android. Est-ce que l'un des dieux des mathématiques là-bas s'il vous plaît m'aider avec la façon dont je vais à mettre en œuvre ce dans Android Java.

est-il possible d'utiliser les API De Tirage natives, est-ce que je devrais utiliser openGL? Pourrais-je mimik le comportement d'une certaine manière?

Toute aide serait appréciée. Grâce.

****************MODIFIER**********************************************

j'ai trouvé un Bitmap Exemple de maillage dans les démos de L'API Android: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/BitmapMesh.html

peut-être que quelqu'un pourrait m'aider sur une équation pour simplement plier le coin supérieur droit vers l'intérieur diagnostiquer à travers la page pour créer un effet similaire que je peux plus tard appliquer des ombres à gie it plus de profondeur?

40
demandé sur Neal L 2010-10-12 12:39:15

3 réponses

je viens de créer un projet open source qui comporte une simulation de boucle de page en 2D en utilisant le canvas natif: https://github.com/moritz-wundke/android-page-curl Je travaille encore dessus pour ajouter des adaptateurs et ainsi le rendre utilisable comme une vue autonome.

  • EDIT: Liens mis à jour.
  • EDIT: les fichiers manquants ont été poussés sur repo.
29
répondu Moss 2017-08-16 10:08:11

je fais quelques expériences sur page curl effect sur Android en utilisant OpenGLES en ce moment. C'est tout à fait un croquis en fait, mais peut-être donne une idée de comment mettre en œuvre page curl pour vos besoins. Si vous êtes intéressé par L'implémentation de page 3D flip.

quant à la formule à laquelle vous faites référence - je l'ai essayé et je n'ai pas trop aimé le résultat. Je dirais qu'il ne convient tout simplement pas petit écran très bien et a commencé à pirater une solution plus simple.

Le Code

peut être trouvé ici: https://github.com/harism/android_page_curl /

en écrivant ceci je suis au milieu de décider comment mettre en œuvre 'faux' ombres douces - et si de créer une application appropriée pour montrer hors de cet effet de boucle de page. De plus, c'est à peu près l'une des quelques implémentations D'OpenGL que j'ai faites et ne devrait pas être prise comme un bon exemple.

30
répondu harism 2011-04-11 23:53:13

Je suis assez sûr, que vous devez utiliser OpenGL pour un effet agréable. Les capacités du cadre de base de L'UI sont assez limitées, vous ne pouvez faire que des transformations de base (alpha, translate, rotate) sur les vues en utilisant des animations.

Tho il pourrait être possible d'imiter quelque chose comme cela en 2D en utilisant un FrameLayout, et une vue personnalisée en elle.

0
répondu Zsombor Erdődy-Nagy 2010-10-12 08:59:03