Merge "Tweaking animation XMLs and removing dead code. (Bug 17672056, Bug 18415217)" into lmp-mr1-dev

This commit is contained in:
Winson Chung
2014-11-18 20:10:03 +00:00
committed by Android (Google) Code Review
23 changed files with 134 additions and 109 deletions

View File

@@ -16,7 +16,7 @@
** limitations under the License.
*/
-->
<!-- Recents Activity -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false"
android:zAdjustment="top">

View File

@@ -16,7 +16,7 @@
** limitations under the License.
*/
-->
<!-- Incoming Activity -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false"
android:zAdjustment="normal">

View File

@@ -16,13 +16,13 @@
** limitations under the License.
*/
-->
<!-- Recents Activity -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false"
android:zAdjustment="normal">
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:fillEnabled="true"
android:fillBefore="true" android:fillAfter="true"
android:interpolator="@android:interpolator/linear"
android:duration="50"/>
android:duration="1"/>
</set>

View File

@@ -16,14 +16,13 @@
** limitations under the License.
*/
-->
<!-- Launcher Activity -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false"
android:zAdjustment="top">
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
android:startOffset="50"
android:fillEnabled="true"
android:fillBefore="true" android:fillAfter="true"
android:interpolator="@android:interpolator/linear_out_slow_in"
android:duration="100"/>
android:duration="@integer/recents_enter_from_home_transition_duration"/>
</set>

View File

@@ -16,7 +16,7 @@
** limitations under the License.
*/
-->
<!-- Launcher Activity -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false"
android:zAdjustment="normal">

View File

@@ -16,14 +16,13 @@
** limitations under the License.
*/
-->
<!-- Recents Activity -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false"
android:zAdjustment="top">
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
android:startOffset="100"
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:fillEnabled="true"
android:fillBefore="true" android:fillAfter="true"
android:interpolator="@android:interpolator/linear"
android:duration="50"/>
android:duration="100"/>
</set>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

View File

@@ -16,5 +16,11 @@
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#ff9cdfd9">
<item android:drawable="@drawable/btn_fab_recents" />
<item>
<shape android:shape="oval">
<solid android:color="#9cc8c4" />
<size android:width="@dimen/recents_lock_to_app_size"
android:height="@dimen/recents_lock_to_app_size" />
</shape>
</item>
</ripple>

View File

@@ -29,8 +29,8 @@
<include layout="@layout/recents_task_view_header" />
<FrameLayout
android:id="@+id/lock_to_app_fab"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_width="@dimen/recents_lock_to_app_size"
android:layout_height="@dimen/recents_lock_to_app_size"
android:layout_gravity="bottom|right"
android:layout_marginRight="15dp"
android:layout_marginBottom="15dp"
@@ -38,8 +38,8 @@
android:contentDescription="@string/recents_lock_to_app_button_label"
android:background="@drawable/recents_lock_to_task_button_bg">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_width="@dimen/recents_lock_to_app_icon_size"
android:layout_height="@dimen/recents_lock_to_app_icon_size"
android:layout_gravity="center"
android:src="@drawable/recents_lock_to_app_pin" />
</FrameLayout>

View File

