I want to use ScaleAnimation (programmatically not in xml) to change height to view from 0 to 60% of parent height. Width of view is constant and is 50px. View is empty only background color is set.
Can someone give me code for scaleAnim
using ScaleAnimation from code.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/layContainer
>
<View
android:layout_width="50px"
android:layout_height="fill_parent"
android:id="@+id/viewContainer"
android:background:"#00f00"
/>
</LinearLayout>
ScaleAnimation scaleAnim = new ScaleAnimation(...);
view before and after animation .Thanks
try this code to create Scale animation without using xml
Use this method (No need to xml file)
If you want scale to quarter(half x,half y)
If you want scale and move to bottom right
If you want move to top use
(-view.height/4)
and for left (-view.width/4)If you want do something after animation ends use
withEndAction(Runnable runnable)
function.You can use some other property like alpha and rotation
Full code
Here is a code snip to do exactly that.
The ScaleAnimation constructor used here takes 8 args, 4 related to handling the X-scale which we don't care about
(1f, 1f, ... Animation.RELATIVE_TO_SELF, 0f, ...)
.The other 4 args are for the Y-scaling we do care about.
startScale, endScale
- In your case, you'd use0f, 0.6f
.Animation.RELATIVE_TO_SELF, 1f
- This specifies where the shrinking of the view collapses to (referred to as the pivot in the documentation). Here, we set the float value to1f
because we want the animation to start growing the bar from the bottom. If we wanted it to grow downward from the top, we'd use0f
.Finally, and equally important, is the call to
anim.setFillAfter(true)
. If you want the result of the animation to stick around after the animation completes, you must run this on the animator before executing the animation.So in your case, you can do something like this:
Resize using helper methods and start-repeat-end handlers like this:
Helper methods:
In XML, this what I use for achieving the same result. May be this is more intuitive.
scale_up.xml
scale_down.xml
See the animation on the X axis is from
1.0 -> 1.0
which means you don't have any scaling up in that direction and stays at the full width while, on the Y axis you get0.0 -> 1.0
scaling, as shown in the graphic in the question. Hope this helps someone.Some might want to know the java code as we see one requested.
Place the animation files in
anim
folder and then load and set animation files something like.