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 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