content: /*
   * Copyright (C) 2006 The Android Open Source Project
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  package android.view.animation;
  
  import android.content.Context;
  import android.content.res.TypedArray;
  import android.util.AttributeSet;
  
  /**
   * An animation that controls the alpha level of an object.
   * Useful for fading things in and out. This animation ends up
   * changing the alpha property of a {@link Transformation}
   *
   */
  public class AlphaAnimation extends Animation {
      private float mFromAlpha;
      private float mToAlpha;
  
      /**
       * Constructor used when an AlphaAnimation is loaded from a resource. 
       * 
       * @param context Application context to use
       * @param attrs Attribute set from which to read values
       */
      public AlphaAnimation(Context context, AttributeSet attrs) {
          super(context, attrs);
          
          TypedArray a =
              context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.AlphaAnimation);
          
          mFromAlpha = a.getFloat(com.android.internal.R.styleable.AlphaAnimation_fromAlpha, 1.0f);
          mToAlpha = a.getFloat(com.android.internal.R.styleable.AlphaAnimation_toAlpha, 1.0f);
          
          a.recycle();
      }
      
      /**
       * Constructor to use when building an AlphaAnimation from code
       * 
       * @param fromAlpha Starting alpha value for the animation, where 1.0 means
       *        fully opaque and 0.0 means fully transparent.
       * @param toAlpha Ending alpha value for the animation.
       */
      public AlphaAnimation(float fromAlpha, float toAlpha) {
          mFromAlpha = fromAlpha;
          mToAlpha = toAlpha;
      }
      
      /**
       * Changes the alpha property of the supplied {@link Transformation}
       */
      @Override
      protected void applyTransformation(float interpolatedTime, Transformation t) {
          final float alpha = mFromAlpha;
          t.setAlpha(alpha + ((mToAlpha - alpha) * interpolatedTime));
      }
  
      @Override
      public boolean willChangeTransformationMatrix() {
          return false;
      }
  
      @Override
      public boolean willChangeBounds() {
          return false;
      }
  
      /**
       * @hide
       */
      @Override
      public boolean hasAlpha() {
          return true;
      }
  }
  