Commit Graph

43 Commits

Author SHA1 Message Date
Doris Liu
3aaff80f32 Revert "Fix NPE for invalid target exception"
This reverts commit d4fda02dd5.

Change-Id: I73341dc41c7effaa3209107b4e85503b17e2c826
2016-02-04 20:02:52 +00:00
Doris Liu
d4fda02dd5 Fix NPE for invalid target exception
Change-Id: I57b319fae617792351c6ec9872c3b73cd25dc4e5
2016-02-03 11:10:49 -08:00
Doris Liu
f276acd984 VectorDrawable native rendering - Step 4 of MANY
This CL runs VectorDrawable animation on RenderThread. The changes in this CL
include:
- Convert all the animators in AnimatorSet for AVD into a set of RenderNodeAnimators.
- Hook up the new animators with RenderThread
- Add drawOp in RecordingCanvas for drawing VD so that during the animation
  on RenderThread, all the property changes on VD can be reflected on the screen.

TODO:
- Implement reverse and reset for AVD.

Change-Id: I2df1d754f2db0ad098d9c15dde4bb2bdfafc2315
2016-02-02 15:04:01 -08:00
Chet Haase
f0a7b3b694 Fix problem with zero-duration AnimatedVectorDrawables
There was an issue with some vector drawables, particularly those with more
than one underlying, sequential animators, where the final frame would not be
drawn when battery saver mode was enabled (or animators were set to have durations
of 0). This resulted in an incorrect fingerprint graphic on the lockscreen, because
the animation effectively didn't run at all.

The fix is to always invalidate whenever the AnimatedVectorDrawble draws itself. This
causes us to constantly invalidate() the view while the animation is running.

Issue #26591987 Fingerprint icon displayed as dots when batter saver mode is on

Change-Id: I13cbd71fd229db09418c6dcacfec5a13bbb44b2e
2016-01-26 14:21:53 -08:00
Doris Liu
841f6e19ba Avoid calling invalidateSelf() from draw call
Bug: 26329675

Change-Id: Ieb76b6f63a5139f6033ca9baa9ba6fac36ae466c
2016-01-05 00:53:07 +00:00
Alan Viverette
0b6cfe22fd Revert "Use floating-point value for Drawable level"
This reverts commit 3da32b7688.

Change-Id: Ie75ce0c285e0f59a7a086f64c0cfe088edb5df04
2015-09-14 16:59:49 +00:00
Alan Viverette
3da32b7688 Use floating-point value for Drawable level
This allows us to run fine-grained level animations.

Backwards compatibility:
Another CL will add DrawableCompat.setLevel(float) to forward calls to
the existing integer-based method. For callbacks, developers can override
onLevelChanged(int) and use DrawableCompat.getLevelFloat() to obtain the
floating-point level. Overriding onLevelChanged(float) will only work on
current API.

Bug: 23566299
Change-Id: I431fe6f3679c8f23f9cf3c2bb1f92a4059ee68e3
2015-09-02 13:33:58 -04:00
ztenghui
95080637db Resize the VectorDrawable according to the virtual Dpi
b/21928507

Change-Id: I9e596192a0fdf13fc91481f990a345c3b267f225
2015-06-24 15:09:09 -07:00
ztenghui
9605271806 Add reset to AVD
b/21664621

Change-Id: Ie40c3723860e183c8e4fedd2a76b9debbdf64a2a
2015-06-05 15:42:59 -07:00
ztenghui
83a52031fd Setup the animation callback for AnimatedVectorDrawable
b/21341096

Change-Id: I84e20366db21ceaa4f044be3e322f9215bb06ad2
2015-06-04 12:55:21 -07:00
Alan Viverette
db2911321b Merge "Replace PNG-based seekbar thumb animation with AVD" into mnc-dev 2015-05-29 22:51:04 +00:00
Alan Viverette
87e1938be8 Replace PNG-based seekbar thumb animation with AVD
Adds optical inset support for VectorDrawable and GradientDrawable.

Bug: 19944181
Change-Id: I9df04d9fe17ad858413e7f93694bf37ee2c43c85
2015-05-29 15:12:14 -07:00
Alan Viverette
3c436cb99f Merge "Postpone AnimatedVectorDrawable animator inflation until applyTheme()" into mnc-dev 2015-05-28 23:43:25 +00:00
Alan Viverette
dfa4646eca API Review: Drawable
Renames boolean getters to isZzz(), callback from onChange to onChanged.

Bug: 21342040
Change-Id: I9700d645453354b608fd97a832359211d828b52f
2015-05-27 13:26:41 -07:00
Alan Viverette
d8d9a75f6a Postpone AnimatedVectorDrawable animator inflation until applyTheme()
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
2015-05-18 18:53:46 -07:00
Alan Viverette
344ad7126f Revert "Postpone AnimatedVectorDrawable animator inflation until applyTheme()"
This reverts commit 9b115a9870.

