mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-02 00:36:49 +00:00
Merge "Add a way to fade out taskbar view when closing an app in the taskbar." into tm-qpr-dev
This commit is contained in:
@@ -640,7 +640,8 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
(mLauncher.getTaskbarUIController() == null || !isTransientTaskbar(mLauncher))
|
||||
? null
|
||||
: mLauncher.getTaskbarUIController().findMatchingView(v),
|
||||
!appTargetsAreTranslucent, launcherIconBounds, true /* isOpening */);
|
||||
null /* fadeOutView */, !appTargetsAreTranslucent, launcherIconBounds,
|
||||
true /* isOpening */);
|
||||
Rect crop = new Rect();
|
||||
Matrix matrix = new Matrix();
|
||||
|
||||
@@ -1355,7 +1356,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
mDeviceProfile.isMultiWindowMode ? 0 : getWindowCornerRadius(mLauncher),
|
||||
isTransluscent, fallbackBackgroundColor);
|
||||
} else if (launcherView != null) {
|
||||
floatingIconView = getFloatingIconView(mLauncher, launcherView,
|
||||
floatingIconView = getFloatingIconView(mLauncher, launcherView, null,
|
||||
mLauncher.getTaskbarUIController() == null
|
||||
? null
|
||||
: mLauncher.getTaskbarUIController().findMatchingView(launcherView),
|
||||
|
||||
@@ -105,7 +105,7 @@ public class LauncherSwipeHandlerV2 extends
|
||||
|
||||
private HomeAnimationFactory createIconHomeAnimationFactory(View workspaceView) {
|
||||
RectF iconLocation = new RectF();
|
||||
FloatingIconView floatingIconView = getFloatingIconView(mActivity, workspaceView,
|
||||
FloatingIconView floatingIconView = getFloatingIconView(mActivity, workspaceView, null,
|
||||
mActivity.getTaskbarUIController() == null
|
||||
? null
|
||||
: mActivity.getTaskbarUIController().findMatchingView(workspaceView),
|
||||
|
||||
@@ -19,6 +19,8 @@ import static android.view.Gravity.LEFT;
|
||||
|
||||
import static com.android.launcher3.Utilities.getBadge;
|
||||
import static com.android.launcher3.Utilities.getFullDrawable;
|
||||
import static com.android.launcher3.Utilities.mapToRange;
|
||||
import static com.android.launcher3.anim.Interpolators.LINEAR;
|
||||
import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
|
||||
import static com.android.launcher3.views.IconLabelDotView.setIconAndDotVisible;
|
||||
|
||||
@@ -98,6 +100,9 @@ public class FloatingIconView extends FrameLayout implements
|
||||
// A view whose visibility should update in sync with mOriginalIcon.
|
||||
private @Nullable View mMatchVisibilityView;
|
||||
|
||||
// A view that will fade out as the animation progresses.
|
||||
private @Nullable View mFadeOutView;
|
||||
|
||||
private View mOriginalIcon;
|
||||
private RectF mPositionOut;
|
||||
private Runnable mOnTargetChangeRunnable;
|
||||
@@ -156,6 +161,11 @@ public class FloatingIconView extends FrameLayout implements
|
||||
setAlpha(alpha);
|
||||
mClipIconView.update(rect, progress, shapeProgressStart, cornerRadius, isOpening, this,
|
||||
mLauncher.getDeviceProfile());
|
||||
|
||||
if (mFadeOutView != null) {
|
||||
// The alpha goes from 1 to 0 when progress is 0 and 0.33 respectively.
|
||||
mFadeOutView.setAlpha(1 - Math.min(1f, mapToRange(progress, 0, 0.33f, 0, 1, LINEAR)));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -564,14 +574,16 @@ public class FloatingIconView extends FrameLayout implements
|
||||
/**
|
||||
* Creates a floating icon view for {@param originalView}.
|
||||
* @param originalView The view to copy
|
||||
* @param secondView A view whose visibility should update in sync with originalView.
|
||||
* @param visibilitySyncView A view whose visibility should update in sync with originalView.
|
||||
* @param fadeOutView A view that will fade out as the animation progresses.
|
||||
* @param hideOriginal If true, it will hide {@param originalView} while this view is visible.
|
||||
* Else, we will not draw anything in this view.
|
||||
* @param positionOut Rect that will hold the size and position of v.
|
||||
* @param isOpening True if this view replaces the icon for app open animation.
|
||||
*/
|
||||
public static FloatingIconView getFloatingIconView(Launcher launcher, View originalView,
|
||||
@Nullable View secondView, boolean hideOriginal, RectF positionOut, boolean isOpening) {
|
||||
@Nullable View visibilitySyncView, @Nullable View fadeOutView, boolean hideOriginal,
|
||||
RectF positionOut, boolean isOpening) {
|
||||
final DragLayer dragLayer = launcher.getDragLayer();
|
||||
ViewGroup parent = (ViewGroup) dragLayer.getParent();
|
||||
FloatingIconView view = launcher.getViewCache().getView(R.layout.floating_icon_view,
|
||||
@@ -581,7 +593,8 @@ public class FloatingIconView extends FrameLayout implements
|
||||
// Init properties before getting the drawable.
|
||||
view.mIsOpening = isOpening;
|
||||
view.mOriginalIcon = originalView;
|
||||
view.mMatchVisibilityView = secondView;
|
||||
view.mMatchVisibilityView = visibilitySyncView;
|
||||
view.mFadeOutView = fadeOutView;
|
||||
view.mPositionOut = positionOut;
|
||||
|
||||
// Get the drawable on the background thread
|
||||
@@ -610,6 +623,10 @@ public class FloatingIconView extends FrameLayout implements
|
||||
view.mEndRunnable = () -> {
|
||||
view.mEndRunnable = null;
|
||||
|
||||
if (view.mFadeOutView != null) {
|
||||
view.mFadeOutView.setAlpha(1f);
|
||||
}
|
||||
|
||||
if (hideOriginal) {
|
||||
view.updateViewsVisibility(true /* isVisible */);
|
||||
view.finish(dragLayer);
|
||||
@@ -669,6 +686,8 @@ public class FloatingIconView extends FrameLayout implements
|
||||
mBtvDrawable.setBackground(null);
|
||||
mFastFinishRunnable = null;
|
||||
mIconOffsetY = 0;
|
||||
mMatchVisibilityView = null;
|
||||
mFadeOutView = null;
|
||||
}
|
||||
|
||||
private static class IconLoadResult {
|
||||
|
||||
Reference in New Issue
Block a user