74 votes

Faire pivoter une vue dans Android

Bonjour, j'ai un bouton que je veux mettre sur un angle de 45 degrés. Pour une raison quelconque, je ne peux pas obtenir que cela fonctionne. Quelqu'un peut-il s'il vous plaît fournir le code pour accomplir cela?

73voto

anakin78z Points 1184

L'API 11 a ajouté une méthode setRotation () à toutes les vues.

60voto

Pete Points 496

Vous pouvez créer une animation et l'appliquer à votre vue de bouton. Par exemple:

     // Locate view
    ImageView diskView = (ImageView) findViewById(R.id.imageView3);

    // Create an animation instance
    Animation an = new RotateAnimation(0.0f, 360.0f, pivotX, pivotY);

    // Set the animation's parameters
    an.setDuration(10000);               // duration in ms
    an.setRepeatCount(0);                // -1 = infinite repeated
    an.setRepeatMode(Animation.REVERSE); // reverses each repeat
    an.setFillAfter(true);               // keep rotation after animation

    // Aply animation to image view
    diskView.setAnimation(an);
 

47voto

Ichorus Points 2497

Étendez la classe TextView et remplacez la méthode onDraw() . Assurez-vous que la vue parent est suffisamment grande pour gérer le bouton pivoté sans le découper.

 @Override
protected void onDraw(Canvas canvas) {
     canvas.save();
     canvas.rotate(45,<appropriate x pivot value>,<appropriate y pivot value>);
     super.onDraw(canvas);
     canvas.restore();

} 
 

30voto

Rudi Points 1095

Je viens d'utiliser la simple ligne dans mon code et cela fonctionne:

 myCusstomView.setRotation(45);
 

J'espère que ça marche pour toi.

23voto

Danny Suen Points 86

L'application d'une animation de rotation (sans durée, donc sans effet d'animation) est une solution plus simple que d'appeler View # setRotation (degrés) sur l'objet View ou de remplacer la méthode onDraw () de View.

 RotateAnimation rotate = new RotateAnimation(0f, deltaDegrees, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);  // substitude deltaDegrees for whatever you want
rotate.setFillAfter(true); // prevents View from restoring to original direction. 

someButton.startAnimation(rotate);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X