Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android animator versus anim resource directories

I'm doing some research in utilizing Android's resource directories appropriately and the following isn't clear to me:

What is the difference between the android animator resource directory and the android anim resource directory?

http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

Moreover I guess the question I'm asking is what is the difference between property animations and tween animations?

like image 840
chocospaz Avatar asked Jul 09 '14 18:07

chocospaz


People also ask

In which directory animation files can be stored in Android?

You can find the anim folder by navigating to the app > res > anim. Then go to the anim > right-click > New > Animation Resource File as shown in the below image.

Which directory do we store animation files?

In Android Studio, right click on res folder. New > Android Resource Directory. Select anim for Resource Type.

What is anim in Android?

Animation is the process of adding a motion effect to any view, image, or text. With the help of an animation, you can add motion or can change the shape of a specific view. Animation in Android is generally used to give your UI a rich look and feel.


1 Answers

I honestly think Google have done a very good job explaining the differences in their Property Animations API guide (see below).

TL;DR the main differences are:

  1. Tween animations are succinct and allow for the manipulation of no more than the location (translation), size (scale), angle (rotation) and translucency (alpha) of views. The property animations framework is more generic and flexible: It generalizes the former case by allowing for real-time updating of any property (e.g. "foobar") of animations' target-object -- provided it has a setFoobar() method. setScaleX(), setAlpha(), etc. are just a specific case when it comes to views.

  2. Accordingly, implementing tween animations is often easier and the code is more lightweight.

  3. Property animations can be used over target objects of any type, not just views: the only thing that matters is the definition of setFoobar() methods as explained earlier (reflection based method look-up).

  4. Tween animations merely perform adjustments over views' configurations, while property animations effectively modify the object. A common flaw of the former approach is that when using animations for moving views around, the associated clickable area doesn't get updated throughout the animation and gets out-of-sync with the view's effective location on the screen.

To quote from the guide:

How Property Animation Differs from View Animation

The view animation system provides the capability to only animate View objects, so if you wanted to animate non-View objects, you have to implement your own code to do so. The view animation system is also constrained in the fact that it only exposes a few aspects of a View object to animate, such as the scaling and rotation of a View but not the background color, for instance.

Another disadvantage of the view animation system is that it only modified where the View was drawn, and not the actual View itself. For instance, if you animated a button to move across the screen, the button draws correctly, but the actual location where you can click the button does not change, so you have to implement your own logic to handle this.

With the property animation system, these constraints are completely removed, and you can animate any property of any object (Views and non-Views) and the object itself is actually modified. The property animation system is also more robust in the way it carries out animation. At a high level, you assign animators to the properties that you want to animate, such as color, position, or size and can define aspects of the animation such as interpolation and synchronization of multiple animators.

The view animation system, however, takes less time to setup and requires less code to write. If view animation accomplishes everything that you need to do, or if your existing code already works the way you want, there is no need to use the property animation system. It also might make sense to use both animation systems for different situations if the use case arises.

like image 155
d4vidi Avatar answered Sep 21 '22 17:09

d4vidi