Search in sources :

Example 1 with AnimatorSet

use of com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorSet in project UltimateAndroid by cymcsg.

the class FilckerAnimationListView method animatePreLayout.

/**
	 * Animate items that are deleted entirely and items that move out of
	 * bounds.
	 */
private void animatePreLayout(final float durationUnit, final Animator.AnimatorListener listener) {
    final AnimatorSet animatorSet = new AnimatorSet();
    final int firstVisiblePosition = getFirstVisiblePosition();
    final int childCount = getChildCount();
    for (final Iterator<Entry<Long, Float>> iter = yMap.entrySet().iterator(); iter.hasNext(); ) {
        final Entry<Long, Float> entry = iter.next();
        final long id = entry.getKey();
        final int oldPos = positionMap.get(id);
        final View child = getChildAt(oldPos - firstVisiblePosition);
        final int newPos = getPositionForId(id);
        // fade out items that disappear
        if (newPos == -1) {
            final ObjectAnimator anim = animateAlpha(child, false);
            animatorSet.play(anim);
            iter.remove();
            positionMap.remove(id);
            continue;
        }
        // translate items that move out of bounds
        if (newPos < firstVisiblePosition || newPos > firstVisiblePosition + childCount) {
            final float offset;
            if (newPos < firstVisiblePosition) {
                offset = -getHeight();
            } else {
                offset = getHeight();
            }
            final AnimatorProxy proxy = AnimatorProxy.wrap(child);
            final ObjectAnimator anim = ObjectAnimator.ofFloat(proxy, "translationY", 0f, offset);
            final int finalDuration = getDuration(0, getHeight() / 2, durationUnit);
            anim.setInterpolator(new AccelerateInterpolator());
            anim.setDuration((long) (finalDuration * animationDurationFactor));
            animatorSet.addListener(new AnimatorListenerAdapter() {

                @Override
                public void onAnimationEnd(final Animator animation) {
                    child.post(new Runnable() {

                        @Override
                        public void run() {
                            proxy.setTranslationY(0f);
                        }
                    });
                }
            });
            animatorSet.play(anim);
            iter.remove();
            positionMap.remove(id);
            continue;
        }
    }
    if (!animatorSet.getChildAnimations().isEmpty()) {
        animatorSet.addListener(listener);
        animatorSet.start();
    } else {
        listener.onAnimationEnd(animatorSet);
    }
}
Also used : AccelerateInterpolator(android.view.animation.AccelerateInterpolator) ObjectAnimator(com.marshalchen.common.uimodule.nineoldandroids.animation.ObjectAnimator) AnimatorSet(com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorSet) View(android.view.View) ListView(android.widget.ListView) Entry(java.util.Map.Entry) Animator(com.marshalchen.common.uimodule.nineoldandroids.animation.Animator) ObjectAnimator(com.marshalchen.common.uimodule.nineoldandroids.animation.ObjectAnimator) AnimatorListenerAdapter(com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorListenerAdapter) AnimatorProxy(com.marshalchen.common.uimodule.nineoldandroids.view.animation.AnimatorProxy)

Example 2 with AnimatorSet

use of com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorSet in project UltimateAndroid by cymcsg.

the class FilckerAnimationListView method animatePostLayout.

/**
	 * Animate items that just appeared and items that move within the screen.
	 */
