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
17325dc23624160689e59fbac708cf6f222b20d025Daniel Sandlerpackage com.android.launcher3;
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 {
29006ee269ba2e9946a83b42f96d4a0296254cba4aWinson Chung
307407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    enum Properties {
317407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            TRANSLATION_X,
327407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            TRANSLATION_Y,
337407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            SCALE_X,
347407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            SCALE_Y,
357407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            ROTATION_Y,
367407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            ALPHA,
377407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            START_DELAY,
387407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            DURATION,
397267fa58693549894999db17359ce26f8bc7b4a7Michael Jurka            INTERPOLATOR,
407267fa58693549894999db17359ce26f8bc7b4a7Michael Jurka            WITH_LAYER
417407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
427407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    EnumSet<Properties> mPropertiesToSet = EnumSet.noneOf(Properties.class);
437407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    ViewPropertyAnimator mViewPropertyAnimator;
447407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    View mTarget;
457407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
467407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    float mTranslationX;
477407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    float mTranslationY;
487407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    float mScaleX;
497407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    float mScaleY;
507407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    float mRotationY;
517407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    float mAlpha;
527407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    long mStartDelay;
537407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    long mDuration;
547407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    TimeInterpolator mInterpolator;
55006ee269ba2e9946a83b42f96d4a0296254cba4aWinson Chung    ArrayList<Animator.AnimatorListener> mListeners = new ArrayList<>();
567407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    boolean mRunning = false;
5739b599e0641047e5583cf717d35a4cb080049665Michael Jurka    FirstFrameAnimatorHelper mFirstFrameHelper;
587407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
597407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public LauncherViewPropertyAnimator(View target) {
607407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mTarget = target;
617407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
627407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
637407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
647407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void addListener(Animator.AnimatorListener listener) {
65159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        mListeners.add(listener);
667407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
677407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
687407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
697407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void cancel() {
708a309c257a97d9c4c402fae5f00941e8169ea541Michael Jurka        if (mViewPropertyAnimator != null) {
718a309c257a97d9c4c402fae5f00941e8169ea541Michael Jurka            mViewPropertyAnimator.cancel();
728a309c257a97d9c4c402fae5f00941e8169ea541Michael Jurka        }
737407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
747407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
757407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
767407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public Animator clone() {
777407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        throw new RuntimeException("Not implemented");
787407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
797407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
807407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
817407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void end() {
827407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        throw new RuntimeException("Not implemented");
837407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
847407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
857407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
867407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public long getDuration() {
878a309c257a97d9c4c402fae5f00941e8169ea541Michael Jurka        return mDuration;
887407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
897407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
907407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
917407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public ArrayList<Animator.AnimatorListener> getListeners() {
92159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        return mListeners;
937407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
947407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
957407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
967407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public long getStartDelay() {
978a309c257a97d9c4c402fae5f00941e8169ea541Michael Jurka        return mStartDelay;
987407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
997407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1007407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1017407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void onAnimationCancel(Animator animation) {
102159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        for (int i = 0; i < mListeners.size(); i++) {
103159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka            Animator.AnimatorListener listener = mListeners.get(i);
104159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka            listener.onAnimationCancel(this);
1057407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
1067407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mRunning = false;
1077407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1087407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1097407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1107407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void onAnimationEnd(Animator animation) {
111159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        for (int i = 0; i < mListeners.size(); i++) {
112159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka            Animator.AnimatorListener listener = mListeners.get(i);
113159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka            listener.onAnimationEnd(this);
1147407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
1157407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mRunning = false;
1167407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1177407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1187407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1197407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void onAnimationRepeat(Animator animation) {
120159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        for (int i = 0; i < mListeners.size(); i++) {
121159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka            Animator.AnimatorListener listener = mListeners.get(i);
122159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka            listener.onAnimationRepeat(this);
1237407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
1247407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1257407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1267407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1277407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void onAnimationStart(Animator animation) {
12839b599e0641047e5583cf717d35a4cb080049665Michael Jurka        // This is the first time we get a handle to the internal ValueAnimator
12939b599e0641047e5583cf717d35a4cb080049665Michael Jurka        // used by the ViewPropertyAnimator.
13039b599e0641047e5583cf717d35a4cb080049665Michael Jurka        mFirstFrameHelper.onAnimationStart(animation);
13139b599e0641047e5583cf717d35a4cb080049665Michael Jurka
132159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        for (int i = 0; i < mListeners.size(); i++) {
133159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka            Animator.AnimatorListener listener = mListeners.get(i);
134159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka            listener.onAnimationStart(this);
1357407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
1367407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mRunning = true;
1377407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1387407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1397407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1407407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public boolean isRunning() {
1417407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return mRunning;
1427407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1437407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1447407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1457407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public boolean isStarted() {
1467407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return mViewPropertyAnimator != null;
1477407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1487407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1497407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1507407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void removeAllListeners() {
151159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        mListeners.clear();
1527407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1537407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1547407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1557407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void removeListener(Animator.AnimatorListener listener) {
156159b4cc1e463ba730dbdff7c4ada2af01f35a1f1Michael Jurka        mListeners.remove(listener);
1577407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1587407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1597407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1607407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public Animator setDuration(long duration) {
1617407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.DURATION);
1627407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mDuration = duration;
1637407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return this;
1647407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1657407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1667407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1677407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void setInterpolator(TimeInterpolator value) {
1687407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.INTERPOLATOR);
1697407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mInterpolator = value;
1707407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1717407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1727407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1737407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void setStartDelay(long startDelay) {
1747407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.START_DELAY);
1757407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mStartDelay = startDelay;
1767407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1777407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1787407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1797407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void setTarget(Object target) {
1807407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        throw new RuntimeException("Not implemented");
1817407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1827407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1837407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1847407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void setupEndValues() {
1857407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1867407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1877407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1887407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1897407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void setupStartValues() {
1907407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
1917407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
1927407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    @Override
1937407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public void start() {
1947407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mViewPropertyAnimator = mTarget.animate();
19539b599e0641047e5583cf717d35a4cb080049665Michael Jurka
19639b599e0641047e5583cf717d35a4cb080049665Michael Jurka        // FirstFrameAnimatorHelper hooks itself up to the updates on the animator,
19739b599e0641047e5583cf717d35a4cb080049665Michael Jurka        // and then adjusts the play time to keep the first two frames jank-free
19839b599e0641047e5583cf717d35a4cb080049665Michael Jurka        mFirstFrameHelper = new FirstFrameAnimatorHelper(mViewPropertyAnimator, mTarget);
19939b599e0641047e5583cf717d35a4cb080049665Michael Jurka
2007407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.TRANSLATION_X)) {
2017407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.translationX(mTranslationX);
2027407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2037407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.TRANSLATION_Y)) {
2047407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.translationY(mTranslationY);
2057407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2067407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.SCALE_X)) {
2077407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.scaleX(mScaleX);
2087407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2097407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.ROTATION_Y)) {
2107407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.rotationY(mRotationY);
2117407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2127407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.SCALE_Y)) {
2137407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.scaleY(mScaleY);
2147407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2157407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.ALPHA)) {
2167407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.alpha(mAlpha);
2177407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2187407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.START_DELAY)) {
2197407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.setStartDelay(mStartDelay);
2207407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2217407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.DURATION)) {
2227407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.setDuration(mDuration);
2237407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2247407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        if (mPropertiesToSet.contains(Properties.INTERPOLATOR)) {
2257407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka            mViewPropertyAnimator.setInterpolator(mInterpolator);
2267407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        }
2277267fa58693549894999db17359ce26f8bc7b4a7Michael Jurka        if (mPropertiesToSet.contains(Properties.WITH_LAYER)) {
2287267fa58693549894999db17359ce26f8bc7b4a7Michael Jurka            mViewPropertyAnimator.withLayer();
2297267fa58693549894999db17359ce26f8bc7b4a7Michael Jurka        }
2307407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mViewPropertyAnimator.setListener(this);
2317407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mViewPropertyAnimator.start();
2322ecf995e0d2d55eb71d03f7230ca87270872d1a3Michael Jurka        LauncherAnimUtils.cancelOnDestroyActivity(this);
2337407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
2347407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
2357407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public LauncherViewPropertyAnimator translationX(float value) {
2367407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.TRANSLATION_X);
2377407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mTranslationX = value;
2387407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return this;
2397407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
2407407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
2417407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public LauncherViewPropertyAnimator translationY(float value) {
2427407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.TRANSLATION_Y);
2437407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mTranslationY = value;
2447407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return this;
2457407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
2467407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
2477407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public LauncherViewPropertyAnimator scaleX(float value) {
2487407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.SCALE_X);
2497407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mScaleX = value;
2507407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return this;
2517407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
2527407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
2537407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public LauncherViewPropertyAnimator scaleY(float value) {
2547407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.SCALE_Y);
2557407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mScaleY = value;
2567407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return this;
2577407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
2587407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
2597407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public LauncherViewPropertyAnimator rotationY(float value) {
2607407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.ROTATION_Y);
2617407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mRotationY = value;
2627407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return this;
2637407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
2647407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka
2657407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    public LauncherViewPropertyAnimator alpha(float value) {
2667407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mPropertiesToSet.add(Properties.ALPHA);
2677407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        mAlpha = value;
2687407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka        return this;
2697407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka    }
2707267fa58693549894999db17359ce26f8bc7b4a7Michael Jurka
2717267fa58693549894999db17359ce26f8bc7b4a7Michael Jurka    public LauncherViewPropertyAnimator withLayer() {
2727267fa58693549894999db17359ce26f8bc7b4a7Michael Jurka        mPropertiesToSet.add(Properties.WITH_LAYER);
2737267fa58693549894999db17359ce26f8bc7b4a7Michael Jurka        return this;
2747267fa58693549894999db17359ce26f8bc7b4a7Michael Jurka    }
2757407d2a16ed6cf22494122cf683bf13de6fa3695Michael Jurka}
276