2010-10-05 3 views
3

Je voudrais afficher certains éléments de l'interface utilisateur sur un fichier de mise en page XML android. J'essaie de faire une application, où deux joueurs peuvent s'asseoir à chaque extrémité de l'appareil mobile, et jouer les uns contre les autres.Comment faire pour afficher les éléments de l'interface utilisateur Android à environ 180 degrés

Donc besoin de montrer un bouton rotatif de 180 degrés.

Est-ce possible? J'ai essayé Android: gravité, mais cela n'a pas fonctionné.

Merci pour votre aide, Martin

Répondre

5

Je suggère que vous jetez un oeil à this thread, qui traite d'un problème similaire. Même si la question concerne un composant TextView, Button étend TextView, il devrait donc être trivial de l'adapter à un bouton. L'OP de cette question est finalement installée sur la méthode onDraw() suivante:

@Override 
public void onDraw(Canvas canvas) { 
    //This saves off the matrix that the canvas applies to draws, so it can be restored later. 
    canvas.save(); 

    //now we change the matrix 
    //We need to rotate around the center of our text 
    //Otherwise it rotates around the origin, and that's bad. 
    float py = this.getHeight()/2.0f; 
    float px = this.getWidth()/2.0f; 
    canvas.rotate(180, px, py); 

    //draw the text with the matrix applied. 
    super.onDraw(canvas); 

    //restore the old matrix. 
    canvas.restore(); 
} 

Je dirai aussi que je l'ai écrit une classe qui a mis en œuvre cette méthode onDraw() et il a très bien fonctionné.

+0

Cela fonctionne, merci beaucoup! – Martin

0

besoin donc de faire preuve de bouton 180 degrés rotateted.

Ceci n'est pris en charge par aucun widget Android existant, désolé.

+0

Mais ici, il est mis en œuvre: http://www.androidpit.de/de/android/market/apps/app/coolcherrytrees. games.reactor/2-Spieler-Reaktor – Martin

+0

@Martin: Quelle preuve avez-vous que ce sont des widgets Android? Je suppose que cela est mis en œuvre en utilisant des graphiques 2D et l'API 'Canvas'. – CommonsWare

+0

Ok, donc je devrais aussi utiliser de la toile. Je n'ai jamais travaillé avec. Est-ce difficile de dessiner 4 boutons et d'utiliser les événements Click sur eux? – Martin

0

Ce que vous pouvez faire est d'étendre la vue Bouton et de remplacer la méthode onDraw().
Cela vous donne un canevas que vous pouvez ensuite faire pivoter puis appeler super.onDraw() pour que le système dessine le bouton après qu'il a été pivoté.

+0

Ma méthode onDraw contient: \t \t Peindre myPaint = new Paint(); \t \t myPaint.setStrokeWidth (1); \t \t myPaint.setColor (0xFF097286); \t \t canvas.drawText ("test", 20, 20, myPaint); \t \t canvas.drawCircle (10, 10, 10, myPaint); \t \t invalider(); Je peux peindre le cercle, mais je ne peux pas peindre le texte. Qu'est-ce qui ne va pas? Et comment puis-je faire pivoter le test de dessin? – Martin

+0

Jetez un oeil à: http://www.helloandroid.com/tutorials/how-use-canvas-your-android-apps-part-2. Consultez également la documentation Canvas.rotate(). –

0

Vous pouvez également utiliser cet exemple. Il vaut mieux parce que vous ne, pas besoin de déplacer vos articles par Y.

canvas.save(); 

canvas.scale(1f, -1f, super.getWidth() * 0.5f, 
    super.getHeight() * 0.5f); 

canvas.drawBitmap(arrow, 
    rect.centerX() - (arrow.getWidth() * 0.5F), rect.bottom, 
    null); 

canvas.restore(); 
Questions connexes