@@ -144,42 +144,61 @@
<!-- The duration in seconds to wait before the dismiss buttons are shown. -->
<integer name="recents_task_bar_dismiss_delay_seconds">1</integer>
<!-- The min animation duration for animating views that are currently visible. -->
<integer name="recents_filter_animate_current_views_duration">250</integer>
<!-- The min animation duration for animating views that are newly visible. -->
<integer name="recents_filter_animate_new_views_duration">250</integer>
<!-- The min animation duration for animating the task bar in. -->
<integer name="recents_animate_task_bar_enter_duration">225</integer>
<!-- The animation delay for animating the first task in. This should roughly be the animation
duration of the transition in to recents. -->
<integer name="recents_animate_task_bar_enter_delay">275</integer>
<!-- The min animation duration for animating the task bar out. -->
<integer name="recents_animate_task_exit_to_home_duration">225</integer>
<!-- The min animation duration for animating the task bar out. -->
<integer name="recents_animate_task_bar_exit_duration">125</integer>
<!-- The animation delay for animating the first task in. This should roughly be the animation
duration of the transition in to recents from home. -->
<integer name="recents_animate_task_enter_from_home_delay">150</integer>
<!-- The min animation duration for animating the task in when transitioning from home. -->
<integer name="recents_animate_task_enter_from_home_duration">250</integer>
<!-- The animation stagger to apply to each task animation when transitioning from home. -->
<integer name="recents_animate_task_enter_from_home_stagger_delay">12</integer>
<!-- The short duration when animating in/out the lock to app button. -->
<integer name="recents_animate_lock_to_app_button_short_duration">150</integer>
<!-- The long duration when animating in/out the lock to app button. -->
<integer name="recents_animate_lock_to_app_button_long_duration">300</integer>
<!-- The duration of the window transition when coming to Recents from an app.
In order to defer the in-app animations until after the transition is complete,
we also need to use this value as the starting delay when animating the first
task decorations in. -->
<integer name="recents_enter_from_app_transition_duration">325</integer>
<!-- The duration for animating the task decorations in after transitioning from an app. -->
<integer name="recents_task_enter_from_app_duration">200</integer>
<!-- The duration for animating the task decorations out before transitioning to an app. -->
<integer name="recents_task_exit_to_app_duration">125</integer>
<!-- The duration of the window transition when coming to Recents from the Launcher.
In order to defer the in-app animations until after the transition is complete,
we also need to use this value as the starting delay when animating the task views
in from the bottom of the screen. -->
<integer name="recents_enter_from_home_transition_duration">100</integer>
<!-- The duration for animating the task from the bottom of the screen when transitioning
from home. -->
<integer name="recents_task_enter_from_home_duration">225</integer>
<!-- The stagger for each task when animating the task from the bottom of the screen when
transitioning from home. -->
<integer name="recents_task_enter_from_home_stagger_delay">12</integer>
<!-- The duration of the animation of the tasks to the bottom of the screen when leaving
Recents to go back to the Launcher. -->
<integer name="recents_task_exit_to_home_duration">225</integer>
<!-- The min animation duration for animating the nav bar scrim in. -->
<integer name="recents_nav_bar_scrim_enter_duration">400</integer>
<!-- The animation duration for animating the removal of a task view. -->
<integer name="recents_animate_task_view_remove_duration">250</integer>
<!-- The animation duration for scrolling the stack to a particular item. -->
<integer name="recents_animate_task_stack_scroll_duration">225</integer>
<!-- The minimum alpha for the dim applied to cards that go deeper into the stack. -->
<integer name="recents_max_task_stack_view_dim">96</integer>
<!-- The delay to enforce between each alt-tab key press. -->
<integer name="recents_alt_tab_key_delay">200</integer>
<!-- Transposes the search bar layout in landscape. -->
<bool name="recents_has_transposed_search_bar">true</bool>
<!-- Transposes the nav bar in landscape (only used for purposes of layout). -->
<bool name="recents_has_transposed_nav_bar">true</bool>
<!-- Svelte specific logic, see RecentsConfiguration.SVELTE_* constants. -->

View File

@@ -226,9 +226,6 @@
<!-- The amount of highlight to make on each task view. -->
<dimen name="recents_task_view_highlight">1.5dp</dimen>
<!-- The height of the lock-to-app button. -->
<dimen name="recents_task_view_lock_to_app_button_height">48dp</dimen>
<!-- The amount to offset when animating into an affiliate group. -->
<dimen name="recents_task_view_affiliate_group_enter_offset">64dp</dimen>
@@ -257,6 +254,12 @@
<!-- The min alpha to apply to a task affiliation group color. -->
<item name="recents_task_affiliation_color_min_alpha_percentage" format="float" type="dimen">0.6</item>
<!-- The size of the lock-to-app button. -->
<dimen name="recents_lock_to_app_size">56dp</dimen>
<!-- The size of the lock-to-app button icon. -->
<dimen name="recents_lock_to_app_icon_size">28dp</dimen>
<!-- Space reserved for the cards behind the top card in the top stack -->
<dimen name="top_stack_peek_amount">12dp</dimen>

