| /* |
| * Copyright (C) 2012 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.android.launcher3; |
| |
| import android.graphics.drawable.Drawable; |
| import android.util.Property; |
| import android.view.View; |
| import android.view.ViewGroup.LayoutParams; |
| |
| public class LauncherAnimUtils { |
| /** |
| * Durations for various state animations. These are not defined in resources to allow |
| * easier access from static classes and enums |
| */ |
| public static final int ALL_APPS_TRANSITION_MS = 320; |
| public static final int OVERVIEW_TRANSITION_MS = 250; |
| public static final int SPRING_LOADED_TRANSITION_MS = 150; |
| public static final int SPRING_LOADED_EXIT_DELAY = 500; |
| |
| // The progress of an animation to all apps must be at least this far along to snap to all apps. |
| public static final float MIN_PROGRESS_TO_ALL_APPS = 0.5f; |
| |
| public static final Property<Drawable, Integer> DRAWABLE_ALPHA = |
| new Property<Drawable, Integer>(Integer.TYPE, "drawableAlpha") { |
| @Override |
| public Integer get(Drawable drawable) { |
| return drawable.getAlpha(); |
| } |
| |
| @Override |
| public void set(Drawable drawable, Integer alpha) { |
| drawable.setAlpha(alpha); |
| } |
| }; |
| |
| public static final Property<View, Float> SCALE_PROPERTY = |
| new Property<View, Float>(Float.class, "scale") { |
| @Override |
| public Float get(View view) { |
| return view.getScaleX(); |
| } |
| |
| @Override |
| public void set(View view, Float scale) { |
| view.setScaleX(scale); |
| view.setScaleY(scale); |
| } |
| }; |
| |
| /** Increase the duration if we prevented the fling, as we are going against a high velocity. */ |
| public static int blockedFlingDurationFactor(float velocity) { |
| return (int) Utilities.boundToRange(Math.abs(velocity) / 2, 2f, 6f); |
| } |
| |
| public static final Property<LayoutParams, Integer> LAYOUT_WIDTH = |
| new Property<LayoutParams, Integer>(Integer.TYPE, "width") { |
| @Override |
| public Integer get(LayoutParams lp) { |
| return lp.width; |
| } |
| |
| @Override |
| public void set(LayoutParams lp, Integer width) { |
| lp.width = width; |
| } |
| }; |
| |
| public static final Property<LayoutParams, Integer> LAYOUT_HEIGHT = |
| new Property<LayoutParams, Integer>(Integer.TYPE, "height") { |
| @Override |
| public Integer get(LayoutParams lp) { |
| return lp.height; |
| } |
| |
| @Override |
| public void set(LayoutParams lp, Integer height) { |
| lp.height = height; |
| } |
| }; |
| |
| public static class ViewProgressProperty implements ProgressInterface { |
| View mView; |
| Property<View, Float> mProperty; |
| |
| public ViewProgressProperty(View view, Property<View, Float> property) { |
| mView = view; |
| mProperty = property; |
| } |
| |
| @Override |
| public void setProgress(float progress) { |
| mProperty.set(mView, progress); |
| } |
| |
| @Override |
| public float getProgress() { |
| return mProperty.get(mView); |
| } |
| } |
| } |