private void animatePostLayout(final float durationUnit) {
    final AnimatorSet animatorSet = new AnimatorSet();
    for (int i = 0; i < getChildCount(); i++) {
        final View child = getChildAt(i);
        final long id = getItemIdAtPosition(getFirstVisiblePosition() + i);
        ObjectAnimator anim = null;
        ViewHelper.setAlpha(child, 1f);
        if (yMap.containsKey(id)) {
            // moved within visible area
            // log("Moved within visible area id: " + id);
            final float oldY = yMap.remove(id);
            final float newY = ViewHelper.getY(child);
            if (oldY != newY) {
                anim = animateY(child, oldY, newY, durationUnit);
            }
        } else {
            if (beforeVisible.contains(id)) {
                // moved from top
                final float newY = ViewHelper.getY(child);
                final float oldY = -child.getHeight();
                anim = animateY(child, oldY, newY, durationUnit);
            } else if (afterVisible.contains(id)) {
                // moved from bottom
                final float newY = ViewHelper.getY(child);
                final float oldY = getHeight();
                anim = animateY(child, oldY, newY, durationUnit);
            } else {
                // entirely new
                ViewHelper.setAlpha(child, 0f);
                anim = animateAlpha(child, true);
                anim.setStartDelay(MIN_ANIM_DURATION);
            }
        }
        if (anim != null) {
            animatorSet.play(anim);
        }
    }
    animatorSet.addListener(new AnimatorListenerAdapter() {

        @Override
        public void onAnimationEnd(final Animator animation) {
            finishAnimation();
        }

        ;
    });
    animatorSet.start();
}
Also used : Animator(com.marshalchen.common.uimodule.nineoldandroids.animation.Animator) ObjectAnimator(com.marshalchen.common.uimodule.nineoldandroids.animation.ObjectAnimator) ObjectAnimator(com.marshalchen.common.uimodule.nineoldandroids.animation.ObjectAnimator) AnimatorListenerAdapter(com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorListenerAdapter) AnimatorSet(com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorSet) View(android.view.View) ListView(android.widget.ListView)

Example 3 with AnimatorSet

use of com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorSet in project UltimateAndroid by cymcsg.

the class Titanic method start.

public void start(final TitanicTextView textView) {
    final Runnable animate = new Runnable() {

        @Override
        public void run() {
            textView.setSinking(true);
            // horizontal animation. 200 = wave.png width
            ObjectAnimator maskXAnimator = ObjectAnimator.ofFloat(textView, "maskX", 0, 200);
            maskXAnimator.setRepeatCount(ValueAnimator.INFINITE);
            maskXAnimator.setDuration(1000);
            maskXAnimator.setStartDelay(0);
            int h = textView.getHeight();
            // vertical animation
            // maskY = 0 -> wave vertically centered
            // repeat mode REVERSE to go back and forth
            ObjectAnimator maskYAnimator = ObjectAnimator.ofFloat(textView, "maskY", h / 2, -h / 2);
            maskYAnimator.setRepeatCount(ValueAnimator.INFINITE);
            maskYAnimator.setRepeatMode(ValueAnimator.REVERSE);
            maskYAnimator.setDuration(10000);
            maskYAnimator.setStartDelay(0);
            // now play both animations together
            animatorSet = new AnimatorSet();
            animatorSet.playTogether(maskXAnimator, maskYAnimator);
            animatorSet.setInterpolator(new LinearInterpolator());
            animatorSet.addListener(new Animator.AnimatorListener() {

                @Override
                public void onAnimationStart(Animator animation) {
                }

                @Override
                public void onAnimationEnd(Animator animation) {
                    textView.setSinking(false);
                    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
                        textView.postInvalidate();
                    } else {
                        textView.postInvalidateOnAnimation();
                    }
                    animatorSet = null;
                }

                @Override
                public void onAnimationCancel(Animator animation) {
                }

                @Override
                public void onAnimationRepeat(Animator animation) {
                }
            });
            if (animatorListener != null) {
                animatorSet.addListener(animatorListener);
            }
            animatorSet.start();
        }
    };
    if (!textView.isSetUp()) {
        textView.setAnimationSetupCallback(new TitanicTextView.AnimationSetupCallback() {

            @Override
            public void onSetupAnimation(final TitanicTextView target) {
                animate.run();
            }
        });
    } else {
        animate.run();
    }
}
Also used : ValueAnimator(com.marshalchen.common.uimodule.nineoldandroids.animation.ValueAnimator) ObjectAnimator(com.marshalchen.common.uimodule.nineoldandroids.animation.ObjectAnimator) Animator(com.marshalchen.common.uimodule.nineoldandroids.animation.Animator) LinearInterpolator(android.view.animation.LinearInterpolator) ObjectAnimator(com.marshalchen.common.uimodule.nineoldandroids.animation.ObjectAnimator) AnimatorSet(com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorSet)