View File

@@ -431,8 +431,6 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
// Update if we are getting a configuration change
if (savedInstanceState != null) {
// Update RecentsConfiguration
mConfig = RecentsConfiguration.reinitialize(this,
RecentsTaskLoader.getInstance().getSystemServicesProxy());
mConfig.updateOnConfigurationChange();
// Trigger the enter animation
onEnterAnimationTriggered();

View File

@@ -86,11 +86,15 @@ public class RecentsConfiguration {
public float taskStackWidthPaddingPct;
public float taskStackOverscrollPct;
/** Transitions */
public int transitionEnterFromAppDelay;
public int transitionEnterFromHomeDelay;
/** Task view animation and styles */
public int taskViewEnterFromHomeDelay;
public int taskViewEnterFromAppDuration;
public int taskViewEnterFromHomeDuration;
public int taskViewEnterFromHomeStaggerDelay;
public int taskViewEnterFromHomeStaggerDuration;
public int taskViewExitToAppDuration;
public int taskViewExitToHomeDuration;
public int taskViewRemoveAnimDuration;
public int taskViewRemoveAnimTranslationXPx;
@@ -110,16 +114,8 @@ public class RecentsConfiguration {
/** Task bar size & animations */
public int taskBarHeight;
public int taskBarEnterAnimDuration;
public int taskBarEnterAnimDelay;
public int taskBarExitAnimDuration;
public int taskBarDismissDozeDelaySeconds;
/** Lock to app */
public int taskViewLockToAppButtonHeight;
public int taskViewLockToAppShortAnimDuration;
public int taskViewLockToAppLongAnimDuration;
/** Nav bar scrim */
public int navBarScrimEnterDuration;
@@ -226,15 +222,23 @@ public class RecentsConfiguration {
taskStackMaxDim = res.getInteger(R.integer.recents_max_task_stack_view_dim);
taskStackTopPaddingPx = res.getDimensionPixelSize(R.dimen.recents_stack_top_padding);
// Transition
transitionEnterFromAppDelay =
res.getInteger(R.integer.recents_enter_from_app_transition_duration);
transitionEnterFromHomeDelay =
res.getInteger(R.integer.recents_enter_from_home_transition_duration);
// Task view animation and styles
taskViewEnterFromHomeDelay =
res.getInteger(R.integer.recents_animate_task_enter_from_home_delay);
taskViewEnterFromAppDuration =
res.getInteger(R.integer.recents_task_enter_from_app_duration);
taskViewEnterFromHomeDuration =
res.getInteger(R.integer.recents_animate_task_enter_from_home_duration);
res.getInteger(R.integer.recents_task_enter_from_home_duration);
taskViewEnterFromHomeStaggerDelay =
res.getInteger(R.integer.recents_animate_task_enter_from_home_stagger_delay);
res.getInteger(R.integer.recents_task_enter_from_home_stagger_delay);
taskViewExitToAppDuration =
res.getInteger(R.integer.recents_task_exit_to_app_duration);
taskViewExitToHomeDuration =
res.getInteger(R.integer.recents_animate_task_exit_to_home_duration);
res.getInteger(R.integer.recents_task_exit_to_home_duration);
taskViewRemoveAnimDuration =
res.getInteger(R.integer.recents_animate_task_view_remove_duration);
taskViewRemoveAnimTranslationXPx =
@@ -265,23 +269,9 @@ public class RecentsConfiguration {
// Task bar size & animations
taskBarHeight = res.getDimensionPixelSize(R.dimen.recents_task_bar_height);
taskBarEnterAnimDuration =
res.getInteger(R.integer.recents_animate_task_bar_enter_duration);
taskBarEnterAnimDelay =
res.getInteger(R.integer.recents_animate_task_bar_enter_delay);
taskBarExitAnimDuration =
res.getInteger(R.integer.recents_animate_task_bar_exit_duration);
taskBarDismissDozeDelaySeconds =
res.getInteger(R.integer.recents_task_bar_dismiss_delay_seconds);
// Lock to app
taskViewLockToAppButtonHeight =
res.getDimensionPixelSize(R.dimen.recents_task_view_lock_to_app_button_height);
taskViewLockToAppShortAnimDuration =
res.getInteger(R.integer.recents_animate_lock_to_app_button_short_duration);
taskViewLockToAppLongAnimDuration =
res.getInteger(R.integer.recents_animate_lock_to_app_button_long_duration);
// Nav bar scrim
navBarScrimEnterDuration =
res.getInteger(R.integer.recents_nav_bar_scrim_enter_duration);

View File

@@ -16,7 +16,6 @@
package com.android.systemui.recents.views;
import android.animation.ObjectAnimator;
import android.graphics.Outline;
import android.graphics.Rect;
import android.view.View;
@@ -35,8 +34,6 @@ public class AnimateableViewBounds extends ViewOutlineProvider {
float mAlpha = 1f;
final float mMinAlpha = 0.25f;
ObjectAnimator mClipBottomAnimator;
public AnimateableViewBounds(TaskView source, int cornerRadius) {
mConfig = RecentsConfiguration.getInstance();
mSourceView = source;

View File

@@ -64,7 +64,9 @@ public class SystemBarScrimViews {
mStatusBarScrimView.setTranslationY(-mStatusBarScrimView.getMeasuredHeight());
mStatusBarScrimView.animate()
.translationY(0)
.setStartDelay(mConfig.taskBarEnterAnimDelay)
.setStartDelay(mConfig.launchedFromHome ?
mConfig.transitionEnterFromHomeDelay :
mConfig.transitionEnterFromAppDelay)
.setDuration(mConfig.navBarScrimEnterDuration)
.setInterpolator(mConfig.quintOutInterpolator)
.withStartAction(new Runnable() {
@@ -79,7 +81,9 @@ public class SystemBarScrimViews {
mNavBarScrimView.setTranslationY(mNavBarScrimView.getMeasuredHeight());
mNavBarScrimView.animate()
.translationY(0)
.setStartDelay(mConfig.taskBarEnterAnimDelay)
.setStartDelay(mConfig.launchedFromHome ?
mConfig.transitionEnterFromHomeDelay :
mConfig.transitionEnterFromAppDelay)
.setDuration(mConfig.navBarScrimEnterDuration)
.setInterpolator(mConfig.quintOutInterpolator)
.withStartAction(new Runnable() {
@@ -101,7 +105,7 @@ public class SystemBarScrimViews {
mStatusBarScrimView.animate()
.translationY(-mStatusBarScrimView.getMeasuredHeight())
.setStartDelay(0)
.setDuration(mConfig.taskBarExitAnimDuration)
.setDuration(mConfig.taskViewExitToAppDuration)
.setInterpolator(mConfig.fastOutSlowInInterpolator)
.start();
}
@@ -109,7 +113,7 @@ public class SystemBarScrimViews {
mNavBarScrimView.animate()
.translationY(mNavBarScrimView.getMeasuredHeight())
.setStartDelay(0)
.setDuration(mConfig.taskBarExitAnimDuration)
.setDuration(mConfig.taskViewExitToAppDuration)
.setInterpolator(mConfig.fastOutSlowInInterpolator)
.start();
}

View File

@@ -186,6 +186,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
mUIDozeTrigger.stopDozing();
mUIDozeTrigger.resetTrigger();
}
mStackScroller.reset();
}
/** Requests that the views be synchronized with the model */
@@ -659,9 +660,10 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
// If this is the first layout, then scroll to the front of the stack and synchronize the
// stack views immediately to load all the views
if (mAwaitingFirstLayout) {
mStackScroller.setStackScrollToInitialState();
requestSynchronizeStackViewsWithModel();
synchronizeStackViewsWithModel();
if (mStackScroller.setStackScrollToInitialState()) {
requestSynchronizeStackViewsWithModel();
synchronizeStackViewsWithModel();
}
}
// Measure each of the TaskViews
@@ -915,7 +917,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
TaskView frontTv = getChildViewForTask(newFrontMostTask);
if (frontTv != null) {
frontTv.onTaskBound(newFrontMostTask);
frontTv.fadeInActionButton(false);
frontTv.fadeInActionButton(0, mConfig.taskViewEnterFromAppDuration);
}
}

View File

@@ -48,6 +48,11 @@ public class TaskStackViewScroller {
setStackScroll(getStackScroll());
}
/** Resets the task scroller. */
void reset() {
mStackScrollP = 0f;
}
/** Sets the callbacks */
void setCallbacks(TaskStackViewScrollerCallbacks cb) {
mCb = cb;
@@ -71,9 +76,14 @@ public class TaskStackViewScroller {
mStackScrollP = s;
}
/** Sets the current stack scroll to the initial state when you first enter recents */
public void setStackScrollToInitialState() {
/**
* Sets the current stack scroll to the initial state when you first enter recents.
* @return whether the stack progress changed.
*/
public boolean setStackScrollToInitialState() {
float prevStackScrollP = mStackScrollP;
setStackScroll(getBoundedStackScroll(mLayoutAlgorithm.mInitialScrollP));
return Float.compare(prevStackScrollP, mStackScrollP) != 0;
}
/** Bounds the current scroll if necessary */

View File

@@ -24,7 +24,6 @@ import android.graphics.*;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewOutlineProvider;
import android.view.ViewPropertyAnimator;
import android.view.animation.AccelerateInterpolator;
import android.widget.FrameLayout;
import com.android.systemui.R;
@@ -271,24 +270,25 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks,
if (Constants.DebugFlags.App.EnableThumbnailAlphaOnFrontmost) {
// Animate the thumbnail alpha before the dim animation (to prevent updating the
// hardware layer)
mThumbnailView.startEnterRecentsAnimation(mConfig.taskBarEnterAnimDelay,
mThumbnailView.startEnterRecentsAnimation(mConfig.transitionEnterFromAppDelay,
new Runnable() {
@Override
public void run() {
animateDimToProgress(0, mConfig.taskBarEnterAnimDuration,
animateDimToProgress(0, mConfig.taskViewEnterFromAppDuration,
ctx.postAnimationTrigger.decrementOnAnimationEnd());
}
});
} else {
// Immediately start the dim animation
animateDimToProgress(mConfig.taskBarEnterAnimDelay,
mConfig.taskBarEnterAnimDuration,
animateDimToProgress(mConfig.transitionEnterFromAppDelay,
mConfig.taskViewEnterFromAppDuration,
ctx.postAnimationTrigger.decrementOnAnimationEnd());
}
ctx.postAnimationTrigger.increment();
// Animate the action button in
fadeInActionButton(true);
fadeInActionButton(mConfig.transitionEnterFromAppDelay,
mConfig.taskViewEnterFromAppDuration);
} else {
// Animate the task up if it was occluding the launch target
if (ctx.currentTaskOccludesLaunchTarget) {
@@ -296,7 +296,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks,
setAlpha(0f);
animate().alpha(1f)
.translationY(transform.translationY)
.setStartDelay(mConfig.taskBarEnterAnimDelay)
.setStartDelay(mConfig.transitionEnterFromAppDelay)
.setUpdateListener(null)
.setInterpolator(mConfig.fastOutSlowInInterpolator)
.setDuration(mConfig.taskViewEnterFromHomeDuration)
@@ -311,12 +311,12 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks,
ctx.postAnimationTrigger.increment();
}
}
startDelay = mConfig.taskBarEnterAnimDelay;
startDelay = mConfig.transitionEnterFromAppDelay;
} else if (mConfig.launchedFromHome) {
// Animate the tasks up
int frontIndex = (ctx.currentStackViewCount - ctx.currentStackViewIndex - 1);
int delay = mConfig.taskViewEnterFromHomeDelay +
int delay = mConfig.transitionEnterFromHomeDelay +
frontIndex * mConfig.taskViewEnterFromHomeStaggerDelay;
setScaleX(transform.scale);
@@ -353,19 +353,17 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks,
}, (startDelay / 2));
}
public void fadeInActionButton(boolean withDelay) {
public void fadeInActionButton(int delay, int duration) {
// Hide the action button
mActionButtonView.setAlpha(0f);
// Animate the action button in
ViewPropertyAnimator animator = mActionButtonView.animate().alpha(1f)
.setDuration(mConfig.taskBarEnterAnimDuration)
mActionButtonView.animate().alpha(1f)
.setStartDelay(delay)
.setDuration(duration)
.setInterpolator(PhoneStatusBar.ALPHA_IN)
.withLayer();
if (withDelay) {
animator.setStartDelay(mConfig.taskBarEnterAnimDelay);
}
animator.start();
.withLayer()
.start();
}
/** Animates this task view as it leaves recents by pressing home. */
@@ -391,7 +389,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks,
// Animate the dim
if (mDimAlpha > 0) {
ObjectAnimator anim = ObjectAnimator.ofInt(this, "dim", 0);
anim.setDuration(mConfig.taskBarExitAnimDuration);
anim.setDuration(mConfig.taskViewExitToAppDuration);
anim.setInterpolator(mConfig.fastOutLinearInInterpolator);
anim.start();
}
@@ -406,7 +404,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks,
mActionButtonView.animate()
.alpha(0f)
.setStartDelay(0)
.setDuration(mConfig.taskBarExitAnimDuration)
.setDuration(mConfig.taskViewExitToAppDuration)
.setInterpolator(mConfig.fastOutLinearInInterpolator)
.withLayer()
.start();
@@ -421,7 +419,7 @@ public class TaskView extends FrameLayout implements Task.TaskCallbacks,
.setStartDelay(0)
.setUpdateListener(null)
.setInterpolator(mConfig.fastOutLinearInInterpolator)
.setDuration(mConfig.taskBarExitAnimDuration)
.setDuration(mConfig.taskViewExitToAppDuration)
.start();
}
}

View File

@@ -235,7 +235,7 @@ public class TaskViewHeader extends FrameLayout {
.alpha(0f)
.setStartDelay(0)
.setInterpolator(mConfig.fastOutSlowInInterpolator)
.setDuration(mConfig.taskBarExitAnimDuration)
.setDuration(mConfig.taskViewExitToAppDuration)
.withLayer()
.start();
}
@@ -249,7 +249,7 @@ public class TaskViewHeader extends FrameLayout {
.alpha(1f)
.setStartDelay(0)
.setInterpolator(mConfig.fastOutLinearInInterpolator)
.setDuration(mConfig.taskBarEnterAnimDuration)
.setDuration(mConfig.taskViewEnterFromAppDuration)
.withLayer()
.start();
}

View File

@@ -237,12 +237,12 @@ public class TaskViewThumbnail extends View {
/** Animates this task thumbnail as it enters Recents. */
void startEnterRecentsAnimation(int delay, Runnable postAnimRunnable) {
startFadeAnimation(mConfig.taskViewThumbnailAlpha, delay,
mConfig.taskBarEnterAnimDuration, postAnimRunnable);
mConfig.taskViewEnterFromAppDuration, postAnimRunnable);
}
/** Animates this task thumbnail as it exits Recents. */
void startLaunchTaskAnimation(Runnable postAnimRunnable) {
startFadeAnimation(1f, 0, mConfig.taskBarExitAnimDuration, postAnimRunnable);
startFadeAnimation(1f, 0, mConfig.taskViewExitToAppDuration, postAnimRunnable);
}
/** Starts a new thumbnail alpha animation. */