2010-07-26 7 views
1

Je travaille sur un jeu qui, à certains égards est similaire à Tetris (imaginez un tableau 2D de carrés de couleur qui se déplacent parfois autour)Comment animer des vues?

Je suis en train d'animer les carrés individuels afin qu'ils facilement glisser vers le bas de coordonner au suivant. Puisque je voulais utiliser la fonction d'interpolation intégrée d'Android, l'animation doit s'appliquer à l'ensemble de la vue (plutôt qu'à certaines de ses parties). Cela ne fonctionne pas bien pour moi parce que je veux seulement que certains des carrés de couleur glissent vers le bas, et le reste d'entre eux pour rester immobile.

La solution (théorique) que j'ai trouvée pour résoudre ce problème est de créer 2 vues, superposées les unes sur les autres. La vue de dessus est pour animer les carrés quand ils ont besoin de se déplacer, et la couche inférieure est pour les carrés statiques. La couche d'animation est transparente jusqu'à ce que je sois prêt à animer quelque chose. Il suffit ensuite d'allumer le carré coloré dans le calque d'animation, de l'interpoler au nouvel emplacement et de le désactiver lorsque vous avez terminé. Dans le même laps de temps, la couche statique active et désactive les carrés au bon moment pour que l'ensemble soit parfaitement transparent pour l'utilisateur final.

La solution proposée est juste une théorie, puisque je n'ai pas encore réussi à la faire fonctionner correctement. Depuis que j'ai eu des problèmes, je me demandais si c'est même la meilleure façon de résoudre le problème? Peut-être y a-t-il une solution plus élégante que je cherche? Quelqu'un sait-il d'une meilleure façon?

Répondre

0

Si vous souhaitez simplement animer un seul élément, consultez l'espace de noms android.view.animation.Animation. Vous pouvez également utiliser des formes Drawable et les dessiner directement. Enfin, si vous voulez une simulation, vous devrez regarder dans le filetage. Fondamentalement, vous allez créer une minuterie pour mettre à jour la toile pour vous en fonction d'un intervalle. Il existe d'autres toiles de vue que vous pouvez utiliser comme la toile GLView.