12c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang/* 22c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang * Copyright (C) 2012 The Android Open Source Project 32c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang * 42c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang * Licensed under the Apache License, Version 2.0 (the "License"); 52c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang * you may not use this file except in compliance with the License. 62c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang * You may obtain a copy of the License at 72c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang * 82c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang * http://www.apache.org/licenses/LICENSE-2.0 92c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang * 102c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang * Unless required by applicable law or agreed to in writing, software 112c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang * distributed under the License is distributed on an "AS IS" BASIS, 122c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang * See the License for the specific language governing permissions and 142c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang * limitations under the License. 152c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang */ 162c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang 172c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Changpackage com.android.gallery3d.ui; 182c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang 192c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Changimport android.view.animation.AccelerateDecelerateInterpolator; 202c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Changimport android.view.animation.AccelerateInterpolator; 212c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Changimport android.view.animation.DecelerateInterpolator; 222c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Changimport android.view.animation.Interpolator; 232c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang 242c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Changpublic class CaptureAnimation { 252c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang // The amount of change for zooming out. 262c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang private static final float ZOOM_DELTA = 0.2f; 272c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang // Pre-calculated value for convenience. 282c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang private static final float ZOOM_IN_BEGIN = 1f - ZOOM_DELTA; 292c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang 302c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang private static final Interpolator sZoomOutInterpolator = 312c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang new DecelerateInterpolator(); 322c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang private static final Interpolator sZoomInInterpolator = 332c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang new AccelerateInterpolator(); 342c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang private static final Interpolator sSlideInterpolator = 352c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang new AccelerateDecelerateInterpolator(); 362c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang 372c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang // Calculate the slide factor based on the give time fraction. 382c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang public static float calculateSlide(float fraction) { 392c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang return sSlideInterpolator.getInterpolation(fraction); 402c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang } 412c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang 422c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang // Calculate the scale factor based on the given time fraction. 432c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang public static float calculateScale(float fraction) { 442c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang float value; 452c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang if (fraction <= 0.5f) { 462c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang // Zoom in for the beginning. 472c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang value = 1f - ZOOM_DELTA * 482c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang sZoomOutInterpolator.getInterpolation(fraction * 2); 492c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang } else { 502c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang // Zoom out for the ending. 512c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang value = ZOOM_IN_BEGIN + ZOOM_DELTA * 522c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang sZoomInInterpolator.getInterpolation((fraction - 0.5f) * 2f); 532c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang } 542c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang return value; 552c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang } 562c6173822a612597c79be41b126367ddfbb5d518Chih-Chung Chang} 57