Android ObjectAnimator animer translationY même proportion sur toutes les tailles d'écran
Je suis en utilisant ObjectAnimator
à glisser une image de fond pour révéler un listView
ci-dessous. Le listView
a un weight
de 0.7f
de sorte que ce sera les mêmes proportions sur toutes les tailles d'écran.
À l'aide de ObjectAnimator
est-il possible pour ensuite glisser vers le haut de mon image de fond avec la même 0.7
proportion, soit la même sur tous les écrans?
Image d'arrière-plan et listView
:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.3" >
</LinearLayout>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.7"
android:background="#303030"
android:divider="#555555"
android:dividerHeight="1dp" >
</ListView>
</LinearLayout>
Code d'Animation:
FrameLayout mainView = (FrameLayout)findViewById(R.id.mainView);
ObjectAnimator mover = ObjectAnimator.ofFloat(mainView, "translationY", !historyShown ? -500 : 0);
mover.setDuration(300);
mover.start();
Vous pouvez éventuellement utiliser
L'Animation, tout se produit lorsque l'utilisateur appuie sur un bouton. Donnera à votre idée de l'essayer et d'en rendre compte.
View.getLocationInWindow()
ou View.getLocationOnScreen()
pour déterminer le décalage vertical de la ListView
en termes de nombre de pixels. Cela devrait vous donner toutes les informations dont vous avez besoin de savoir jusqu'à quelle hauteur vous devez traduire l'image d'arrière-plan. Vous ne savez pas quand votre animation s'exécute, mais si vous le déclencher avant le point de vue de la hiérarchie a été entièrement aménagé, vous pouvez encapsuler la logique à l'intérieur d'un Runnable
et l'afficher à la vue de la racine.L'Animation, tout se produit lorsque l'utilisateur appuie sur un bouton. Donnera à votre idée de l'essayer et d'en rendre compte.
OriginalL'auteur Nic Hubbard | 2013-09-23
Vous devez vous connecter pour publier un commentaire.
Effectivement trouvé plus facile et plus rapide façon de le faire. Depuis mon
listView
est à l'aide d'unweight
réglage de0.7f
il sera toujours proportionnelle pour toutes les tailles d'écran. Donc, j'ai juste besoin pour obtenir la hauteur de lalistView
et l'utiliser dans monObjectAnimator
:A parfaitement fonctionné!
OriginalL'auteur Nic Hubbard