Loading packages/SystemUI/src/com/android/systemui/recents/SystemServicesProxy.java +30 −4 Original line number Diff line number Diff line Loading @@ -30,18 +30,21 @@ import android.content.pm.ActivityInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.Matrix; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.util.DisplayMetrics; import android.util.Log; import android.util.Pair; import android.view.Display; import android.view.DisplayInfo; import android.view.Surface; import android.view.SurfaceControl; import android.view.WindowManager; Loading @@ -55,6 +58,8 @@ import java.util.Random; * a point of injection when testing UI. */ public class SystemServicesProxy { final static String TAG = "SystemServicesProxy"; ActivityManager mAm; AppWidgetManager mAwm; PackageManager mPm; Loading @@ -67,6 +72,8 @@ public class SystemServicesProxy { ComponentName mAssistComponent; Bitmap mDummyIcon; Paint mBgProtectionPaint; Canvas mBgProtectionCanvas; /** Private constructor */ public SystemServicesProxy(Context context) { Loading @@ -80,6 +87,12 @@ public class SystemServicesProxy { mDisplay = mWm.getDefaultDisplay(); mRecentsPackage = context.getPackageName(); // Create the protection paints mBgProtectionPaint = new Paint(); mBgProtectionPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_ATOP)); mBgProtectionPaint.setColor(0xFFffffff); mBgProtectionCanvas = new Canvas(); // Resolve the assist intent Intent assist = mSm.getAssistIntent(context, false); if (assist != null) { Loading Loading @@ -195,7 +208,20 @@ public class SystemServicesProxy { return thumbnail; } return mAm.getTaskTopThumbnail(taskId); Bitmap thumbnail = mAm.getTaskTopThumbnail(taskId); if (thumbnail != null) { // We use a dumb heuristic for now, if the thumbnail is purely transparent in the top // left pixel, then assume the whole thumbnail is transparent. Generally, proper // screenshots are always composed onto a bitmap that has no alpha. if (Color.alpha(thumbnail.getPixel(0, 0)) == 0) { mBgProtectionCanvas.setBitmap(thumbnail); mBgProtectionCanvas.drawRect(0, 0, thumbnail.getWidth(), thumbnail.getHeight(), mBgProtectionPaint); mBgProtectionCanvas.setBitmap(null); Log.e(TAG, "Invalid screenshot detected from getTaskThumbnail()"); } } return thumbnail; } /** Moves a task to the front with the specified activity options */ Loading packages/SystemUI/src/com/android/systemui/recents/views/TaskBarView.java +12 −11 Original line number Diff line number Diff line Loading @@ -22,10 +22,10 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.View; import android.view.ViewPropertyAnimator; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; Loading Loading @@ -103,23 +103,26 @@ class TaskBarView extends FrameLayout { } /** Synchronizes this bar view's properties with the task's transform */ void updateViewPropertiesToTaskTransform(TaskViewTransform animateFromTransform, TaskViewTransform toTransform, int duration) { void updateViewPropertiesToTaskTransform(TaskViewTransform toTransform, int duration) { if (duration > 0 && (mDismissButton.getVisibility() == View.VISIBLE)) { if (animateFromTransform != null) { mDismissButton.setAlpha(animateFromTransform.dismissAlpha); } mDismissButton.animate() .alpha(toTransform.dismissAlpha) ViewPropertyAnimator anim = mDismissButton.animate(); // Animate to the final state if (toTransform.hasDismissAlphaChangedFrom(mDismissButton.getAlpha())) { anim.alpha(toTransform.dismissAlpha) .setStartDelay(0) .setDuration(duration) .setInterpolator(mConfig.fastOutSlowInInterpolator) .withLayer() .start(); } } else { // Set the changed properties if (toTransform.hasDismissAlphaChangedFrom(mDismissButton.getAlpha())) { mDismissButton.setAlpha(toTransform.dismissAlpha); } } } /** Binds the bar view to the task */ void rebindToTask(Task t, boolean animate) { Loading Loading @@ -169,7 +172,6 @@ class TaskBarView extends FrameLayout { .setStartDelay(delay) .setInterpolator(mConfig.fastOutSlowInInterpolator) .setDuration(mConfig.taskBarEnterAnimDuration) .withLayer() .withEndAction(postAnimRunnable) .start(); } Loading @@ -182,7 +184,6 @@ class TaskBarView extends FrameLayout { .setStartDelay(0) .setInterpolator(mConfig.fastOutLinearInInterpolator) .setDuration(mConfig.taskBarExitAnimDuration) .withLayer() .withStartAction(preAnimRunnable) .withEndAction(new Runnable() { @Override Loading packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java +5 −5 Original line number Diff line number Diff line Loading @@ -322,7 +322,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal if (mStackViewsAnimationDuration > 0 && i != 0) { int fromIndex = (transform.t < 0) ? (visibleRange[0] - 1) : (visibleRange[1] + 1); tv.updateViewPropertiesToTaskTransform(null, tv.updateViewPropertiesToTaskTransform( getStackTransform(fromIndex, stackScroll), 0); } } Loading @@ -343,7 +343,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal if (taskIndex < 0 || !mTaskTransforms.get(taskIndex).visible) { mViewPool.returnViewToPool(tv); } else { tv.updateViewPropertiesToTaskTransform(null, mTaskTransforms.get(taskIndex), tv.updateViewPropertiesToTaskTransform(mTaskTransforms.get(taskIndex), mStackViewsAnimationDuration); } } Loading Loading @@ -996,7 +996,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal // Compose a new transform to fade and slide the new task in TaskViewTransform fromTransform = new TaskViewTransform(toTransform); tv.prepareTaskTransformForFilterTaskHidden(fromTransform); tv.updateViewPropertiesToTaskTransform(null, fromTransform, 0); tv.updateViewPropertiesToTaskTransform(fromTransform, 0); int startDelay = offset * Constants.Values.TaskStackView.FilterStartDelay; Loading Loading @@ -1059,13 +1059,13 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal for (final TaskView tv : childViewTransforms.keySet()) { Pair<Integer, TaskViewTransform> t = childViewTransforms.get(tv); tv.animate().setStartDelay(t.first); tv.updateViewPropertiesToTaskTransform(null, t.second, duration); tv.updateViewPropertiesToTaskTransform(t.second, duration); } } } } }); tv.updateViewPropertiesToTaskTransform(null, t.second, duration); tv.updateViewPropertiesToTaskTransform(t.second, duration); } } Loading packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java +48 −29 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.graphics.RectF; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.ViewPropertyAnimator; import android.view.animation.AccelerateInterpolator; import android.widget.FrameLayout; import com.android.systemui.R; Loading Loading @@ -163,50 +164,64 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, View.On } /** Synchronizes this view's properties with the task's transform */ void updateViewPropertiesToTaskTransform(TaskViewTransform animateFromTransform, TaskViewTransform toTransform, int duration) { void updateViewPropertiesToTaskTransform(TaskViewTransform toTransform, int duration) { if (Console.Enabled) { Console.log(Constants.Log.UI.Draw, "[TaskView|updateViewPropertiesToTaskTransform]", "duration: " + duration, Console.AnsiPurple); } // Update the bar view mBarView.updateViewPropertiesToTaskTransform(animateFromTransform, toTransform, duration); mBarView.updateViewPropertiesToTaskTransform(toTransform, duration); // Update this task view // Check to see if any properties have changed, and update the task view if (duration > 0) { if (animateFromTransform != null) { setTranslationY(animateFromTransform.translationY); if (Constants.DebugFlags.App.EnableShadows) { setTranslationZ(animateFromTransform.translationZ); } setScaleX(animateFromTransform.scale); setScaleY(animateFromTransform.scale); setAlpha(animateFromTransform.alpha); ViewPropertyAnimator anim = animate(); boolean useLayers = false; // Animate to the final state if (toTransform.hasTranslationYChangedFrom(getTranslationY())) { anim.translationY(toTransform.translationY); } if (Constants.DebugFlags.App.EnableShadows) { animate().translationZ(toTransform.translationZ); if (Constants.DebugFlags.App.EnableShadows && toTransform.hasTranslationZChangedFrom(getTranslationZ())) { anim.translationZ(toTransform.translationZ); } animate().translationY(toTransform.translationY) .scaleX(toTransform.scale) if (toTransform.hasScaleChangedFrom(getScaleX())) { anim.scaleX(toTransform.scale) .scaleY(toTransform.scale) .alpha(toTransform.alpha) .setStartDelay(0) .setUpdateListener(mUpdateDimListener); useLayers = true; } if (toTransform.hasAlphaChangedFrom(getAlpha())) { // Use layers if we animate alpha anim.alpha(toTransform.alpha); useLayers = true; } if (useLayers) { anim.withLayer(); } anim.setStartDelay(0) .setDuration(duration) .setInterpolator(mConfig.fastOutSlowInInterpolator) .setUpdateListener(mUpdateDimListener) .start(); } else { // Set the changed properties if (toTransform.hasTranslationYChangedFrom(getTranslationY())) { setTranslationY(toTransform.translationY); if (Constants.DebugFlags.App.EnableShadows) { } if (Constants.DebugFlags.App.EnableShadows && toTransform.hasTranslationZChangedFrom(getTranslationZ())) { setTranslationZ(toTransform.translationZ); } if (toTransform.hasScaleChangedFrom(getScaleX())) { setScaleX(toTransform.scale); setScaleY(toTransform.scale); updateDimOverlayFromScale(); } if (toTransform.hasAlphaChangedFrom(getAlpha())) { setAlpha(toTransform.alpha); } updateDimOverlayFromScale(); invalidate(); } } /** Resets this view's properties */ Loading Loading @@ -298,6 +313,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, View.On .scaleY(transform.scale) .translationY(transform.translationY) .setStartDelay(0) .setUpdateListener(null) .setInterpolator(mConfig.linearOutSlowInInterpolator) .setDuration(475) .withLayer() Loading Loading @@ -330,6 +346,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, View.On .scaleY(transform.scale) .translationY(transform.translationY) .setStartDelay(delay) .setUpdateListener(null) .setInterpolator(mConfig.quintOutInterpolator) .setDuration(mConfig.taskViewEnterFromHomeDuration) .withLayer() Loading @@ -343,6 +360,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, View.On animate() .translationY(ctx.offscreenTranslationY) .setStartDelay(0) .setUpdateListener(null) .setInterpolator(mConfig.fastOutLinearInInterpolator) .setDuration(mConfig.taskViewExitToHomeDuration) .withLayer() Loading Loading @@ -383,6 +401,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, View.On animate().translationX(mConfig.taskViewRemoveAnimTranslationXPx) .alpha(0f) .setStartDelay(0) .setUpdateListener(null) .setInterpolator(mConfig.fastOutSlowInInterpolator) .setDuration(mConfig.taskViewRemoveAnimDuration) .withLayer() Loading packages/SystemUI/src/com/android/systemui/recents/views/TaskViewTransform.java +17 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,23 @@ public class TaskViewTransform { t = o.t; } /** Convenience functions to compare against current property values */ public boolean hasAlphaChangedFrom(float v) { return (Float.compare(alpha, v) != 0); } public boolean hasDismissAlphaChangedFrom(float v) { return (Float.compare(dismissAlpha, v) != 0); } public boolean hasScaleChangedFrom(float v) { return (Float.compare(scale, v) != 0); } public boolean hasTranslationYChangedFrom(float v) { return (Float.compare(translationY, v) != 0); } public boolean hasTranslationZChangedFrom(float v) { return (Float.compare(translationZ, v) != 0); } @Override public String toString() { return "TaskViewTransform y: " + translationY + " z: " + translationZ + " scale: " + scale + Loading Loading
packages/SystemUI/src/com/android/systemui/recents/SystemServicesProxy.java +30 −4 Original line number Diff line number Diff line Loading @@ -30,18 +30,21 @@ import android.content.pm.ActivityInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.Matrix; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.util.DisplayMetrics; import android.util.Log; import android.util.Pair; import android.view.Display; import android.view.DisplayInfo; import android.view.Surface; import android.view.SurfaceControl; import android.view.WindowManager; Loading @@ -55,6 +58,8 @@ import java.util.Random; * a point of injection when testing UI. */ public class SystemServicesProxy { final static String TAG = "SystemServicesProxy"; ActivityManager mAm; AppWidgetManager mAwm; PackageManager mPm; Loading @@ -67,6 +72,8 @@ public class SystemServicesProxy { ComponentName mAssistComponent; Bitmap mDummyIcon; Paint mBgProtectionPaint; Canvas mBgProtectionCanvas; /** Private constructor */ public SystemServicesProxy(Context context) { Loading @@ -80,6 +87,12 @@ public class SystemServicesProxy { mDisplay = mWm.getDefaultDisplay(); mRecentsPackage = context.getPackageName(); // Create the protection paints mBgProtectionPaint = new Paint(); mBgProtectionPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_ATOP)); mBgProtectionPaint.setColor(0xFFffffff); mBgProtectionCanvas = new Canvas(); // Resolve the assist intent Intent assist = mSm.getAssistIntent(context, false); if (assist != null) { Loading Loading @@ -195,7 +208,20 @@ public class SystemServicesProxy { return thumbnail; } return mAm.getTaskTopThumbnail(taskId); Bitmap thumbnail = mAm.getTaskTopThumbnail(taskId); if (thumbnail != null) { // We use a dumb heuristic for now, if the thumbnail is purely transparent in the top // left pixel, then assume the whole thumbnail is transparent. Generally, proper // screenshots are always composed onto a bitmap that has no alpha. if (Color.alpha(thumbnail.getPixel(0, 0)) == 0) { mBgProtectionCanvas.setBitmap(thumbnail); mBgProtectionCanvas.drawRect(0, 0, thumbnail.getWidth(), thumbnail.getHeight(), mBgProtectionPaint); mBgProtectionCanvas.setBitmap(null); Log.e(TAG, "Invalid screenshot detected from getTaskThumbnail()"); } } return thumbnail; } /** Moves a task to the front with the specified activity options */ Loading
packages/SystemUI/src/com/android/systemui/recents/views/TaskBarView.java +12 −11 Original line number Diff line number Diff line Loading @@ -22,10 +22,10 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.View; import android.view.ViewPropertyAnimator; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; Loading Loading @@ -103,23 +103,26 @@ class TaskBarView extends FrameLayout { } /** Synchronizes this bar view's properties with the task's transform */ void updateViewPropertiesToTaskTransform(TaskViewTransform animateFromTransform, TaskViewTransform toTransform, int duration) { void updateViewPropertiesToTaskTransform(TaskViewTransform toTransform, int duration) { if (duration > 0 && (mDismissButton.getVisibility() == View.VISIBLE)) { if (animateFromTransform != null) { mDismissButton.setAlpha(animateFromTransform.dismissAlpha); } mDismissButton.animate() .alpha(toTransform.dismissAlpha) ViewPropertyAnimator anim = mDismissButton.animate(); // Animate to the final state if (toTransform.hasDismissAlphaChangedFrom(mDismissButton.getAlpha())) { anim.alpha(toTransform.dismissAlpha) .setStartDelay(0) .setDuration(duration) .setInterpolator(mConfig.fastOutSlowInInterpolator) .withLayer() .start(); } } else { // Set the changed properties if (toTransform.hasDismissAlphaChangedFrom(mDismissButton.getAlpha())) { mDismissButton.setAlpha(toTransform.dismissAlpha); } } } /** Binds the bar view to the task */ void rebindToTask(Task t, boolean animate) { Loading Loading @@ -169,7 +172,6 @@ class TaskBarView extends FrameLayout { .setStartDelay(delay) .setInterpolator(mConfig.fastOutSlowInInterpolator) .setDuration(mConfig.taskBarEnterAnimDuration) .withLayer() .withEndAction(postAnimRunnable) .start(); } Loading @@ -182,7 +184,6 @@ class TaskBarView extends FrameLayout { .setStartDelay(0) .setInterpolator(mConfig.fastOutLinearInInterpolator) .setDuration(mConfig.taskBarExitAnimDuration) .withLayer() .withStartAction(preAnimRunnable) .withEndAction(new Runnable() { @Override Loading
packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java +5 −5 Original line number Diff line number Diff line Loading @@ -322,7 +322,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal if (mStackViewsAnimationDuration > 0 && i != 0) { int fromIndex = (transform.t < 0) ? (visibleRange[0] - 1) : (visibleRange[1] + 1); tv.updateViewPropertiesToTaskTransform(null, tv.updateViewPropertiesToTaskTransform( getStackTransform(fromIndex, stackScroll), 0); } } Loading @@ -343,7 +343,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal if (taskIndex < 0 || !mTaskTransforms.get(taskIndex).visible) { mViewPool.returnViewToPool(tv); } else { tv.updateViewPropertiesToTaskTransform(null, mTaskTransforms.get(taskIndex), tv.updateViewPropertiesToTaskTransform(mTaskTransforms.get(taskIndex), mStackViewsAnimationDuration); } } Loading Loading @@ -996,7 +996,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal // Compose a new transform to fade and slide the new task in TaskViewTransform fromTransform = new TaskViewTransform(toTransform); tv.prepareTaskTransformForFilterTaskHidden(fromTransform); tv.updateViewPropertiesToTaskTransform(null, fromTransform, 0); tv.updateViewPropertiesToTaskTransform(fromTransform, 0); int startDelay = offset * Constants.Values.TaskStackView.FilterStartDelay; Loading Loading @@ -1059,13 +1059,13 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal for (final TaskView tv : childViewTransforms.keySet()) { Pair<Integer, TaskViewTransform> t = childViewTransforms.get(tv); tv.animate().setStartDelay(t.first); tv.updateViewPropertiesToTaskTransform(null, t.second, duration); tv.updateViewPropertiesToTaskTransform(t.second, duration); } } } } }); tv.updateViewPropertiesToTaskTransform(null, t.second, duration); tv.updateViewPropertiesToTaskTransform(t.second, duration); } } Loading
packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java +48 −29 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.graphics.RectF; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.ViewPropertyAnimator; import android.view.animation.AccelerateInterpolator; import android.widget.FrameLayout; import com.android.systemui.R; Loading Loading @@ -163,50 +164,64 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, View.On } /** Synchronizes this view's properties with the task's transform */ void updateViewPropertiesToTaskTransform(TaskViewTransform animateFromTransform, TaskViewTransform toTransform, int duration) { void updateViewPropertiesToTaskTransform(TaskViewTransform toTransform, int duration) { if (Console.Enabled) { Console.log(Constants.Log.UI.Draw, "[TaskView|updateViewPropertiesToTaskTransform]", "duration: " + duration, Console.AnsiPurple); } // Update the bar view mBarView.updateViewPropertiesToTaskTransform(animateFromTransform, toTransform, duration); mBarView.updateViewPropertiesToTaskTransform(toTransform, duration); // Update this task view // Check to see if any properties have changed, and update the task view if (duration > 0) { if (animateFromTransform != null) { setTranslationY(animateFromTransform.translationY); if (Constants.DebugFlags.App.EnableShadows) { setTranslationZ(animateFromTransform.translationZ); } setScaleX(animateFromTransform.scale); setScaleY(animateFromTransform.scale); setAlpha(animateFromTransform.alpha); ViewPropertyAnimator anim = animate(); boolean useLayers = false; // Animate to the final state if (toTransform.hasTranslationYChangedFrom(getTranslationY())) { anim.translationY(toTransform.translationY); } if (Constants.DebugFlags.App.EnableShadows) { animate().translationZ(toTransform.translationZ); if (Constants.DebugFlags.App.EnableShadows && toTransform.hasTranslationZChangedFrom(getTranslationZ())) { anim.translationZ(toTransform.translationZ); } animate().translationY(toTransform.translationY) .scaleX(toTransform.scale) if (toTransform.hasScaleChangedFrom(getScaleX())) { anim.scaleX(toTransform.scale) .scaleY(toTransform.scale) .alpha(toTransform.alpha) .setStartDelay(0) .setUpdateListener(mUpdateDimListener); useLayers = true; } if (toTransform.hasAlphaChangedFrom(getAlpha())) { // Use layers if we animate alpha anim.alpha(toTransform.alpha); useLayers = true; } if (useLayers) { anim.withLayer(); } anim.setStartDelay(0) .setDuration(duration) .setInterpolator(mConfig.fastOutSlowInInterpolator) .setUpdateListener(mUpdateDimListener) .start(); } else { // Set the changed properties if (toTransform.hasTranslationYChangedFrom(getTranslationY())) { setTranslationY(toTransform.translationY); if (Constants.DebugFlags.App.EnableShadows) { } if (Constants.DebugFlags.App.EnableShadows && toTransform.hasTranslationZChangedFrom(getTranslationZ())) { setTranslationZ(toTransform.translationZ); } if (toTransform.hasScaleChangedFrom(getScaleX())) { setScaleX(toTransform.scale); setScaleY(toTransform.scale); updateDimOverlayFromScale(); } if (toTransform.hasAlphaChangedFrom(getAlpha())) { setAlpha(toTransform.alpha); } updateDimOverlayFromScale(); invalidate(); } } /** Resets this view's properties */ Loading Loading @@ -298,6 +313,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, View.On .scaleY(transform.scale) .translationY(transform.translationY) .setStartDelay(0) .setUpdateListener(null) .setInterpolator(mConfig.linearOutSlowInInterpolator) .setDuration(475) .withLayer() Loading Loading @@ -330,6 +346,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, View.On .scaleY(transform.scale) .translationY(transform.translationY) .setStartDelay(delay) .setUpdateListener(null) .setInterpolator(mConfig.quintOutInterpolator) .setDuration(mConfig.taskViewEnterFromHomeDuration) .withLayer() Loading @@ -343,6 +360,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, View.On animate() .translationY(ctx.offscreenTranslationY) .setStartDelay(0) .setUpdateListener(null) .setInterpolator(mConfig.fastOutLinearInInterpolator) .setDuration(mConfig.taskViewExitToHomeDuration) .withLayer() Loading Loading @@ -383,6 +401,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks, View.On animate().translationX(mConfig.taskViewRemoveAnimTranslationXPx) .alpha(0f) .setStartDelay(0) .setUpdateListener(null) .setInterpolator(mConfig.fastOutSlowInInterpolator) .setDuration(mConfig.taskViewRemoveAnimDuration) .withLayer() Loading
packages/SystemUI/src/com/android/systemui/recents/views/TaskViewTransform.java +17 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,23 @@ public class TaskViewTransform { t = o.t; } /** Convenience functions to compare against current property values */ public boolean hasAlphaChangedFrom(float v) { return (Float.compare(alpha, v) != 0); } public boolean hasDismissAlphaChangedFrom(float v) { return (Float.compare(dismissAlpha, v) != 0); } public boolean hasScaleChangedFrom(float v) { return (Float.compare(scale, v) != 0); } public boolean hasTranslationYChangedFrom(float v) { return (Float.compare(translationY, v) != 0); } public boolean hasTranslationZChangedFrom(float v) { return (Float.compare(translationZ, v) != 0); } @Override public String toString() { return "TaskViewTransform y: " + translationY + " z: " + translationZ + " scale: " + scale + Loading