Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to scale View / ViewGroup - animate layout in a proper way?

In a few words, I want to scale view - in the same way that Android Market does it, when you click the "More" button, on the for examplae 'Description'.
I figure it out, that the Android Market has the layout of following structure :

    <FrameLayout
    android:id="@+id/artists_frame"
    android:layout_width="fill_parent"
    android:layout_height="64dip"
    android:layout_below="@id/something1"
    android:layout_above="@id/something2"

    >

<!-- Some view there, which height >> 64dip -->

    </FrameLayout>

So, I've tried various Animations / LayoutAnimations on the FrameLayout (via view.setAnimation(), view.setLayoutAnimation() and ScaleAnimation), but the effect is always the same : the view animates, but it's real layout_height after scaling is still the same (so the position of the other views, that depend on the given FrameLayout, remain the same).

After that, I've thought - I change in the loop the layout_height of the given FrameLayout:

layoutParams = view.getLayoutParams()
layoutParams.height = scaleTo;
layout.setLayoutParams(layoutParams);

I've it got animating, market-like view, but the cost (performance!!!) is way to high...

So, the question is : Is there any other, proper way to scale (change e.g. height from 50dip to 200dip) the given View / ViewGroup so that the position of the views below the animating view also changes?

like image 561
Kocus Avatar asked Apr 19 '11 14:04

Kocus


People also ask

How to animate layout in Android?

All you need to do is set an attribute in the layout to tell the Android system to animate these layout changes, and system-default animations are carried out for you. Tip: If you want to supply custom layout animations, create a LayoutTransition object and supply it to the layout with the setLayoutTransition() method.

How to do animation in Android studio?

Navigate to the app > res > Right-Click on res >> New >> Directory >> Name your directory as “anim”. Inside this directory, we will create our animations. For creating a new anim right click on the anim directory >> Animation Resource file and give the name to your file.


1 Answers

As Chet Haase says in this blog post: http://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html

"...Finally, the previous animations changed the visual appearance of the target objects... but they didn't actually change the objects themselves..."

Since what your need is only visual, instead of changing the view's LayoutParameters I would animate the view in the bottom as well with a translate using android:fillAfter for both.

like image 161
Macarse Avatar answered Oct 08 '22 00:10

Macarse