Animer une rotation d'une image dans Android
-
J'ai un engrenage de l'image que je veux constamment tourner autour d'un point fixe.
-
Plus tôt, j'ai été à l'accomplissement de cette en incluant l'image dans mon Android classe comme une ImageView et l'application d'un RotateAnimation à elle.
@InjectView(R.id.gear00) ImageView gear00; RotateAnimation ra07 = new RotateAnimation(0, 359, 129, 186); ra07.setDuration(10000); ra07.setRepeatCount(RotateAnimation.INFINITE); ra07.setInterpolator(new LinearInterpolator()); gear00.setAnimation(ra07);
Essentiellement, j'ai été d'injecter de l'ImageView dans la classe et en appliquant une rotation de l'animation.
Cependant, je n'ai pas le luxe de l'utilisation d'un ImageView plus. Je dois utiliser un Bitmap et le faire tourner sur la toile.
Comment puis-je aller sur la réalisation de ce que je faisais plus tôt dans la onDraw() méthode avec une image bitmap en rotation autour d'un point fixe continiously sur la toile?
Edit1:
J'ai essayé l'une des suggestions mentionnées ci-dessous mon code ressemble un peu à la suite de
dans onCreate():
Matrix matrix = new Matrix();
matrix.setRotate(10, 100, 200);
Puis dans onDraw() (où gear00Scaled est une image bitmap d'être tourné sur la toile):
toile.drawBitmap(gear00Scaled, la matrice, la nouvelle Peinture());
Une autre méthode, j'ai essayé impliqués enregistrement de la toile, en le tournant, puis de le restaurer:
toile.save();
toile.rotation(10);
toile.drawBitmap(gear00Scaled, 100, 200, null);
toile.restore();
Ne semblent être de travail, même si!
- Si cette image montre dans un
View
puis la Vue doit être redessiné à plusieurs reprises.
Vous devez vous connecter pour publier un commentaire.
Dans votre onCreate() ne
Et dans onDraw
ROTATE_TIME_MILLIS est le cercle entier de temps, par exemple 2000 est de 2 secondes.
Faire une classe XML (supposons que: rotate.xml) et le placer dans res/anim dossier, puis écrire le code suivant dedans:
Puis dans votre classe java, procédez de la manière suivante dans
OnCreate
:OU
Faire à l'aide de bitmap, j'espère que la suite de la séquence de code vous permet de:
Si vous cochez la méthode suivante à partir de:
ce serait d'expliquer ce qu'il fait avec la rotation et la translation.
canvas.concat(matrix);
avantcanvas.drawBitmap(gear00Scaled, 100, 200, null);
Que je veux faire tourner une image personnalisée en tant que boîte de dialogue de progression dans mon application. Vous pouvez utiliser le code ci-dessous pour faire pivoter une image:
Deux choses avant le code:
Il y a donc deux approches:
Le 1er est avec l'imageview, personnellement, je pense que c'est plus facile et plus agréable. Ci-dessous est une méthode dans ma classe d'activité et mLittleChef est une ImageView.
L'autre façon de le faire est avec une toile sur mesure de classe. Au lieu d'une ImageView, je crée ma propre classe de vue personnalisée pour ExampleDrawView mLittleChefDraw; dans ma mise en page. Vous aurez probablement à singe avec celle-ci un peu pour obtenir exactement ce que vous cherchez en termes de rotation, je l'ai fait faire un virage à 360 degrés à l'aide du milieu de la toile comme le point de pivot.
}
Puis de nouveau dans l'activité appeler cette fonction pour démarrer: