/* * Copyright 2013 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 com.example.android.batchstepsensor.cardstream; import android.animation.ObjectAnimator; import android.animation.PropertyValuesHolder; import android.annotation.TargetApi; import android.content.Context; import android.graphics.Point; import android.os.Build; import android.view.View; import android.view.WindowManager; import android.view.animation.BounceInterpolator; class DefaultCardStreamAnimator extends CardStreamAnimator { @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public ObjectAnimator getDisappearingAnimator(Context context){ ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(new Object(), PropertyValuesHolder.ofFloat("alpha", 1.f, 0.f), PropertyValuesHolder.ofFloat("scaleX", 1.f, 0.f), PropertyValuesHolder.ofFloat("scaleY", 1.f, 0.f), PropertyValuesHolder.ofFloat("rotation", 0.f, 270.f)); animator.setDuration((long) (200 * mSpeedFactor)); return animator; } @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) @Override public ObjectAnimator getAppearingAnimator(Context context){ final Point outPoint = new Point(); WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); wm.getDefaultDisplay().getSize(outPoint); ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(new Object(), PropertyValuesHolder.ofFloat("alpha", 0.f, 1.f), PropertyValuesHolder.ofFloat("translationY", outPoint.y / 2.f, 0.f), PropertyValuesHolder.ofFloat("rotation", -45.f, 0.f)); animator.setDuration((long) (200 * mSpeedFactor)); return animator; } @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) @Override public ObjectAnimator getInitalAnimator(Context context){ ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(new Object(), PropertyValuesHolder.ofFloat("alpha", 0.5f, 1.f), PropertyValuesHolder.ofFloat("rotation", 60.f, 0.f)); animator.setDuration((long) (200 * mSpeedFactor)); return animator; } @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public ObjectAnimator getSwipeInAnimator(View view, float deltaX, float deltaY){ float deltaXAbs = Math.abs(deltaX); float fractionCovered = 1.f - (deltaXAbs / view.getWidth()); long duration = Math.abs((int) ((1 - fractionCovered) * 200 * mSpeedFactor)); // Animate position and alpha of swiped item ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(view, PropertyValuesHolder.ofFloat("alpha", 1.f), PropertyValuesHolder.ofFloat("translationX", 0.f), PropertyValuesHolder.ofFloat("rotationY", 0.f)); animator.setDuration(duration).setInterpolator(new BounceInterpolator()); return animator; } @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public ObjectAnimator getSwipeOutAnimator(View view, float deltaX, float deltaY){ float endX; float endRotationY; float deltaXAbs = Math.abs(deltaX); float fractionCovered = 1.f - (deltaXAbs / view.getWidth()); long duration = Math.abs((int) ((1 - fractionCovered) * 200 * mSpeedFactor)); endX = deltaX < 0 ? -view.getWidth() : view.getWidth(); if (deltaX > 0) endRotationY = -15.f; else endRotationY = 15.f; // Animate position and alpha of swiped item return ObjectAnimator.ofPropertyValuesHolder(view, PropertyValuesHolder.ofFloat("alpha", 0.f), PropertyValuesHolder.ofFloat("translationX", endX), PropertyValuesHolder.ofFloat("rotationY", endRotationY)).setDuration(duration); } }