1 <#ftl> 2 <#-- 3 Copyright 2013 The Android Open Source Project 4 5 Licensed under the Apache License, Version 2.0 (the "License"); 6 you may not use this file except in compliance with the License. 7 You may obtain a copy of the License at 8 9 http://www.apache.org/licenses/LICENSE-2.0 10 11 Unless required by applicable law or agreed to in writing, software 12 distributed under the License is distributed on an "AS IS" BASIS, 13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 See the License for the specific language governing permissions and 15 limitations under the License. 16 --> 17 18 package ${sample.package}.cardstream; 19 20 import android.animation.ObjectAnimator; 21 import android.content.Context; 22 import android.view.View; 23 24 /** 25 * An abstract class which defines animators for CardStreamLinearLayout. 26 */ 27 abstract class CardStreamAnimator { 28 29 protected float mSpeedFactor = 1.f; 30 31 /** 32 * Set speed factor of animations. Higher value means longer duration & slow animation. 33 * 34 * @param speedFactor speed type 1: SLOW, 2: NORMAL, 3:FAST 35 */ 36 public void setSpeedFactor(float speedFactor) { 37 mSpeedFactor = speedFactor; 38 } 39 40 /** 41 * Define initial animation of each child which fired when a user rotate a screen. 42 * 43 * @param context 44 * @return ObjectAnimator for initial animation 45 */ 46 public abstract ObjectAnimator getInitalAnimator(Context context); 47 48 /** 49 * Define disappearing animation of a child which fired when a view is removed programmatically 50 * 51 * @param context 52 * @return ObjectAnimator for disappearing animation 53 */ 54 public abstract ObjectAnimator getDisappearingAnimator(Context context); 55 56 /** 57 * Define appearing animation of a child which fired when a view is added programmatically 58 * 59 * @param context 60 * @return ObjectAnimator for appearing animation 61 */ 62 public abstract ObjectAnimator getAppearingAnimator(Context context); 63 64 /** 65 * Define swipe-in (back to the origin position) animation of a child 66 * which fired when a view is not moved enough to be removed. 67 * 68 * @param view target view 69 * @param deltaX delta distance by x-axis 70 * @param deltaY delta distance by y-axis 71 * @return ObjectAnimator for swipe-in animation 72 */ 73 public abstract ObjectAnimator getSwipeInAnimator(View view, float deltaX, float deltaY); 74 75 /** 76 * Define swipe-out animation of a child 77 * which fired when a view is removing by a user swipe action. 78 * 79 * @param view target view 80 * @param deltaX delta distance by x-axis 81 * @param deltaY delta distance by y-axis 82 * @return ObjectAnimator for swipe-out animation 83 */ 84 public abstract ObjectAnimator getSwipeOutAnimator(View view, float deltaX, float deltaY); 85 86 /** 87 * A simple CardStreamAnimator implementation which is used to turn animations off. 88 */ 89 public static class EmptyAnimator extends CardStreamAnimator { 90 91 @Override 92 public ObjectAnimator getInitalAnimator(Context context) { 93 return null; 94 } 95 96 @Override 97 public ObjectAnimator getDisappearingAnimator(Context context) { 98 return null; 99 } 100 101 @Override 102 public ObjectAnimator getAppearingAnimator(Context context) { 103 return null; 104 } 105 106 @Override 107 public ObjectAnimator getSwipeInAnimator(View view, float deltaX, float deltaY) { 108 return null; 109 } 110 111 @Override 112 public ObjectAnimator getSwipeOutAnimator(View view, float deltaX, float deltaY) { 113 return null; 114 } 115 } 116 117 } 118 119