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