19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.view.animation;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.AttributeSet;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
22315c329544d7c593d1072b071cbb92d9afe74021John Reckimport com.android.internal.view.animation.HasNativeInterpolator;
23315c329544d7c593d1072b071cbb92d9afe74021John Reckimport com.android.internal.view.animation.NativeInterpolatorFactory;
24315c329544d7c593d1072b071cbb92d9afe74021John Reckimport com.android.internal.view.animation.NativeInterpolatorFactoryHelper;
25315c329544d7c593d1072b071cbb92d9afe74021John Reck
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * An interpolator where the rate of change starts and ends slowly but
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * accelerates through the middle.
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
30315c329544d7c593d1072b071cbb92d9afe74021John Reck@HasNativeInterpolator
31d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyarpublic class AccelerateDecelerateInterpolator extends BaseInterpolator
32d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar        implements NativeInterpolatorFactory {
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public AccelerateDecelerateInterpolator() {
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
35d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar
368b0662878eae69ab62e859b07165f086ea65cad5Jean-Baptiste Queru    @SuppressWarnings({"UnusedDeclaration"})
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public AccelerateDecelerateInterpolator(Context context, AttributeSet attrs) {
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
39d422dc358f0100106dc07d7b903201eb9b043b11Yigit Boyar
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public float getInterpolation(float input) {
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return (float)(Math.cos((input + 1) * Math.PI) / 2.0f) + 0.5f;
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
43315c329544d7c593d1072b071cbb92d9afe74021John Reck
44315c329544d7c593d1072b071cbb92d9afe74021John Reck    /** @hide */
45315c329544d7c593d1072b071cbb92d9afe74021John Reck    @Override
46315c329544d7c593d1072b071cbb92d9afe74021John Reck    public long createNativeInterpolator() {
47315c329544d7c593d1072b071cbb92d9afe74021John Reck        return NativeInterpolatorFactoryHelper.createAccelerateDecelerateInterpolator();
48315c329544d7c593d1072b071cbb92d9afe74021John Reck    }
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
50