Home | History | Annotate | Download | only in launcher2
      1 /*
      2  * Copyright (C) 2012 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.launcher2;
     18 
     19 import android.animation.Animator;
     20 import android.animation.AnimatorSet;
     21 import android.animation.ObjectAnimator;
     22 import android.animation.PropertyValuesHolder;
     23 import android.animation.ValueAnimator;
     24 
     25 import java.util.HashSet;
     26 
     27 public class LauncherAnimUtils {
     28     static HashSet<Animator> sAnimators = new HashSet<Animator>();
     29     static Animator.AnimatorListener sEndAnimListener = new Animator.AnimatorListener() {
     30         public void onAnimationStart(Animator animation) {
     31         }
     32 
     33         public void onAnimationRepeat(Animator animation) {
     34         }
     35 
     36         public void onAnimationEnd(Animator animation) {
     37             sAnimators.remove(animation);
     38         }
     39 
     40         public void onAnimationCancel(Animator animation) {
     41             sAnimators.remove(animation);
     42         }
     43     };
     44 
     45     public static void cancelOnDestroyActivity(Animator a) {
     46         sAnimators.add(a);
     47         a.addListener(sEndAnimListener);
     48     }
     49 
     50     public static void onDestroyActivity() {
     51         HashSet<Animator> animators = new HashSet<Animator>(sAnimators);
     52         for (Animator a : animators) {
     53             if (a.isRunning()) {
     54                 a.cancel();
     55             } else {
     56                 sAnimators.remove(a);
     57             }
     58         }
     59     }
     60 
     61     public static AnimatorSet createAnimatorSet() {
     62         AnimatorSet anim = new AnimatorSet();
     63         cancelOnDestroyActivity(anim);
     64         return anim;
     65     }
     66 
     67     public static ValueAnimator ofFloat(float... values) {
     68         ValueAnimator anim = new ValueAnimator();
     69         anim.setFloatValues(values);
     70         cancelOnDestroyActivity(anim);
     71         return anim;
     72     }
     73 
     74     public static ObjectAnimator ofFloat(Object target, String propertyName, float... values) {
     75         ObjectAnimator anim = new ObjectAnimator();
     76         anim.setTarget(target);
     77         anim.setPropertyName(propertyName);
     78         anim.setFloatValues(values);
     79         cancelOnDestroyActivity(anim);
     80         return anim;
     81     }
     82 
     83     public static ObjectAnimator ofPropertyValuesHolder(Object target,
     84             PropertyValuesHolder... values) {
     85         ObjectAnimator anim = new ObjectAnimator();
     86         anim.setTarget(target);
     87         anim.setValues(values);
     88         cancelOnDestroyActivity(anim);
     89         return anim;
     90     }
     91 }
     92