Files
Lawnchair/src/com/android/launcher3/LauncherAnimUtils.java
T
Tony Wickham 4fdba14cfb Two-zone model: swipe up from nav bar vs above it
When ENABLE_OVERVIEW_ACTIONS flag is enabled, swiping up from the nav
bar goes to overview if you hold, or the first home screen if you don't.

- Added NoButtonNavBarToOverviewTouchController, which extends
  FlingAndHoldTouchController but only works if you start from the nav
  bar. Otherwise it falls back to PortraitStatesTouchController to
  handle normal state transition to all apps.
- Added HintState. This is where the workspace/hotseat/qsb scale down
  when you swipe up from the nav bar, to hint that you're about to
  either go to overview or the first home screen.
  - Added getQsbScaleAndTranslation() to allow Overview and Hint states
    to treat it as part of the hotseat.
  - Since Overview needs to show above the QSB as it's animating, bring
    Overview to the front and update OverviewScrim to handle the case
    where there's no view above Overview to draw the scrim beneath.
- ENABLE_OVERVIEW_ACTIONS is always false in 2-button mode, since the
  shelf is crucial to that mode.

Bug: 143361609
Change-Id: I743481bb239dc77f7024dc98ba68a43534da2637
2020-01-28 18:31:10 -08:00

127 lines
4.7 KiB
Java

/*
* 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 static com.android.launcher3.config.FeatureFlags.ENABLE_OVERVIEW_ACTIONS;
import android.graphics.drawable.Drawable;
import android.util.FloatProperty;
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 = ENABLE_OVERVIEW_ACTIONS.get() ? 380 : 250;
public static final int SPRING_LOADED_TRANSITION_MS = 150;
public static final int SPRING_LOADED_EXIT_DELAY = 500;
public static final int HINT_TRANSITION_MS = 80;
// 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 FloatProperty<View> SCALE_PROPERTY =
new FloatProperty<View>("scale") {
@Override
public Float get(View view) {
return view.getScaleX();
}
@Override
public void setValue(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 final FloatProperty<View> VIEW_TRANSLATE_X =
View.TRANSLATION_X instanceof FloatProperty ? (FloatProperty) View.TRANSLATION_X
: new FloatProperty<View>("translateX") {
@Override
public void setValue(View view, float v) {
view.setTranslationX(v);
}
@Override
public Float get(View view) {
return view.getTranslationX();
}
};
public static final FloatProperty<View> VIEW_TRANSLATE_Y =
View.TRANSLATION_Y instanceof FloatProperty ? (FloatProperty) View.TRANSLATION_Y
: new FloatProperty<View>("translateY") {
@Override
public void setValue(View view, float v) {
view.setTranslationY(v);
}
@Override
public Float get(View view) {
return view.getTranslationY();
}
};
}