am 72e3b747: am d00a76ea: am 7c79c82b: Merge "Don\'t cause requestLayout when transition changes Visibility." into mnc-dev
* commit '72e3b7475cffc86eccc43e372c8299765c313dcd': Don't cause requestLayout when transition changes Visibility.
This commit is contained in:
@@ -445,7 +445,7 @@ public abstract class Visibility extends Transition {
|
||||
mForcedEndVisibility != -1;
|
||||
if (!isForcedVisibility) {
|
||||
originalVisibility = viewToKeep.getVisibility();
|
||||
viewToKeep.setVisibility(View.VISIBLE);
|
||||
viewToKeep.setTransitionVisibility(View.VISIBLE);
|
||||
}
|
||||
Animator animator = onDisappear(sceneRoot, viewToKeep, startValues, endValues);
|
||||
if (animator != null) {
|
||||
@@ -454,7 +454,7 @@ public abstract class Visibility extends Transition {
|
||||
animator.addListener(disappearListener);
|
||||
addListener(disappearListener);
|
||||
} else if (!isForcedVisibility) {
|
||||
viewToKeep.setVisibility(originalVisibility);
|
||||
viewToKeep.setTransitionVisibility(originalVisibility);
|
||||
}
|
||||
return animator;
|
||||
}
|
||||
@@ -516,14 +516,14 @@ public abstract class Visibility extends Transition {
|
||||
@Override
|
||||
public void onAnimationPause(Animator animation) {
|
||||
if (!mCanceled && !mIsForcedVisibility) {
|
||||
mView.setVisibility(mFinalVisibility);
|
||||
mView.setTransitionVisibility(mFinalVisibility);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationResume(Animator animation) {
|
||||
if (!mCanceled && !mIsForcedVisibility) {
|
||||
mView.setVisibility(View.VISIBLE);
|
||||
mView.setTransitionVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -557,7 +557,7 @@ public abstract class Visibility extends Transition {
|
||||
if (mIsForcedVisibility) {
|
||||
mView.setTransitionAlpha(0);
|
||||
} else {
|
||||
mView.setVisibility(mFinalVisibility);
|
||||
mView.setTransitionVisibility(mFinalVisibility);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ public class GhostView extends View {
|
||||
mView = view;
|
||||
mView.mGhostView = this;
|
||||
final ViewGroup parent = (ViewGroup) mView.getParent();
|
||||
setGhostedVisibility(View.INVISIBLE);
|
||||
mView.setTransitionVisibility(View.INVISIBLE);
|
||||
parent.invalidate();
|
||||
}
|
||||
|
||||
@@ -66,19 +66,15 @@ public class GhostView extends View {
|
||||
super.setVisibility(visibility);
|
||||
if (mView.mGhostView == this) {
|
||||
int inverseVisibility = (visibility == View.VISIBLE) ? View.INVISIBLE : View.VISIBLE;
|
||||
setGhostedVisibility(inverseVisibility);
|
||||
mView.setTransitionVisibility(inverseVisibility);
|
||||
}
|
||||
}
|
||||
|
||||
private void setGhostedVisibility(int visibility) {
|
||||
mView.mViewFlags = (mView.mViewFlags & ~View.VISIBILITY_MASK) | visibility;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow();
|
||||
if (!mBeingMoved) {
|
||||
setGhostedVisibility(View.VISIBLE);
|
||||
mView.setTransitionVisibility(View.VISIBLE);
|
||||
mView.mGhostView = null;
|
||||
final ViewGroup parent = (ViewGroup) mView.getParent();
|
||||
if (parent != null) {
|
||||
|
||||
@@ -8785,6 +8785,20 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the visibility of the View without triggering any other changes. This is
|
||||
* important for transitions, where visibility changes should not adjust focus or
|
||||
* trigger a new layout. This is only used when the visibility has already been changed
|
||||
* and we need a transient value during an animation. When the animation completes,
|
||||
* the original visibility value is always restored.
|
||||
*
|
||||
* @param visibility One of {@link #VISIBLE}, {@link #INVISIBLE}, or {@link #GONE}.
|
||||
* @hide
|
||||
*/
|
||||
public void setTransitionVisibility(@Visibility int visibility) {
|
||||
mViewFlags = (mViewFlags & ~View.VISIBILITY_MASK) | visibility;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the flag indicating the accessibility state of the subtree rooted
|
||||
* at this view changed.
|
||||
|
||||
Reference in New Issue
Block a user