am 14f73a02
: Merge "Restore opaque alpha value when AlphaAnimation finishes" into jb-dev
* commit '14f73a02a42b5e4c700fe70e8c2d38dc518480b4': Restore opaque alpha value when AlphaAnimation finishes
This commit is contained in:
@ -2129,19 +2129,12 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
|
||||
*/
|
||||
static final int ACCESSIBILITY_STATE_CHANGED = 0x00000080 << IMPORTANT_FOR_ACCESSIBILITY_SHIFT;
|
||||
|
||||
/**
|
||||
* Flag indicating that view has an animation set on it. This is used to track whether an
|
||||
* animation is cleared between successive frames, in order to tell the associated
|
||||
* DisplayList to clear its animation matrix.
|
||||
*/
|
||||
static final int VIEW_IS_ANIMATING_TRANSFORM = 0x10000000;
|
||||
|
||||
/**
|
||||
* Flag indicating whether a view failed the quickReject() check in draw(). This condition
|
||||
* is used to check whether later changes to the view's transform should invalidate the
|
||||
* view to force the quickReject test to run again.
|
||||
*/
|
||||
static final int VIEW_QUICK_REJECTED = 0x20000000;
|
||||
static final int VIEW_QUICK_REJECTED = 0x10000000;
|
||||
|
||||
// Accessiblity constants for mPrivateFlags2
|
||||
|
||||
@ -2149,7 +2142,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
|
||||
* Shift for the bits in {@link #mPrivateFlags2} related to the
|
||||
* "accessibilityFocusable" attribute.
|
||||
*/
|
||||
static final int ACCESSIBILITY_FOCUSABLE_SHIFT = 30;
|
||||
static final int ACCESSIBILITY_FOCUSABLE_SHIFT = 29;
|
||||
|
||||
/**
|
||||
* The system determines whether the view can take accessibility focus - default (recommended).
|
||||
@ -2211,6 +2204,25 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
|
||||
|
||||
/* End of masks for mPrivateFlags2 */
|
||||
|
||||
/* Masks for mPrivateFlags3 */
|
||||
|
||||
/**
|
||||
* Flag indicating that view has a transform animation set on it. This is used to track whether
|
||||
* an animation is cleared between successive frames, in order to tell the associated
|
||||
* DisplayList to clear its animation matrix.
|
||||
*/
|
||||
static final int VIEW_IS_ANIMATING_TRANSFORM = 0x1;
|
||||
|
||||
/**
|
||||
* Flag indicating that view has an alpha animation set on it. This is used to track whether an
|
||||
* animation is cleared between successive frames, in order to tell the associated
|
||||
* DisplayList to restore its alpha value.
|
||||
*/
|
||||
static final int VIEW_IS_ANIMATING_ALPHA = 0x2;
|
||||
|
||||
|
||||
/* End of masks for mPrivateFlags3 */
|
||||
|
||||
static final int DRAG_MASK = DRAG_CAN_ACCEPT | DRAG_HOVERED;
|
||||
|
||||
/**
|
||||
@ -2591,6 +2603,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
|
||||
})
|
||||
int mPrivateFlags;
|
||||
int mPrivateFlags2;
|
||||
int mPrivateFlags3;
|
||||
|
||||
/**
|
||||
* This view's request for the visibility of the status bar.
|
||||
@ -13041,15 +13054,15 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
|
||||
more = drawAnimation(parent, drawingTime, a, scalingRequired);
|
||||
concatMatrix = a.willChangeTransformationMatrix();
|
||||
if (concatMatrix) {
|
||||
mPrivateFlags2 |= VIEW_IS_ANIMATING_TRANSFORM;
|
||||
mPrivateFlags3 |= VIEW_IS_ANIMATING_TRANSFORM;
|
||||
}
|
||||
transformToApply = parent.mChildTransformation;
|
||||
} else {
|
||||
if ((mPrivateFlags2 & VIEW_IS_ANIMATING_TRANSFORM) == VIEW_IS_ANIMATING_TRANSFORM &&
|
||||
if ((mPrivateFlags3 & VIEW_IS_ANIMATING_TRANSFORM) == VIEW_IS_ANIMATING_TRANSFORM &&
|
||||
mDisplayList != null) {
|
||||
// No longer animating: clear out old animation matrix
|
||||
mDisplayList.setAnimationMatrix(null);
|
||||
mPrivateFlags2 &= ~VIEW_IS_ANIMATING_TRANSFORM;
|
||||
mPrivateFlags3 &= ~VIEW_IS_ANIMATING_TRANSFORM;
|
||||
}
|
||||
if (!useDisplayListProperties &&
|
||||
(flags & ViewGroup.FLAG_SUPPORT_STATIC_TRANSFORMATIONS) != 0) {
|
||||
@ -13161,7 +13174,8 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
|
||||
}
|
||||
|
||||
float alpha = useDisplayListProperties ? 1 : getAlpha();
|
||||
if (transformToApply != null || alpha < 1 || !hasIdentityMatrix()) {
|
||||
if (transformToApply != null || alpha < 1 || !hasIdentityMatrix() ||
|
||||
(mPrivateFlags3 & VIEW_IS_ANIMATING_ALPHA) == VIEW_IS_ANIMATING_ALPHA) {
|
||||
if (transformToApply != null || !childHasIdentityMatrix) {
|
||||
int transX = 0;
|
||||
int transY = 0;
|
||||
@ -13187,7 +13201,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
|
||||
|
||||
float transformAlpha = transformToApply.getAlpha();
|
||||
if (transformAlpha < 1) {
|
||||
alpha *= transformToApply.getAlpha();
|
||||
alpha *= transformAlpha;
|
||||
parent.mGroupFlags |= ViewGroup.FLAG_CLEAR_TRANSFORMATION;
|
||||
}
|
||||
}
|
||||
@ -13199,7 +13213,14 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
|
||||
}
|
||||
}
|
||||
|
||||
// Deal with alpha if it is or used to be <1
|
||||
if (alpha < 1 ||
|
||||
(mPrivateFlags3 & VIEW_IS_ANIMATING_ALPHA) == VIEW_IS_ANIMATING_ALPHA) {
|
||||
if (alpha < 1) {
|
||||
mPrivateFlags3 |= VIEW_IS_ANIMATING_ALPHA;
|
||||
} else {
|
||||
mPrivateFlags3 &= ~VIEW_IS_ANIMATING_ALPHA;
|
||||
}
|
||||
parent.mGroupFlags |= ViewGroup.FLAG_CLEAR_TRANSFORMATION;
|
||||
if (hasNoCache) {
|
||||
final int multipliedAlpha = (int) (255 * alpha);
|
||||
|
Reference in New Issue
Block a user