Change-Id: Ief148510472e129f992cf52ef8b8a25b5e17e05f
2015-05-19 00:36:53 +00:00
Alan Viverette
9b115a9870 Postpone AnimatedVectorDrawable animator inflation until applyTheme()
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
2015-05-15 10:54:11 -07:00
Alan Viverette
e0f95f39c5 Fix issues with theming of preloaded ColorStateLists
Ensures changing configurations mask is propagated to the host drawable
so that it can be properly cleared from cache on configuration changes.
Also fixes constant state handling of the mask in the Inset and Rotate
drawables.

Hides new ColorStateList methods related to theming, since they should
only be used during preloading or internally by framework drawables.

Fixes bug where the cached versions of themeable ColorStateLists were
modified by calling applyTheme() on the host drawable.

Also cleans up some docs and naming in GradientDrawable.

Bug: 19966397
Change-Id: I8c8d3cabbaf94b488c2b8fe9fd423e07d824c19c
2015-04-01 13:10:18 -07:00
ztenghui
0ea3aca4eb Polish the documentation for VectorDrawable and AnimatedVectorDrawable
Change-Id: If6bedf84cb01971c55b5a99ad921303dad638b24
2015-03-26 11:34:36 -07:00
ztenghui
1588f0ff54 Add listener support in AVD
Internally, switch to use AnimatorSet instead of an array of Animators

b/19825918

Change-Id: Ia67d2cc7dd89362e6b0019c916d3f2a0d0f3e39e
2015-03-24 15:49:13 -07:00
Alan Viverette
a129622071 Unify wrapper-type drawables
Fixes several issues with constant state and propagation of drawable
property changes to wrapped drawables. Also un-hides the layout
direction accessors and hotspot getter.

Change-Id: Iff19db6a95059cbcfcbde7af0ac33871ccd41615
2015-02-20 15:00:25 -08:00
ztenghui
d2f50c78c3 AVD: Deep copy the animator target setup when mutate.
Only calling VectorDrawable's mutate here will miss all the animator setup,
when the VectorDrawable has a new state.
So we just deep copy everything and setup the animators again.

b/18521582

Change-Id: Id164312750bb548f9c2d21cc0b5806cd2bafcf0d
2014-12-04 16:55:26 -08:00
ztenghui
5b84eace6c ASLD: ASLD's XML reversible flag can turn off the reverse behavior now.
Previously, the android:reversible flag behaves like a suggestion.
Now it is used to enforce no reverse when set to false. In this way, user can
safely setup one direction animation only.
When set to true, but AVD can't reverse , then it will show a warning.

At the same time, update the tests to show different cases, including
AnimationDrawable.

b/18413484

Change-Id: I5552c49dcbd76b0724b4d5593bce8388b27bd905
2014-11-20 14:41:33 -08:00
ztenghui
1a40facbfd AVD: Requires all animator has stopped before start again.
We should treat all the animator as a group, we should not start again unless
all the previous animations have stopped.

b/18320770

Change-Id: I5b0c2c165cd314745ee6c7152aea3c666e9dff10
2014-11-10 15:03:59 -08:00
Alan Viverette
d21fd9d1cc Add theme and config change support to more Drawable types
BUG: 16045735
Change-Id: Ic03173a1c1779c1bb545c4c389f77afed97011ee
2014-10-29 10:24:42 -07:00
Alan Viverette
17cd4dfe3a Update preload list, clean up drawable theming
Removes all implementations of three-arg ConstantState constructor, since
we handle mutation and applyTheme() in Resources now. Moves progress bar
tinting to android:tint attribute. Correctly implements applyTheme() and
canApplyTheme() in all drawable wrapper and container classes.

Change-Id: Ic9cb43d0d6228aa4914f3124bed234b837beaa41
2014-10-14 14:07:21 -07:00
Alan Viverette
727cae197b Mutate and apply theme if needed before caching themed drawables
This ensures that drawables are completely separated from their cached
constant states before applying a theme. After this, we can remove the
implicit (and incomplete) mutation in the clone constructors.

Also implements missing mutate() method on ClipDrawable.

BUG: 17646144
Change-Id: If0d66b0a85724d76e0a4f506758c7ba3c0aa3410
2014-10-07 15:08:47 -07:00
Alan Viverette
5004032ebc Fixed mutate() for RippleDrawable, ASLD, AVD, fix applyTheme in VD
BUG: 17646144
Change-Id: I58c111d86224dc8f7f557073c0bcbc22ad74aa1b
2014-09-26 10:37:30 -07:00
ztenghui
98916d146a Fix AVD for CTS failure.
Mostly about changingConfig flags, the fix is just a copy from VectorDrawable.

b/17631551

