17407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka/*
27407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka * Copyright (C) 2012 The Android Open Source Project
37407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka *
47407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka * Licensed under the Apache License, Version 2.0 (the "License");
57407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka * you may not use this file except in compliance with the License.
67407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka * You may obtain a copy of the License at
77407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka *
87407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka *      http://www.apache.org/licenses/LICENSE-2.0
97407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka *
107407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka * Unless required by applicable law or agreed to in writing, software
117407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka * distributed under the License is distributed on an "AS IS" BASIS,
127407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka * See the License for the specific language governing permissions and
147407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka * limitations under the License.
157407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka */
167407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
177407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurkapackage com.android.launcher2;
187407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
197407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurkaimport android.animation.Animator;
207407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurkaimport android.animation.Animator.AnimatorListener;
217407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurkaimport android.animation.TimeInterpolator;
227407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurkaimport android.view.View;
23032e6bad1ba588ed8a884fb8f28fb8596efac480Michael Jurkaimport android.view.ViewPropertyAnimator;
247407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
257407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurkaimport java.util.ArrayList;
267407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurkaimport java.util.EnumSet;
277407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
287407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurkapublic class LauncherViewPropertyAnimator extends Animator implements AnimatorListener {
297407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    enum Properties {
307407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            TRANSLATION_X,
317407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            TRANSLATION_Y,
327407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            SCALE_X,
337407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            SCALE_Y,
347407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            ROTATION_Y,
357407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            ALPHA,
367407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            START_DELAY,
377407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            DURATION,
387407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            INTERPOLATOR
397407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
407407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    EnumSet<Properties> mPropertiesToSet = EnumSet.noneOf(Properties.class);
417407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    ViewPropertyAnimator mViewPropertyAnimator;
427407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    View mTarget;
437407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
447407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    float mTranslationX;
457407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    float mTranslationY;
467407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    float mScaleX;
477407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    float mScaleY;
487407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    float mRotationY;
497407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    float mAlpha;
507407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    long mStartDelay;
517407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    long mDuration;
527407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    TimeInterpolator mInterpolator;
53159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka    ArrayList<Animator.AnimatorListener> mListeners;
547407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    boolean mRunning = false;
5539b599e0641047e5583cf717d35a4cb080049665Michael Jurka    FirstFrameAnimatorHelper mFirstFrameHelper;
567407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
577407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public LauncherViewPropertyAnimator(View target) {
587407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mTarget = target;
59159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        mListeners = new ArrayList<Animator.AnimatorListener>();
607407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
617407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
627407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
637407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void addListener(Animator.AnimatorListener listener) {
64159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        mListeners.add(listener);
657407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
667407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
677407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
687407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void cancel() {
698a309c257a97d9c4c402fae5f00941e8169ea541Michael Jurka        if (mViewPropertyAnimator != null) {
708a309c257a97d9c4c402fae5f00941e8169ea541Michael Jurka            mViewPropertyAnimator.cancel();
718a309c257a97d9c4c402fae5f00941e8169ea541Michael Jurka        }
727407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
737407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
747407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
757407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public Animator clone() {
767407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        throw new RuntimeException("Not implemented");
777407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
787407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
797407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
807407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void end() {
817407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        throw new RuntimeException("Not implemented");
827407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
837407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
847407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
857407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public long getDuration() {
868a309c257a97d9c4c402fae5f00941e8169ea541Michael Jurka        return mDuration;
877407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
887407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
897407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
907407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public ArrayList<Animator.AnimatorListener> getListeners() {
91159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        return mListeners;
927407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
937407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
947407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
957407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public long getStartDelay() {
968a309c257a97d9c4c402fae5f00941e8169ea541Michael Jurka        return mStartDelay;
977407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
987407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
997407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1007407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void onAnimationCancel(Animator animation) {
101159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        for (int i = 0; i < mListeners.size(); i++) {
102159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka            Animator.AnimatorListener listener = mListeners.get(i);
103159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka            listener.onAnimationCancel(this);
1047407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
1057407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mRunning = false;
1067407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1077407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1087407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1097407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void onAnimationEnd(Animator animation) {
110159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        for (int i = 0; i < mListeners.size(); i++) {
111159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka            Animator.AnimatorListener listener = mListeners.get(i);
112159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka            listener.onAnimationEnd(this);
1137407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
1147407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mRunning = false;
1157407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1167407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1177407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1187407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void onAnimationRepeat(Animator animation) {
119159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        for (int i = 0; i < mListeners.size(); i++) {
120159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka            Animator.AnimatorListener listener = mListeners.get(i);
121159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka            listener.onAnimationRepeat(this);
1227407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
1237407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1247407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1257407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1267407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void onAnimationStart(Animator animation) {
12739b599e0641047e5583cf717d35a4cb080049665Michael Jurka        // This is the first time we get a handle to the internal ValueAnimator
12839b599e0641047e5583cf717d35a4cb080049665Michael Jurka        // used by the ViewPropertyAnimator.
12939b599e0641047e5583cf717d35a4cb080049665Michael Jurka        mFirstFrameHelper.onAnimationStart(animation);
13039b599e0641047e5583cf717d35a4cb080049665Michael Jurka
131159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        for (int i = 0; i < mListeners.size(); i++) {
132159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka            Animator.AnimatorListener listener = mListeners.get(i);
133159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka            listener.onAnimationStart(this);
1347407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
1357407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mRunning = true;
1367407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1377407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1387407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1397407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public boolean isRunning() {
1407407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return mRunning;
1417407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1427407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1437407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1447407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public boolean isStarted() {
1457407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return mViewPropertyAnimator != null;
1467407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1477407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1487407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1497407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void removeAllListeners() {
150159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        mListeners.clear();
1517407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1527407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1537407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1547407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void removeListener(Animator.AnimatorListener listener) {
155159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        mListeners.remove(listener);
1567407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1577407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1587407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1597407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public Animator setDuration(long duration) {
1607407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.DURATION);
1617407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mDuration = duration;
1627407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return this;
1637407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1647407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1657407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1667407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void setInterpolator(TimeInterpolator value) {
1677407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.INTERPOLATOR);
1687407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mInterpolator = value;
1697407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1707407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1717407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1727407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void setStartDelay(long startDelay) {
1737407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.START_DELAY);
1747407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mStartDelay = startDelay;
1757407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1767407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1777407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1787407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void setTarget(Object target) {
1797407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        throw new RuntimeException("Not implemented");
1807407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1817407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1827407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1837407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void setupEndValues() {
1847407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1857407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1867407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1877407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1887407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void setupStartValues() {
1897407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1907407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1917407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1927407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void start() {
1937407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mViewPropertyAnimator = mTarget.animate();
19439b599e0641047e5583cf717d35a4cb080049665Michael Jurka
19539b599e0641047e5583cf717d35a4cb080049665Michael Jurka        // FirstFrameAnimatorHelper hooks itself up to the updates on the animator,
19639b599e0641047e5583cf717d35a4cb080049665Michael Jurka        // and then adjusts the play time to keep the first two frames jank-free
19739b599e0641047e5583cf717d35a4cb080049665Michael Jurka        mFirstFrameHelper = new FirstFrameAnimatorHelper(mViewPropertyAnimator, mTarget);
19839b599e0641047e5583cf717d35a4cb080049665Michael Jurka
1997407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.TRANSLATION_X)) {
2007407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.translationX(mTranslationX);
2017407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2027407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.TRANSLATION_Y)) {
2037407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.translationY(mTranslationY);
2047407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2057407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.SCALE_X)) {
2067407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.scaleX(mScaleX);
2077407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2087407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.ROTATION_Y)) {
2097407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.rotationY(mRotationY);
2107407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2117407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.SCALE_Y)) {
2127407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.scaleY(mScaleY);
2137407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2147407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.ALPHA)) {
2157407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.alpha(mAlpha);
2167407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2177407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.START_DELAY)) {
2187407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.setStartDelay(mStartDelay);
2197407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2207407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.DURATION)) {
2217407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.setDuration(mDuration);
2227407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2237407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.INTERPOLATOR)) {
2247407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.setInterpolator(mInterpolator);
2257407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2267407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mViewPropertyAnimator.setListener(this);
2277407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mViewPropertyAnimator.start();
2282ecf995e0d2d55eb71d03f7230ca87270872d1a3Michael Jurka        LauncherAnimUtils.cancelOnDestroyActivity(this);
2297407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
2307407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
2317407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public LauncherViewPropertyAnimator translationX(float value) {
2327407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.TRANSLATION_X);
2337407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mTranslationX = value;
2347407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return this;
2357407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
2367407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
2377407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public LauncherViewPropertyAnimator translationY(float value) {
2387407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.TRANSLATION_Y);
2397407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mTranslationY = value;
2407407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return this;
2417407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
2427407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
2437407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public LauncherViewPropertyAnimator scaleX(float value) {
2447407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.SCALE_X);
2457407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mScaleX = value;
2467407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return this;
2477407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
2487407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
2497407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public LauncherViewPropertyAnimator scaleY(float value) {
2507407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.SCALE_Y);
2517407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mScaleY = value;
2527407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return this;
2537407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
2547407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
2557407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public LauncherViewPropertyAnimator rotationY(float value) {
2567407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.ROTATION_Y);
2577407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mRotationY = value;
2587407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return this;
2597407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
2607407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
2617407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public LauncherViewPropertyAnimator alpha(float value) {
2627407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.ALPHA);
2637407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mAlpha = value;
2647407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return this;
2657407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
2667407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka}
267