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?
Réponses
Trop de publicités?L'API 11 a ajouté une méthode setRotation () à toutes les vues.
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);
É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();
}
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);