Android ObjectAnimator animate translationY same proportion on all screen sizes
16,969
Actually figured out a quicker and easier way of doing that. Since my listView
is using a weight
setting of 0.7f
it will always be proportional for all screen sizes. So, I just needed to get the height of the listView
and use that in my ObjectAnimator
:
// Figure out where listView is
int listViewHeight = list.getHeight();
FrameLayout mainView = (FrameLayout)findViewById(R.id.mainView);
ObjectAnimator mover = ObjectAnimator.ofFloat(mainView, "translationY", !historyShown ? -listViewHeight : 0);
mover.setDuration(300);
mover.start();
Worked perfectly!
Related videos on Youtube
Author by
Nic Hubbard
Updated on July 04, 2022Comments
-
Nic Hubbard almost 2 years
I am using
ObjectAnimator
to slide up a background image to reveal alistView
below. ThelistView
has aweight
of0.7f
so that it will be the same proportions on all screen sizes.Using
ObjectAnimator
is it possible to then slide up my background image with that same0.7
proportion, being the same on all screens?Background image and
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>
Animation code:
FrameLayout mainView = (FrameLayout)findViewById(R.id.mainView); ObjectAnimator mover = ObjectAnimator.ofFloat(mainView, "translationY", !historyShown ? -500 : 0); mover.setDuration(300); mover.start();