mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 03:08:19 +00:00
- Add call to unregister for remote animations from the system when the launcher activity is destroyed to prevent a lingering reference from the system to the old activity. But separately, to not have to wait for the system to GC before clearing the binder ref, we also wrap all runner implementations so that they can be cleaned up after a GC in our process only. Bug: 139137636 Change-Id: Ib6276cac80b446440ec101fe00eae6ca41fdf32c
85 lines
2.6 KiB
Java
85 lines
2.6 KiB
Java
/*
|
|
* Copyright (C) 2018 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.animation.Animator;
|
|
import android.app.ActivityOptions;
|
|
import android.content.Context;
|
|
import android.graphics.Rect;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.view.View;
|
|
|
|
import com.android.launcher3.util.ResourceBasedOverride;
|
|
|
|
/**
|
|
* Manages the opening and closing app transitions from Launcher.
|
|
*/
|
|
public class LauncherAppTransitionManager implements ResourceBasedOverride {
|
|
|
|
public static LauncherAppTransitionManager newInstance(Context context) {
|
|
return Overrides.getObject(LauncherAppTransitionManager.class,
|
|
context, R.string.app_transition_manager_class);
|
|
}
|
|
|
|
public ActivityOptions getActivityLaunchOptions(Launcher launcher, View v) {
|
|
int left = 0, top = 0;
|
|
int width = v.getMeasuredWidth(), height = v.getMeasuredHeight();
|
|
if (v instanceof BubbleTextView) {
|
|
// Launch from center of icon, not entire view
|
|
Drawable icon = ((BubbleTextView) v).getIcon();
|
|
if (icon != null) {
|
|
Rect bounds = icon.getBounds();
|
|
left = (width - bounds.width()) / 2;
|
|
top = v.getPaddingTop();
|
|
width = bounds.width();
|
|
height = bounds.height();
|
|
}
|
|
}
|
|
return ActivityOptions.makeClipRevealAnimation(v, left, top, width, height);
|
|
}
|
|
|
|
public boolean supportsAdaptiveIconAnimation() {
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Number of animations which run on state properties.
|
|
*/
|
|
public int getStateElementAnimationsCount() {
|
|
return 0;
|
|
}
|
|
|
|
public Animator createStateElementAnimation(int index, float... values) {
|
|
throw new RuntimeException("Unknown gesture animation " + index);
|
|
}
|
|
|
|
/**
|
|
* Registers remote animations for certain system transitions.
|
|
*/
|
|
public void registerRemoteAnimations() {
|
|
// Do nothing
|
|
}
|
|
|
|
/**
|
|
* Unregisters all remote animations.
|
|
*/
|
|
public void unregisterRemoteAnimations() {
|
|
// Do nothing
|
|
}
|
|
}
|