Notifications in which the icon resource ID is changed after
Builder.build() is called (even, and particularly, as the
last step in the current implementation of
setLatestEventInfo()) were not having their icons properly
parceled. In these cases we now attempt to catch this at
parcel time and construct the necessary Icon object.
But wait! Parceling does not require a Context. So we don't
actually know which package to load the resource from.
Therefore we now allow an Icon to be constructed with an
empty ("") package name, which allows us to complete this
parceling task despite the fact that a Notification does not
know its own package name. (In case you attempt to load a
drawable for such an Icon, loadDrawable will spot the ""
package and instead substitute the Context from its
parameters to try to load the resource.)
As it happens, even though the Notification does not know
its own package name, BaseStatusBar does, because it was
provided at NM.notify() time and is therefore included in
the StatusBarNotification structure. So we can actually
patch up the Icon (if it is TYPE_RESOURCE) and be sure to
get the icon loaded out of the correct package.
While we've got the hood open, this change fixes a couple of
related problems:
• Foreground service notifications synthetically
constructed for naughty icon==0 notifications (which we
are still allowing...FOR NOW) were losing the
FLAG_FOREGROUND_SERVICE flag (because we're
re-build()-ing them from scratch rather than rewriting
the provided Notification object). Now we set the flag
and hang onto the new notification for next time
setForeground() is called.
• We now allow media notifications to avoid getting bumped
to the top of the notification list if they're
PRIORITY_MIN. You might want to do that, I guess?
Bug: 21333763
Change-Id: Ia5d1f1acb594c7677bcc75ee3d624da4ffca671f
Remove unnecessary lines setting target density on bitmap and nine patch,
since we'll do this later in inflate().
Bug: 21774853
Change-Id: I5ea316bee81f82192ce20f2f1bee0e62c6ec8ccb
Docs for translucent-vs-transparent-vs-opaque were confusing, especially since
the definition for those constants in PixelFormat are not the same as how they're
actually used in Drawable. This fix simply adds clarifying text to the method
comment for getOpacity().
Issue #21158891 Better document Drawable#getOpacity
Change-Id: I94725592f85e5d7874e3a3ac1c5bab969163fbf0
DEPTH16: Use high 3 bits for confidence measurement, with
0 = 100% confidence, 1 = 0% confidence, 2 = 1/7 (14.3%) confidence, etc.
DEPTH_POINT_CLOUD: Add confidence as 4th entry to each point,
with a value in range 0.f - 1.f inclusive.
Bug: 20123879
Change-Id: I23317b922ac727751156fa418ed239a696a898e5
1. ClipDrawable.getOpacity() now correctly respects the current level
2. DrawableWrapper checks the contained drawable's changing config even
if it doesn't have a constant state
3. DrawableWrapper gives priority to the last valid child drawable
rather than the drawable attribute
Bug: 21406104
Change-Id: I442fe90d0a3865bfdc6b2d14a7358178310dde02
This CL works around Animator's lack of support for applying a theme
after inflation by postponing Animator inflation until a theme is
available, either in inflate() or applyTheme().
Includes a workaround for AVDs that don't reference any theme attrs
in their animators and this don't require a call to applyTheme().
Partial implementation of removing non-constant data from the AVD's
constant state. Moves the mutable AnimatorSet to a local variable and
treats the Animators as constant data.
We'll follow up with real support for applyTheme() in Animator or
AnimatorSet, at which point we can remove this workaround.
Bug: 20817800
Change-Id: I555c53c955219990ee376bee568bcc038532f9ed
Only bothers with the background and active ripple, since the exiting
ripples are in hardware animation mode anyway and can't be updated.
Bug: 21079749
Change-Id: I0f70c0c0feea32e2c70bb9b1b0fa3b7846b20c7f
This CL works around Animator's lack of support for applying a theme
after inflation by postponing Animator inflation until a theme is
available, either in inflate() or applyTheme().
Includes a workaround for AVDs that don't reference any theme attrs
in their animators and this don't require a call to applyTheme().
We'll follow up with real support for applyTheme() in Animator, at which
point we can remove this workaround.
Bug: 20817800
Change-Id: I5a378a76e3625b9d754cb74ae98c07ba7c5698e5
And you may ask yourself: what is that beautiful icon?
And you may ask yourself: where does that API go to?
And you may ask yourself: is it a resource? is it a Bitmap?
And you may say to yourself: my god, what have I done
(This patch fixes a number of bugs in the initial
implementation, but other than that, it's the same as it
ever was.)
Bug: 18568715
Bug: 21141842
Change-Id: I1d3f9427abd7f0bb57e533fcfac708851ff644b6
This CL fixes the issue where when start is called, we run the next frame
of the animation drawable while mCurFrame is already set to 0. The result
is that the first frame of the AnimationDrawable is then skipped.
Bug: 21168854
Change-Id: I2b77ae017d3debd0f8cfec81ea86d1120e78bb55
This works around situations where corrupted packages cause
Resources.getResourcePackageName to return something that
does't actually work.
Bug: 21144636
Change-Id: I271518599a8eb89d493f1ceda6cb2e47fb38a4ff