Loading core/java/android/transition/ChangeBounds.java +32 −32 Original line number Diff line number Diff line Loading @@ -311,6 +311,38 @@ public class ChangeBounds extends Transition { ++numChanges; } if (numChanges > 0) { if (view.getParent() instanceof ViewGroup) { final ViewGroup parent = (ViewGroup) view.getParent(); parent.suppressLayout(true); TransitionListener transitionListener = new TransitionListenerAdapter() { boolean mCanceled = false; @Override public void onTransitionCancel(Transition transition) { parent.suppressLayout(false); mCanceled = true; } @Override public void onTransitionEnd(Transition transition) { if (!mCanceled) { parent.suppressLayout(false); } transition.removeListener(this); } @Override public void onTransitionPause(Transition transition) { parent.suppressLayout(false); } @Override public void onTransitionResume(Transition transition) { parent.suppressLayout(true); } }; addListener(transitionListener); } Animator anim; if (!mResizeClip) { view.setLeftTopRightBottom(startLeft, startTop, startRight, startBottom); Loading Loading @@ -398,38 +430,6 @@ public class ChangeBounds extends Transition { anim = TransitionUtils.mergeAnimators(positionAnimator, clipAnimator); } if (view.getParent() instanceof ViewGroup) { final ViewGroup parent = (ViewGroup) view.getParent(); parent.suppressLayout(true); TransitionListener transitionListener = new TransitionListenerAdapter() { boolean mCanceled = false; @Override public void onTransitionCancel(Transition transition) { parent.suppressLayout(false); mCanceled = true; } @Override public void onTransitionEnd(Transition transition) { if (!mCanceled) { parent.suppressLayout(false); } transition.removeListener(this); } @Override public void onTransitionPause(Transition transition) { parent.suppressLayout(false); } @Override public void onTransitionResume(Transition transition) { parent.suppressLayout(true); } }; addListener(transitionListener); } return anim; } } else { Loading core/java/android/view/View.java +3 −1 Original line number Diff line number Diff line Loading @@ -20850,7 +20850,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } // If this isn't laid out yet, focus assignment will be handled during the "deferment/ // backtracking" of requestFocus during layout, so don't touch focus here. if (!sCanFocusZeroSized && isLayoutValid()) { if (!sCanFocusZeroSized && isLayoutValid() // Don't touch focus if animating && !(mParent instanceof ViewGroup && ((ViewGroup) mParent).isLayoutSuppressed())) { if (newWidth <= 0 || newHeight <= 0) { if (hasFocus()) { clearFocus(); Loading
core/java/android/transition/ChangeBounds.java +32 −32 Original line number Diff line number Diff line Loading @@ -311,6 +311,38 @@ public class ChangeBounds extends Transition { ++numChanges; } if (numChanges > 0) { if (view.getParent() instanceof ViewGroup) { final ViewGroup parent = (ViewGroup) view.getParent(); parent.suppressLayout(true); TransitionListener transitionListener = new TransitionListenerAdapter() { boolean mCanceled = false; @Override public void onTransitionCancel(Transition transition) { parent.suppressLayout(false); mCanceled = true; } @Override public void onTransitionEnd(Transition transition) { if (!mCanceled) { parent.suppressLayout(false); } transition.removeListener(this); } @Override public void onTransitionPause(Transition transition) { parent.suppressLayout(false); } @Override public void onTransitionResume(Transition transition) { parent.suppressLayout(true); } }; addListener(transitionListener); } Animator anim; if (!mResizeClip) { view.setLeftTopRightBottom(startLeft, startTop, startRight, startBottom); Loading Loading @@ -398,38 +430,6 @@ public class ChangeBounds extends Transition { anim = TransitionUtils.mergeAnimators(positionAnimator, clipAnimator); } if (view.getParent() instanceof ViewGroup) { final ViewGroup parent = (ViewGroup) view.getParent(); parent.suppressLayout(true); TransitionListener transitionListener = new TransitionListenerAdapter() { boolean mCanceled = false; @Override public void onTransitionCancel(Transition transition) { parent.suppressLayout(false); mCanceled = true; } @Override public void onTransitionEnd(Transition transition) { if (!mCanceled) { parent.suppressLayout(false); } transition.removeListener(this); } @Override public void onTransitionPause(Transition transition) { parent.suppressLayout(false); } @Override public void onTransitionResume(Transition transition) { parent.suppressLayout(true); } }; addListener(transitionListener); } return anim; } } else { Loading
core/java/android/view/View.java +3 −1 Original line number Diff line number Diff line Loading @@ -20850,7 +20850,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } // If this isn't laid out yet, focus assignment will be handled during the "deferment/ // backtracking" of requestFocus during layout, so don't touch focus here. if (!sCanFocusZeroSized && isLayoutValid()) { if (!sCanFocusZeroSized && isLayoutValid() // Don't touch focus if animating && !(mParent instanceof ViewGroup && ((ViewGroup) mParent).isLayoutSuppressed())) { if (newWidth <= 0 || newHeight <= 0) { if (hasFocus()) { clearFocus();