Example 4 with AnimatorSet

use of com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorSet in project UltimateAndroid by cymcsg.

the class EasingActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.easing_activity_my);
    mEasingList = (ListView) findViewById(R.id.easing_list);
    mAdapter = new EasingAdapter(this);
    mEasingList.setAdapter(mAdapter);
    mTarget = findViewById(R.id.target);
    mHistory = (DrawView) findViewById(R.id.history);
    mEasingList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            mHistory.clear();
            Skill s = (Skill) view.getTag();
            AnimatorSet set = new AnimatorSet();
            mTarget.setTranslationX(0);
            mTarget.setTranslationY(0);
            set.playTogether(Glider.glide(s, 1200, ObjectAnimator.ofFloat(mTarget, "translationY", 0, dipToPixels(EasingActivity.this, -(160 - 3))), new BaseEasingMethod.EasingListener() {

                @Override
                public void on(float time, float value, float start, float end, float duration) {
                    mHistory.drawPoint(time, duration, value - dipToPixels(EasingActivity.this, 60));
                }
            }));
            set.setDuration(1200);
            set.start();
        }
    });
}
Also used : BaseEasingMethod(com.marshalchen.common.uimodule.easing.BaseEasingMethod) AnimatorSet(com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorSet) View(android.view.View) AdapterView(android.widget.AdapterView) ListView(android.widget.ListView) Skill(com.marshalchen.common.uimodule.easing.Skill) AdapterView(android.widget.AdapterView)

Example 5 with AnimatorSet

use of com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorSet in project UltimateAndroid by cymcsg.

the class BlurLayout method startBlurImageAppearAnimator.

private void startBlurImageAppearAnimator() {
    if (!enableBlurBackground || mBlurImage == null)
        return;
    AnimatorSet set = new AnimatorSet();
    if (enableBackgroundZoom) {
        set.playTogether(ObjectAnimator.ofFloat(mBlurImage, "alpha", 0.8f, 1f), ObjectAnimator.ofFloat(mBlurImage, "scaleX", 1f, mZoomRatio), ObjectAnimator.ofFloat(mBlurImage, "scaleY", 1f, mZoomRatio));
    } else {
        set.playTogether(ObjectAnimator.ofFloat(mBlurImage, "alpha", 0f, 1f));
    }
    set.addListener(mGlobalListener);
    set.addListener(mGlobalAppearingAnimators);
    set.setDuration(mBlurDuration);
    set.start();
}
Also used : AnimatorSet(com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorSet)

Aggregations

AnimatorSet (com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorSet)13 Animator (com.marshalchen.common.uimodule.nineoldandroids.animation.Animator)5 View (android.view.View)4 ObjectAnimator (com.marshalchen.common.uimodule.nineoldandroids.animation.ObjectAnimator)4 ListView (android.widget.ListView)3 AnimatorListenerAdapter (com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorListenerAdapter)3 ValueAnimator (com.marshalchen.common.uimodule.nineoldandroids.animation.ValueAnimator)2 AccelerateInterpolator (android.view.animation.AccelerateInterpolator)1 LinearInterpolator (android.view.animation.LinearInterpolator)1 AdapterView (android.widget.AdapterView)1 BaseEasingMethod (com.marshalchen.common.uimodule.easing.BaseEasingMethod)1 Skill (com.marshalchen.common.uimodule.easing.Skill)1 AnimatorProxy (com.marshalchen.common.uimodule.nineoldandroids.view.animation.AnimatorProxy)1 Entry (java.util.Map.Entry)1