Il est difficile de faire défiler et de suivi swipe travaillant sur Android, tout en utilisant ViewAnimator
ou ses sous-classes.
Ils vous permettent de définir des animations d'entrée et de sortie et de les démarrer à un moment donné, mais elles fonctionnent avec des animations discrètes, que ce soit-ci ou les autres. Ils utilisent en fait FrameLayout
et, après l'exécution de l'animation in ou out, la visibilité des autres vues est définie sur View.GONE
pour les empêcher de s'afficher sous/sur votre View
actuel.
L'application Launcher et l'application Galerie effectuent réellement les fonctionnalités que vous souhaitez, en utilisant une approche différente. Ils suivent la saisie tactile de l'utilisateur (onTouchEvent()
), sur MotionEvent.ACTION_MOVE
ils effectuent des animations manuellement et sur le MotionEvent.ACTION_UP
sur la vue appropriée, comme dans l'iPhone. Malheureusement, cette approche est en réalité plus compliquée qu'elle n'en a l'air. Avec la manipulation manuelle, vous devez vous assurer que vous prenez soin de tout ce qui touche à l'entrée tactile. Ceci inclut beaucoup de flag-raise, de vérification de valeur, de délégation d'événement, etc. Si vous voulez mieux vous familiariser avec cela, jetez un oeil à ces classes du code source Gallery3D ou Launcher.
Une autre façon d'obtenir un bon défilement horizontal est d'utiliser HorizontalScrollView
. Vous devez trouver un moyen de recycler vos vues, comme vous le feriez avec un ListView
et vous devez ajouter la logique snap-to-view, mais si vous devez prendre soin d'un petit nombre de vues, cela pourrait être le plus simple approche.
Espérons que ça aide.