[] Android library for using the Honeycomb animation API on all versions of the platform back to 1.0!

Last update: Aug 13, 2022

DEPRECATED

NineOldAndroids is deprecated. No new development will be taking place. Existing versions will (of course) continue to function. New applications should use minSdkVersion="14" or higher which has access to the platform animation APIs.

Thanks for all your support!

Nine Old Androids

Android library for using the Honeycomb (Android 3.0) animation API on all versions of the platform back to 1.0!

Note: LayoutTransition is present and it is not be possible to implement prior to Android 3.0.

Usage

The API is exactly the same as the Honeycomb API, just change your imports to use com.nineoldandroids.XXX.

Take a look at a few demos taken from the platform ApiDemos in the sample/ folder. You can also try it out on the Play Store.

More information is available on nineoldandroids.com.

Including In Your Project

This library is presented as a .jar file which you can include in the libs/ folder of your application. You can download the latest version from the GitHub downloads page.

If you are a Maven user you can easily include the library by specifying it as a dependency:

<dependency>
  <groupId>com.nineoldandroids</groupId>
  <artifactId>library</artifactId>
  <version>2.4.0</version>
</dependency>

Developed By

License

Copyright 2012 Jake Wharton

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

GitHub

https://github.com/JakeWharton/NineOldAndroids
Comments
  • 1. AndroidSlidingUpPanel Not work in target10

    04-11 10:55:20.910: E/AndroidRuntime(3225): FATAL EXCEPTION: main 04-11 10:55:20.910: E/AndroidRuntime(3225): java.lang.NoClassDefFoundError: com.nineoldandroids.view.animation.AnimatorProxy 04-11 10:55:20.910: E/AndroidRuntime(3225): at com.sothree.slidinguppanel.SlidingUpPanelLayout.onPanelDragged(SlidingUpPanelLayout.java:974) 04-11 10:55:20.910: E/AndroidRuntime(3225): at com.sothree.slidinguppanel.SlidingUpPanelLayout.access$8(SlidingUpPanelLayout.java:964) 04-11 10:55:20.910: E/AndroidRuntime(3225): at com.sothree.slidinguppanel.SlidingUpPanelLayout$DragHelperCallback.onViewPositionChanged(SlidingUpPanelLayout.java:1204) 04-11 10:55:20.910: E/AndroidRuntime(3225): at com.sothree.slidinguppanel.ViewDragHelper.dragTo(ViewDragHelper.java:1393) 04-11 10:55:20.910: E/AndroidRuntime(3225): at com.sothree.slidinguppanel.ViewDragHelper.processTouchEvent(ViewDragHelper.java:1127) 04-11 10:55:20.910: E/AndroidRuntime(3225): at com.sothree.slidinguppanel.SlidingUpPanelLayout.onTouchEvent(SlidingUpPanelLayout.java:875) 04-11 10:55:20.910: E/AndroidRuntime(3225): at android.view.View.dispatchTouchEvent(View.java:3938) 04-11 10:55:20.910: E/AndroidRuntime(3225): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:903) 04-11 10:55:20.910: E/AndroidRuntime(3225): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 04-11 10:55:20.910: E/AndroidRuntime(3225): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 04-11 10:55:20.910: E/AndroidRuntime(3225): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 04-11 10:55:20.910: E/AndroidRuntime(3225): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1733) 04-11 10:55:20.910: E/AndroidRuntime(3225): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1151) 04-11 10:55:20.910: E/AndroidRuntime(3225): at android.app.Activity.dispatchTouchEvent(Activity.java:2096) 04-11 10:55:20.910: E/AndroidRuntime(3225): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1717) 04-11 10:55:20.910: E/AndroidRuntime(3225): at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2215) 04-11 10:55:20.910: E/AndroidRuntime(3225): at android.view.ViewRoot.handleMessage(ViewRoot.java:1886) 04-11 10:55:20.910: E/AndroidRuntime(3225): at android.os.Handler.dispatchMessage(Handler.java:99) 04-11 10:55:20.910: E/AndroidRuntime(3225): at android.os.Looper.loop(Looper.java:123) 04-11 10:55:20.910: E/AndroidRuntime(3225): at android.app.ActivityThread.main(ActivityThread.java:3687) 04-11 10:55:20.910: E/AndroidRuntime(3225): at java.lang.reflect.Method.invokeNative(Native Method) 04-11 10:55:20.910: E/AndroidRuntime(3225): at java.lang.reflect.Method.invoke(Method.java:507) 04-11 10:55:20.910: E/AndroidRuntime(3225): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 04-11 10:55:20.910: E/AndroidRuntime(3225): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 04-11 10:55:20.910: E/AndroidRuntime(3225): at dalvik.system.NativeStart.main(Native Method) 04-11 10:56:35.778: E/AndroidRuntime(3393): FATAL EXCEPTION: main 04-11 10:56:35.778: E/AndroidRuntime(3393): java.lang.NoClassDefFoundError: com.nineoldandroids.view.animation.AnimatorProxy 04-11 10:56:35.778: E/AndroidRuntime(3393): at com.sothree.slidinguppanel.SlidingUpPanelLayout.onPanelDragged(SlidingUpPanelLayout.java:974) 04-11 10:56:35.778: E/AndroidRuntime(3393): at com.sothree.slidinguppanel.SlidingUpPanelLayout.access$8(SlidingUpPanelLayout.java:964) 04-11 10:56:35.778: E/AndroidRuntime(3393): at com.sothree.slidinguppanel.SlidingUpPanelLayout$DragHelperCallback.onViewPositionChanged(SlidingUpPanelLayout.java:1204) 04-11 10:56:35.778: E/AndroidRuntime(3393): at com.sothree.slidinguppanel.ViewDragHelper.dragTo(ViewDragHelper.java:1393) 04-11 10:56:35.778: E/AndroidRuntime(3393): at com.sothree.slidinguppanel.ViewDragHelper.processTouchEvent(ViewDragHelper.java:1127) 04-11 10:56:35.778: E/AndroidRuntime(3393): at com.sothree.slidinguppanel.SlidingUpPanelLayout.onTouchEvent(SlidingUpPanelLayout.java:875) 04-11 10:56:35.778: E/AndroidRuntime(3393): at android.view.View.dispatchTouchEvent(View.java:3938) 04-11 10:56:35.778: E/AndroidRuntime(3393): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:903) 04-11 10:56:35.778: E/AndroidRuntime(3393): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 04-11 10:56:35.778: E/AndroidRuntime(3393): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 04-11 10:56:35.778: E/AndroidRuntime(3393): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 04-11 10:56:35.778: E/AndroidRuntime(3393): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1733) 04-11 10:56:35.778: E/AndroidRuntime(3393): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1151) 04-11 10:56:35.778: E/AndroidRuntime(3393): at android.app.Activity.dispatchTouchEvent(Activity.java:2096) 04-11 10:56:35.778: E/AndroidRuntime(3393): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1717) 04-11 10:56:35.778: E/AndroidRuntime(3393): at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2215) 04-11 10:56:35.778: E/AndroidRuntime(3393): at android.view.ViewRoot.handleMessage(ViewRoot.java:1886) 04-11 10:56:35.778: E/AndroidRuntime(3393): at android.os.Handler.dispatchMessage(Handler.java:99) 04-11 10:56:35.778: E/AndroidRuntime(3393): at android.os.Looper.loop(Looper.java:123) 04-11 10:56:35.778: E/AndroidRuntime(3393): at android.app.ActivityThread.main(ActivityThread.java:3687) 04-11 10:56:35.778: E/AndroidRuntime(3393): at java.lang.reflect.Method.invokeNative(Native Method) 04-11 10:56:35.778: E/AndroidRuntime(3393): at java.lang.reflect.Method.invoke(Method.java:507) 04-11 10:56:35.778: E/AndroidRuntime(3393): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 04-11 10:56:35.778: E/AndroidRuntime(3393): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 04-11 10:56:35.778: E/AndroidRuntime(3393): at dalvik.system.NativeStart.main(Native Method) 04-11 10:57:17.100: E/AndroidRuntime(3443): FATAL EXCEPTION: main 04-11 10:57:17.100: E/AndroidRuntime(3443): java.lang.NoClassDefFoundError: com.nineoldandroids.view.animation.AnimatorProxy 04-11 10:57:17.100: E/AndroidRuntime(3443): at com.sothree.slidinguppanel.SlidingUpPanelLayout.onPanelDragged(SlidingUpPanelLayout.java:974) 04-11 10:57:17.100: E/AndroidRuntime(3443): at com.sothree.slidinguppanel.SlidingUpPanelLayout.access$8(SlidingUpPanelLayout.java:964) 04-11 10:57:17.100: E/AndroidRuntime(3443): at com.sothree.slidinguppanel.SlidingUpPanelLayout$DragHelperCallback.onViewPositionChanged(SlidingUpPanelLayout.java:1204) 04-11 10:57:17.100: E/AndroidRuntime(3443): at com.sothree.slidinguppanel.ViewDragHelper.dragTo(ViewDragHelper.java:1393) 04-11 10:57:17.100: E/AndroidRuntime(3443): at com.sothree.slidinguppanel.ViewDragHelper.processTouchEvent(ViewDragHelper.java:1127) 04-11 10:57:17.100: E/AndroidRuntime(3443): at com.sothree.slidinguppanel.SlidingUpPanelLayout.onTouchEvent(SlidingUpPanelLayout.java:875) 04-11 10:57:17.100: E/AndroidRuntime(3443): at android.view.View.dispatchTouchEvent(View.java:3938) 04-11 10:57:17.100: E/AndroidRuntime(3443): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:903) 04-11 10:57:17.100: E/AndroidRuntime(3443): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 04-11 10:57:17.100: E/AndroidRuntime(3443): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 04-11 10:57:17.100: E/AndroidRuntime(3443): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 04-11 10:57:17.100: E/AndroidRuntime(3443): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1733) 04-11 10:57:17.100: E/AndroidRuntime(3443): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1151) 04-11 10:57:17.100: E/AndroidRuntime(3443): at android.app.Activity.dispatchTouchEvent(Activity.java:2096) 04-11 10:57:17.100: E/AndroidRuntime(3443): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1717) 04-11 10:57:17.100: E/AndroidRuntime(3443): at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2215) 04-11 10:57:17.100: E/AndroidRuntime(3443): at android.view.ViewRoot.handleMessage(ViewRoot.java:1886) 04-11 10:57:17.100: E/AndroidRuntime(3443): at android.os.Handler.dispatchMessage(Handler.java:99) 04-11 10:57:17.100: E/AndroidRuntime(3443): at android.os.Looper.loop(Looper.java:123) 04-11 10:57:17.100: E/AndroidRuntime(3443): at android.app.ActivityThread.main(ActivityThread.java:3687) 04-11 10:57:17.100: E/AndroidRuntime(3443): at java.lang.reflect.Method.invokeNative(Native Method) 04-11 10:57:17.100: E/AndroidRuntime(3443): at java.lang.reflect.Method.invoke(Method.java:507) 04-11 10:57:17.100: E/AndroidRuntime(3443): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 04-11 10:57:17.100: E/AndroidRuntime(3443): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 04-11 10:57:17.100: E/AndroidRuntime(3443): at dalvik.system.NativeStart.main(Native Method)

    Reviewed by rahulwadhai at 2015-04-13 06:39
  • 2. inconsistent animation behavior

    I am using this library to implement side navigation like facebook app.

    It's really easy to setup. I have a framelayout with content view and menu view. The content view sits on top of the menu view.

    on version 4.0:

    I call following method to slide the contentview to the right. I can click on the menu item which is way I want it to behave. ObjectAnimator.ofFloat(contentView, "translationX", theSlideX).start();

    the same code on version 2.3.3, it's behaving differently. When content view slides out. I can see the menu view but when I click on the menu view, the content view is the one which receives the click event. how do i fix this?

    Reviewed by shredmaster at 2012-10-25 20:24
  • 3. onclick event on animated imageview

    The onclick event on animated view is not working. i followed following way

    animate(tv).setDuration(2000).rotationYBy(720).x(100).y(100);

        tv.setOnClickListener(this);
    
    Reviewed by manjunathab at 2012-09-12 08:53
  • 4. ViewHelper.setScaleX/Y breaks touch and redraw on android 2.3

    I'd like to use NineOldAndroid to scale complex views on android 2.3

    Example I have a view with one button. I scale down the view to to 0.5 both X/Y. On older devices (2.3 or lower) the button cannot be clicked anymore (the hit area doesn't seem to follow the transformation), and layout falls into pieces.

    Is there anything we can do?

    Thank you, Akos

    Reviewed by kapuia at 2013-09-09 16:09
  • 5. Visibility setting ignored on an animated View

    On PreHoneycomb devices, setting the visibility of an animated view to View.GONE or View.INVISIBLE doesn't have the desired effect. (i.e., the view is still visibile on the screen.)

    Steps to reproduce:

    1. Start an infinite animation on a view.
    2. Stop the animation after some time and immediately set the visibility of the view to GONE/Invisible
    3. The view is still visibile on the screen.

    Sample code follows:

    package com.hrushikesh.uiprototypes;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.ImageView;
    
    import com.nineoldandroids.animation.ObjectAnimator;
    import com.nineoldandroids.animation.ValueAnimator;
    
    public class AnimationTest extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_animation_test);
    
            final ImageView view = (ImageView) findViewById(R.id.imageView1);
    
            final ObjectAnimator animator = ObjectAnimator.ofFloat(view, "alpha",
                    0.5f);
            animator.setRepeatCount(ValueAnimator.INFINITE);
            animator.setRepeatMode(ValueAnimator.REVERSE);
            animator.start();
    
            view.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    if (animator.isRunning()) {
                        animator.end();
                        view.setVisibility(View.INVISIBLE);
                    } else {
                        view.setVisibility(View.VISIBLE);
                        animator.start();
                    }
                }
            });
        }
    }
    
    
    Reviewed by hrushikesh at 2012-09-18 21:36
  • 6. Different behaviors between pre 3.0 and 3.0+ versions

    Hi,

    First of all thanks for sharing this compatibility library with the community. I am using NineOldAndroids, basically to solve this particular problem.

    Before using NineOldAndroids, my application would crash on pre-honeycomb devices with a ClassNotFoundException (for ObjectAnimator) and after using it, it runs fine but... I still get the same problem that I had with the animation API (the position of the animated view is still bound to its previous location). I should mention, that I don't have this problem on post-honeycomb devices.

    I don't really understand why, given that your compatibility library is an extraction of the entire new API as I understand.

    What do you think?

    Thanks!

    Reviewed by Amokrane at 2012-05-09 16:08
  • 7. ViewPropertyAnimator.start() (and some other methods) fails on Honeycomb

    The cause is that such methods were added on API level 14 (4.0) so they don't exist on the original implementation in 3.1 and 3.2, hence causing the proxy to fail when such methods are called. I could try fixing it but preffered to open a bug report in order to get your opinion on the subject and what would your preffered solution be.

    These methods are: cancel() getDuration() getStartDelay() setStartDelay() start()

    Looking at the code, I also noticed that a proxy for the native implementation of ViewPropertyAnimator is used for all API levels 11 and greater when said class was only added on API level 12. As I said, I can fix it and submit a pull request (and hopefully do it right, haven't worked with git before) but would like to hear your opinion on what the ideal solution would be. I didn't dig deep into the code yet but it doesn't seem possible to only proxy some methods and not others, so my suggestion would be to only use the native implementation on API level 14 and onwards.

    Reviewed by BeowulfBjornson at 2012-01-29 16:02
  • 8. StackOverflowError on devices < 3.0

    I get the same exception when running Path Animation, Toggles or ViewPropertyAnimator Demo on an Xperia Play (2.3) and Galaxy S (2.1) here.

    E/AndroidRuntime( 4016): java.lang.StackOverflowError E/AndroidRuntime( 4016): at java.util.WeakHashMap.poll(WeakHashMap.java:569) E/AndroidRuntime( 4016): at java.util.WeakHashMap.get(WeakHashMap.java:473) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:33) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) E/AndroidRuntime( 4016): at com.nineoldandroids.view.animation.AnimatorProxy.wrap(AnimatorProxy.java:35) < and so on>

    Reviewed by dcaunt at 2012-01-27 13:14
  • 9. Support for pause mecanism introduce in 4.4 ?

    Hey, At Android team they introduce many new functionality with 4.4 (and more with 5.0) for Animations, like the Pause/Resume mechanism for example, which is very useful when running long animations (and your app is paused..)

    Do you plan to add more 4.x & 5.0 functions to your library ? and particularly the pause/resume mechanism, that I need for my personal case ? (you can tell me to add it myself, but not sure not forget something in copying it from source; you know far better your library)

    Reviewed by benjaminVadon at 2014-10-27 09:34
  • 10. Animate() is not applicable[...]

    Hello,

    I'm trying to use NineOldAndroids library to rewrite my animations but I can't animate my RelativeLayouts.

    Code : animate(otherContainer).setAlpha(Math.max(0f, Math.min(2f, 1f - 9f * Math.abs(diffX2) / v.getWidth()/2)));

    And I got the error : "The method animate() in the type View is not applicable for the arguments (RelativeLayout)"

    Any idea ?

    Reviewed by marshallino16 at 2013-07-03 12:18
  • 11. possible to 'unstick' animation?

    I'm not entirely sure if this is a bug, a limitation, or user-error, so I'm posting here and hoping for some advice.

    I'm attempting to set the layoutparams of an already-animated view in the onAnimationEnd method as suggested in many of the closed issues, but it seems that when I do this, the view itself (where its clickable) moves correctly but the animated version (where it shows up) is then offset by the same number of pixels. This is my first dive into legitimate animation, but it appears that the animated translation (x + 150) is kind of 'sticking' even after I update the layoutparams, rather than clearing itself as I was hoping. I dont see any methods or documentation for clearing it manually via code - is there a way to do that?

    Also, if i take the opposite approach, and update the layout params first and then animate from -x to 0, it works correctly with the exception of a momentary blip between the layout applying and the animation starting (I'm assuming that the animator calls invalidate() on the first frame before applying transitions?). if there is a way to skip the 'fill before'-esque initial draw, that would work fine for me too.

    I'm using nineoldandroids-2.4.0.jar and API 10. Any help would be appreciated.

    Reviewed by Drenet at 2012-11-21 19:28
  • 12. when generate signed apk

    Error:Execution failed for task ':app:transformClassesWithJarMergingForRelease'.

    com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/nineoldandroids/animation/Animator$AnimatorListener.class

    Reviewed by eslamwael74 at 2017-10-20 15:58
  • 13. Can the nineoldandroids exist side by side with windowSoftInputMode.adjustResize?

    hi! I'v got a question! When I use nineoldandroids to animate,when i trigger a edittext's ontouch event ,it works!But,the system windowSoftInputMode.adjustResize does not work! Does nineoldandroids conflict with the windowSoftInputMode?I mean that,I can only have one choice between them? In my case,i use the nineoldandroids to change a layout, and i use the windowSoftInputMode.adjustResize to avoid the keyboard covering the edittext . So poor my English is ! Wish your reply !3x!

                ViewHelper.setTranslationY(findViewById(R.id.tab_icons), -App.Dp2Px(39 + 100));
                ViewHelper.setTranslationY(findViewById(R.id.tab_texts), -App.Dp2Px(39 + 45));
        ViewHelper.setTranslationY(findViewById(R.id.pager), -App.Dp2Px(39 + 45));
    
    Reviewed by zhangrongxun at 2016-05-30 05:39
  • 14. Android Studio: Failed to resolve

    Hi,

    From today it's impossible to reach the library in the maven. Android studio give me this output:

    "Failed to resolve: com.nineoldandroids:library:2.4.0+".

    Is it a problem with Maven or the library is - at the moment - down in the maven central?

    Thanks.

    Reviewed by antoniodisanto92 at 2016-01-11 13:20
  • 15. Samsung Compatibility-Fix 2.3.6 - 2.3.7

    This fix resolves issues with older Samsung Android phones, when inflating objectanimator xml files. Its a rather old fix I implemented for older Samsung phones.

    Reviewed by andacaydin at 2015-04-27 19:14
  • 16. Animators defined in XMLs should work with Build Tools 22

    Problem: Build Tools 22 removes attributes targeted to higher versions of Android from xml file, copying the original file to an appropriate bucket. On lower versions of Android (f.e. 9) NineOldAndroids can't access such attributes (as they are now in animator-vXX bucket) and crashes.

    Solution: let's use our own custom attributes instead of Android attributes. All XMLs defining animators should be changed - project namespace should be used instead of Android one.

    Fixes #80

    Reviewed by serso at 2015-04-11 14:50
Android Animation Easing Functions. Let's make animation more real!
Android Animation Easing Functions. Let's make animation more real!

Android Easing Functions This project is originally from my another project, AndroidViewAnimation, which is an animation collection, to help you make

Aug 9, 2022
With MVVM Architecture pattern using Android Architecture Components This is a sample app demonstrating Youtube player animation using constraint layout
With MVVM Architecture pattern using Android Architecture Components This is a sample app demonstrating Youtube player animation using constraint layout

Youtube UI/UX Animation This is a sample app demonstrating Youtube UX/UI animation using ConstraintLayout.It implements the Keyframe Animation feature

Aug 4, 2022
Road Runner is a library for android which allow you to make your own loading animation using a SVG image
Road Runner is a library for android which allow you to make your own loading animation using a SVG image

Road Runner Road Runner is a library for android which allow you to make your own loading animation using a SVG image Sample video View in Youtube Dem

Jul 27, 2022
Android library to control Transition animates. A simple way to create a interactive animation.
Android library to control Transition animates. A simple way to create a interactive animation.

TransitionPlayer Android library to control Transition animates. A simple way to create a interactive animation. Demo1 SimpleTransition Code: ....

Jul 30, 2022
FPSAnimator is very easy animation library for Android TextureView and SurfaceView.
FPSAnimator is very easy animation library for Android TextureView and SurfaceView.

FPSAnimator A simple but powerful Tween / SpriteSheet / ParabolicMotion / animation library for Android TextureView and SurfaceView. Features The cont

Jul 28, 2022
Android library to make notes drop animation for music players
Android library to make notes drop animation for music players

VusikView Min SDK 11 Screnshots How to use If you want use this library, you can download project and import it into your workspace and add the projec

May 30, 2022
An simple & awesome animation library written in Kotlin for Android
An simple & awesome animation library written in Kotlin for Android

An simple & awesome animation library written in Kotlin for Android

May 27, 2022
Android library to control Transition animates. A simple way to create a interactive animation.
Android library to control Transition animates. A simple way to create a interactive animation.

TransitionPlayer Android library to control Transition animates. A simple way to create a interactive animation. Demo1 SimpleTransition Code: ....

Jul 30, 2022
A fluent Android animation library
A fluent Android animation library

ViewAnimator A fluent Android animation library ! Usage Animate multiple view from one method ViewAnimator .animate(image) .transla

Aug 8, 2022
Android Library to create Lottie animation view dialog easily with a lot of customization
Android Library to create Lottie animation view dialog easily with a lot of customization

LottieDialog Android Library to create Lottie animation view dialog easily with a lot of customization Why you should use Lottie Dialog You have no li

Aug 8, 2022
Android Library to create Lottie animation view dialog easily with a lot of customization
Android Library to create Lottie animation view dialog easily with a lot of customization

Android Library to create Lottie animation view dialog easily with a lot of customization

Jul 22, 2022
Apr 24, 2022
User onboarding library with smooth animation of objects and background colors
User onboarding library with smooth animation of objects and background colors

SlidingTutorial Cleveroad introduces Sliding Tutorial Library for Flutter Hey guys, hope you haven’t started developing a tutorial for your Flutter ap

Apr 12, 2022
This library provides easy ways to add onboarding or pager screens with different animation and indicators.
This library provides easy ways to add onboarding or pager screens with different animation and indicators.

WalkThroughAndroid Make amazing OnBoarding Screens easily for your app with different colorful animations, fonts, styles, and many more. Customize you

May 4, 2022
A library support circular imageview with rotation animation
A library support circular imageview with rotation animation

Circular Imageview with Rotate Animation This is a fast and efficient open source custom imageview for Android that allow to easy implement disc anima

Jul 24, 2022
🪐 Jetpack Compose animation library that allows you to implement animations such as shared element transition.
🪐 Jetpack Compose animation library that allows you to implement animations such as shared element transition.

Orbitary ?? Jetpack Compose animation library that allows you to implement animations such as shared element transition. Download Gradle Add the depen

Aug 6, 2022
FadingToolbar is an animation library which fades out your footer view in a ScrollView/RecyclerView and fades in a toolbar title
FadingToolbar is an animation library which fades out your footer view in a ScrollView/RecyclerView and fades in a toolbar title

FadingToolbar is an animation library which fades out your footer view in a ScrollView/RecyclerView and fades in a toolbar title (analogue of the LargeTitle animation in iOS)

Aug 9, 2022
A component for flip animation on Android, which is similar to the effect in Flipboard iPhone/Android
A component for flip animation on Android, which is similar to the effect in Flipboard iPhone/Android

android-flip Aphid FlipView is a UI component to accomplish the flipping animation like Flipboard does. A pre-built demo APK file for Android OS 2.2+

Aug 10, 2022
Deprecated in favour of https://developer.android.com/reference/android/support/v4/view/animation/PathInterpolatorCompat.html

Deprecated: use https://developer.android.com/reference/android/support/v4/view/animation/PathInterpolatorCompat.html instead. android-cubic-bezier-in

Jun 29, 2022