Merge "Run end actions immediately if there are no children to animate." into qt-dev

This commit is contained in:
TreeHugger Robot
2019-04-06 00:29:11 +00:00
committed by Android (Google) Code Review
2 changed files with 26 additions and 5 deletions

View File

@@ -202,13 +202,21 @@ public class PhysicsAnimationLayout extends FrameLayout {
// add a multiple property end listener to the layout that will call the end action
// provided to startAll() once all animations on the animated properties complete.
return (endActions) -> {
final Runnable runAllEndActions = () -> {
for (Runnable action : endActions) {
action.run();
}
};
// If there aren't any children to animate, just run the end actions.
if (mLayout.getChildCount() == 0) {
runAllEndActions.run();
return;
}
if (endActions != null) {
mLayout.setEndActionForMultipleProperties(
() -> {
for (Runnable action : endActions) {
action.run();
}
},
runAllEndActions,
allAnimatedProperties.toArray(
new DynamicAnimation.ViewProperty[0]));
}

View File

@@ -25,6 +25,7 @@ import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import android.os.SystemClock;
import android.testing.AndroidTestingRunner;
@@ -449,6 +450,18 @@ public class PhysicsAnimationLayoutTest extends PhysicsAnimationLayoutTestCase {
Mockito.verify(allEnd, times(1)).run();
}
@Test
public void testAnimationsForChildrenFromIndex_noChildren() {
mLayout.setController(mTestableController);
final Runnable after = Mockito.mock(Runnable.class);
mTestableController
.animationsForChildrenFromIndex(0, (index, animation) -> { })
.startAll(after);
verify(after, Mockito.times(1)).run();
}
/**
* Animation controller with configuration methods whose return values can be set by individual
* tests.