Loading quickstep/libs/sysui_shared.jar +2.76 KiB (129 KiB) File changed.No diff preview for this file type. View original file View changed file quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java +24 −21 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ import com.android.launcher3.util.MultiValueAlpha.AlphaProperty; import com.android.quickstep.util.ClipAnimationHelper; import com.android.quickstep.util.MultiValueUpdateListener; import com.android.quickstep.util.RemoteAnimationProvider; import com.android.quickstep.util.RemoteAnimationTargetSet; import com.android.quickstep.views.RecentsView; import com.android.quickstep.views.TaskView; import com.android.systemui.shared.system.ActivityCompat; Loading @@ -79,6 +80,8 @@ import com.android.systemui.shared.system.RemoteAnimationAdapterCompat; import com.android.systemui.shared.system.RemoteAnimationDefinitionCompat; import com.android.systemui.shared.system.RemoteAnimationRunnerCompat; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplier; import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplier.SurfaceParams; import com.android.systemui.shared.system.TransactionCompat; import com.android.systemui.shared.system.WindowManagerWrapper; Loading Loading @@ -545,6 +548,13 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag Rect crop = new Rect(); Matrix matrix = new Matrix(); RemoteAnimationTargetSet openingTargets = new RemoteAnimationTargetSet(targets, MODE_OPENING); RemoteAnimationTargetSet closingTargets = new RemoteAnimationTargetSet(targets, MODE_CLOSING); SyncRtSurfaceTransactionApplier surfaceApplier = new SyncRtSurfaceTransactionApplier( mFloatingView); ValueAnimator appAnimator = ValueAnimator.ofFloat(0, 1); appAnimator.setDuration(APP_LAUNCH_DURATION); appAnimator.addUpdateListener(new MultiValueUpdateListener() { Loading @@ -554,13 +564,6 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag @Override public void onUpdate(float percent) { final Surface surface = getSurface(mFloatingView); final long frameNumber = surface != null ? getNextFrameNumber(surface) : -1; if (frameNumber == -1) { // Booo, not cool! Our surface got destroyed, so no reason to animate anything. Log.w(TAG, "Failed to animate, surface got destroyed."); return; } final float easePercent = AGGRESSIVE_EASE.getInterpolation(percent); // Calculate app icon size. Loading @@ -571,7 +574,6 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag float scaleX = iconWidth / windowTargetBounds.width(); float scaleY = iconHeight / windowTargetBounds.height(); float scale = Math.min(1f, Math.min(scaleX, scaleY)); matrix.setScale(scale, scale); // Position the scaled window on top of the icon int windowWidth = windowTargetBounds.width(); Loading @@ -588,7 +590,6 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag } float transX0 = floatingViewBounds[0] - offsetX; float transY0 = floatingViewBounds[1] - offsetY; matrix.postTranslate(transX0, transY0); // Animate the window crop so that it starts off as a square, and then reveals // horizontally. Loading @@ -599,22 +600,24 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag crop.right = windowWidth; crop.bottom = (int) (crop.top + cropHeight); TransactionCompat t = new TransactionCompat(); if (isFirstFrame) { RemoteAnimationProvider.prepareTargetsForFirstFrame(targets, t, MODE_OPENING); isFirstFrame = false; } for (RemoteAnimationTargetCompat target : targets) { if (target.mode == MODE_OPENING) { t.setAlpha(target.leash, mAlpha.value); t.setMatrix(target.leash, matrix); t.setWindowCrop(target.leash, crop); t.deferTransactionUntil(target.leash, surface, getNextFrameNumber(surface)); } } TransactionCompat t = new TransactionCompat(); RemoteAnimationProvider.prepareTargetsForFirstFrame(closingTargets.apps, t, MODE_OPENING); t.setEarlyWakeup(); t.apply(); isFirstFrame = false; } SurfaceParams[] params = new SurfaceParams[openingTargets.apps.length]; for (int i = openingTargets.apps.length - 1; i >= 0; i--) { RemoteAnimationTargetCompat target = openingTargets.apps[i]; matrix.setScale(scale, scale); matrix.postTranslate(transX0, transY0); params[i] = new SurfaceParams(target.leash, mAlpha.value, matrix, crop, RemoteAnimationProvider.getLayer(target, MODE_OPENING)); } surfaceApplier.scheduleApply(params); matrix.reset(); } }); Loading quickstep/src/com/android/quickstep/util/RemoteAnimationProvider.java +7 −4 Original line number Diff line number Diff line Loading @@ -54,11 +54,14 @@ public interface RemoteAnimationProvider { static void prepareTargetsForFirstFrame(RemoteAnimationTargetCompat[] targets, TransactionCompat t, int boostModeTargets) { for (RemoteAnimationTargetCompat target : targets) { int layer = target.mode == boostModeTargets ? Integer.MAX_VALUE : target.prefixOrderIndex; t.setLayer(target.leash, layer); t.setLayer(target.leash, getLayer(target, boostModeTargets)); t.show(target.leash); } } static int getLayer(RemoteAnimationTargetCompat target, int boostModeTarget) { return target.mode == boostModeTarget ? Integer.MAX_VALUE : target.prefixOrderIndex; } } Loading
quickstep/libs/sysui_shared.jar +2.76 KiB (129 KiB) File changed.No diff preview for this file type. View original file View changed file
quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java +24 −21 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ import com.android.launcher3.util.MultiValueAlpha.AlphaProperty; import com.android.quickstep.util.ClipAnimationHelper; import com.android.quickstep.util.MultiValueUpdateListener; import com.android.quickstep.util.RemoteAnimationProvider; import com.android.quickstep.util.RemoteAnimationTargetSet; import com.android.quickstep.views.RecentsView; import com.android.quickstep.views.TaskView; import com.android.systemui.shared.system.ActivityCompat; Loading @@ -79,6 +80,8 @@ import com.android.systemui.shared.system.RemoteAnimationAdapterCompat; import com.android.systemui.shared.system.RemoteAnimationDefinitionCompat; import com.android.systemui.shared.system.RemoteAnimationRunnerCompat; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplier; import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplier.SurfaceParams; import com.android.systemui.shared.system.TransactionCompat; import com.android.systemui.shared.system.WindowManagerWrapper; Loading Loading @@ -545,6 +548,13 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag Rect crop = new Rect(); Matrix matrix = new Matrix(); RemoteAnimationTargetSet openingTargets = new RemoteAnimationTargetSet(targets, MODE_OPENING); RemoteAnimationTargetSet closingTargets = new RemoteAnimationTargetSet(targets, MODE_CLOSING); SyncRtSurfaceTransactionApplier surfaceApplier = new SyncRtSurfaceTransactionApplier( mFloatingView); ValueAnimator appAnimator = ValueAnimator.ofFloat(0, 1); appAnimator.setDuration(APP_LAUNCH_DURATION); appAnimator.addUpdateListener(new MultiValueUpdateListener() { Loading @@ -554,13 +564,6 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag @Override public void onUpdate(float percent) { final Surface surface = getSurface(mFloatingView); final long frameNumber = surface != null ? getNextFrameNumber(surface) : -1; if (frameNumber == -1) { // Booo, not cool! Our surface got destroyed, so no reason to animate anything. Log.w(TAG, "Failed to animate, surface got destroyed."); return; } final float easePercent = AGGRESSIVE_EASE.getInterpolation(percent); // Calculate app icon size. Loading @@ -571,7 +574,6 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag float scaleX = iconWidth / windowTargetBounds.width(); float scaleY = iconHeight / windowTargetBounds.height(); float scale = Math.min(1f, Math.min(scaleX, scaleY)); matrix.setScale(scale, scale); // Position the scaled window on top of the icon int windowWidth = windowTargetBounds.width(); Loading @@ -588,7 +590,6 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag } float transX0 = floatingViewBounds[0] - offsetX; float transY0 = floatingViewBounds[1] - offsetY; matrix.postTranslate(transX0, transY0); // Animate the window crop so that it starts off as a square, and then reveals // horizontally. Loading @@ -599,22 +600,24 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag crop.right = windowWidth; crop.bottom = (int) (crop.top + cropHeight); TransactionCompat t = new TransactionCompat(); if (isFirstFrame) { RemoteAnimationProvider.prepareTargetsForFirstFrame(targets, t, MODE_OPENING); isFirstFrame = false; } for (RemoteAnimationTargetCompat target : targets) { if (target.mode == MODE_OPENING) { t.setAlpha(target.leash, mAlpha.value); t.setMatrix(target.leash, matrix); t.setWindowCrop(target.leash, crop); t.deferTransactionUntil(target.leash, surface, getNextFrameNumber(surface)); } } TransactionCompat t = new TransactionCompat(); RemoteAnimationProvider.prepareTargetsForFirstFrame(closingTargets.apps, t, MODE_OPENING); t.setEarlyWakeup(); t.apply(); isFirstFrame = false; } SurfaceParams[] params = new SurfaceParams[openingTargets.apps.length]; for (int i = openingTargets.apps.length - 1; i >= 0; i--) { RemoteAnimationTargetCompat target = openingTargets.apps[i]; matrix.setScale(scale, scale); matrix.postTranslate(transX0, transY0); params[i] = new SurfaceParams(target.leash, mAlpha.value, matrix, crop, RemoteAnimationProvider.getLayer(target, MODE_OPENING)); } surfaceApplier.scheduleApply(params); matrix.reset(); } }); Loading
quickstep/src/com/android/quickstep/util/RemoteAnimationProvider.java +7 −4 Original line number Diff line number Diff line Loading @@ -54,11 +54,14 @@ public interface RemoteAnimationProvider { static void prepareTargetsForFirstFrame(RemoteAnimationTargetCompat[] targets, TransactionCompat t, int boostModeTargets) { for (RemoteAnimationTargetCompat target : targets) { int layer = target.mode == boostModeTargets ? Integer.MAX_VALUE : target.prefixOrderIndex; t.setLayer(target.leash, layer); t.setLayer(target.leash, getLayer(target, boostModeTargets)); t.show(target.leash); } } static int getLayer(RemoteAnimationTargetCompat target, int boostModeTarget) { return target.mode == boostModeTarget ? Integer.MAX_VALUE : target.prefixOrderIndex; } }