Change-Id: Ibad9c2f61cd86b15e9bca1d1991c8cd147897bb0
2014-09-23 16:07:27 -07:00
Chet Haase
6f6578e81c Use constant state in AnimatedVectorDrawable
Complex animated vector drawables can be expensive to load due to
sub-optimal parsing of the String-based pathData. Suffering that penalty
every time the same drawable is loaded (such as material-themed
ProgressBars) is painful.

The new approach caches constant state of both the VectorDrawable (including
the pathData geometry) and the animators (which includes potentially expensive
path-based interpolators).

issue #17366831 Material ProgressBar taking 200+ms to inflate

Change-Id: Iba3b541e24cfce8c07f5aa9fe6aa7d7b92b2fe1c
2014-09-10 21:21:53 +00:00
George Mount
fd3c4744f2 Use intrinsic size for path animation in AnimatedVectorDrawable
Bug 16984007

Animated Vector Drawables were using the viewport dimensions for
calculating the allowable animation error. Instead of using viewport
dimensions, it is better to use the intrinsic dimensions. Using
the viewport dimensions meant that a small viewport (e.g. 1x1)
would mean that animation paths within would only have an accuracy
of 50% of the dimensions of the drawable.

Change-Id: Id0152eabb4effd1e50c644eea7a371b38baeb7c1
2014-09-09 17:09:57 -07:00
ztenghui
a94900e587 Merge "Fixing AVD animation with startOffset" into lmp-dev 2014-08-22 20:23:24 +00:00
ztenghui
14aedd1fbf Fixing AVD animation with startOffset
b/17160751

Change-Id: If030ca04f5a7dd7e732dcc5dfb18d51faa7e7b79
2014-08-22 12:41:06 -07:00
Alan Viverette
06cd7dce24 Forward additional drawable methods in AVD
BUG: 17156349
Change-Id: I1d7b41fc8d0399b31db4cf21aa47180e96bfbcfe
2014-08-20 13:44:44 -07:00
ztenghui
06eaf193bd End the animator when stop() is called
bug:16830053

Change-Id: If27ba904b0f78ee8c59df3522a97f5f86509ca0e
2014-08-06 21:23:08 +00:00
ztenghui
a95c8abb36 API REVIEW: VectorDrawable
- Merge <size> and <viewport> attributes all in to top-level <vector> tag
- Indent attributes under <group> in java doc.
- Updata android:stroke to be android:strokeColor, likewise android:fill
- Instead of android:clipToPath, make this a different clip-path tag.
- Document units of the various attributes
- Add example code for defining a VectorDrawable resource

More than that:
= Refactor the code to better support clipPath as a sub-class.
= Update all the xml files to use the new attributes and clip-path tag.

TODO:
-- Remove clipToPath, since that should happen on build break Friday.

bug:16488254

Change-Id: I6db5680ef83cb26c8f064a60fc7d6e7142974b0f
2014-07-25 23:26:41 +00:00
ztenghui
7bc6a3f023 Add more reverse support to AnimatedVD
bug:16162242

Change-Id: Ie0b7618beeb65ebeb65db41600165837524bcee4
2014-07-16 19:26:26 +00:00
Alan Viverette
6e0a9fa6ed DO NOT MERGE Add support for AVD reverse() to ASLD, clean up transition handling
BUG: 16162242
Change-Id: I29336491d01d40e5369503ece858bcbe5aa99b19
(cherry picked from commit 4e9c797a9c024e5a4226ed37eece16e3db2edb78)
2014-07-16 16:25:59 +00:00
ztenghui
482eb53c8a Enable the bitmap cache for the VectorDrawable
b/16299765

Change-Id: Ia2c0fd366abc097d1ce485936de74e4e898cc07a
2014-07-14 15:49:04 -07:00
ztenghui
55f765441c Add constant state support back to VectorDrawable
At the same time, AVD is using a mutated version of VD.
And AVD won't support constant state.
Move the targetsMap down into constant state.

bug:16017895

Change-Id: I12fbc52a8719362adba9df1e0f97288decbd33b2
2014-07-09 16:05:36 +00:00
ztenghui
9cb5b4c2d9 Use AnimatedVectorDrawable for progress bar.
Change-Id: I419197ef38a611757f27ca3192350ad4bd403875
2014-06-30 12:43:52 -07:00
ztenghui
7e7ea9da67 Make AnimatedVectorDrawable public.
Clean up some useless VectorDrawable functions.
Add comments, too.

Change-Id: I8cc2165d14d09fd71f5830c4f61f9e8ac1d7c8da
2014-06-23 09:36:52 -07:00
ztenghui
e5e92602a4 Add AnimatedVectorDrawable
Currently as a hidden class.
It can support many the animations now as far as ObjectAnimator and
hierarchical group can support.
And we don't have path morphing yet.

Also support the Animator / Interpolator inflation from Context and Resources.

Change-Id: I948bbdf7373ad291171eed0b497959dce8c2edf3
2014-06-12 13:18:59 -07:00