Commit Graph

81 Commits

Author SHA1 Message Date
Teng-Hui Zhu
18ad5f4368 Update the documentation related to VD / AVD
fix:32705240
fix:32683765
fix:32831830
fix:32705244

Test: make offline-sdk-docs and view the HTML file.

Change-Id: I6ae3e5850494f13a241b2e9e4d2c5b95d5199aae
2016-11-16 15:14:10 -08:00
John Reck
299659ddb7 Convert VD/AVD to FastNative
Test: build & boots
Change-Id: I6519ba245eca1a43fb00de36c91a05a9740c8c5f
2016-10-07 10:33:44 -07:00
Doris Liu
1f859716a8 Restrict AVD and VD parsing to the current element instead of the whole document
This CL changes the AVD xml parsing to parsing only within the current
element, which prevents AVD parsing from always skipping to the end of
the doucment. So things that are defined after AVD in the same document
can be picked up by the xml parser.

The same fix has been applied to VD as well.

BUG: 31865175
Test: Manually following comment #1 in the bug above

Change-Id: I4ebdce1eb2e92d6f6e2c37caed9607253d24602f
2016-10-03 21:32:11 +00:00
Doris Liu
7d76fc4433 Improve Javadoc for AnimatedVectorDrawable
This CL adds a summary of what developers can expect from running
AVD on RenderThread.

Also re-structure the class level Javadoc summary to better organize
the examples.

Test: make offline-sdk-docs

BUG: 30402908
Change-Id: I7111f67db5f2ec352730f633bb34f2e89e1c70e9
2016-09-21 00:36:16 +00:00
Teng-Hui Zhu
d64255f61d Update the javaDoc for VectorDrawable and AnimatedVectorDrawable
b/30269243

Change-Id: I139a3fcac95c41a667fa06aa3223b812caad6243
(cherry picked from commit c224417511)
2016-08-22 18:32:09 +00:00
Doris Liu
853b23d1fa Fix listeners not getting called when AVD falls back on UI thread
When AVD fall back on UI thread, in addition to transfer the pending
actions from RT animator to UI animator, we also need to transfer
the listener, if any.

BUG: 30901495
Change-Id: Ib4a7ebb2996a02596bb5789704617c894a5dd474
2016-08-17 00:20:39 +00:00
Dianne Hackborn
b34cbedb4e Fix issue #30766518: Document what targeting N does
Also small documentation cleanup in a few other places.

Change-Id: I16581c751aa0ffa146faba3b140a8fa2170f4520
2016-08-09 13:21:24 -07:00
Doris Liu
f7167e8f28 Support repeatMode = reverse in AVD
BUG: 30641232
Change-Id: I34c823a0a45c8441873a9b467275174c5529994b
2016-08-05 01:44:20 +00:00
Doris Liu
126df850ce Support AVD animation falling back on UI thread
AVD will fall back to UI thread animation if the host view is
rendering onto a SW layer.

BUG: 27617346
Change-Id: I5b644529048a0c30aada3abf2f4e95e40760936d
2016-06-16 22:09:44 +00:00
Doris Liu
c9493879d7 Support Keyframe definition for AVD on RT
BUG: 27441613
Change-Id: Iece386f65f3704d1b7caa2b3690a8d3048ccf6e2
2016-06-09 14:40:32 -07:00
Doris Liu
a57e95a6a3 Throw Exception for wrong valueType with API guard
Previously, wrong valueType error is swallowed in jni. As a result,
some animations are quietly skipped without letting developers know.
This CL maintains that behavior for pre-N, and throws Exception
to notify developers of the error for N and above.

Bug: 29009391
Change-Id: I3e8f003cdb97d214da72af3f93a84f64797b1c2c
(cherry picked from commit 94db09917a)
2016-06-09 14:39:18 -07:00
Doris Liu
3f6a95283a Merge "Handle hidden RT VectorDrawable animators" into nyc-mr1-dev 2016-06-09 21:30:03 +00:00
Doris Liu
718cd3eb70 Handle hidden RT VectorDrawable animators
This CL changes the target of VD specific animators to VectorDrawable,
instead of RenderNode. The benefit of doing so is that animators can
now detect whether the animation is meaningful by checking whether
their VD target is in the display list. If not, that means the VD is
not drawing for the current frame, in which case we can be smarter
and more power efficient by removing the animator from the list and
posting a delayed onFinished listener callback.

By setting VD as the animation target, when an ImageView decides to
update its drawable from one AVD to something else, we'll be able
to detect that the previous AVD is no longer in the display list,
and stop providing animation pulse to the stale AVD, which is
something we couldn't do previously.  This change also
handles the case where one AVD instance could be drawn in two
different views.

Bug: 27441375
Change-Id: Iaad1ed09cfd526276b95db0dd695275c28e074e8
2016-06-09 10:27:59 -07:00
Doris Liu
792926a58c Improve the property modification effiency of VectorDrawable animators
Previously, the VectorDrawable animators modify the VD properties by
doing reflection based on the property name. This CL avoids the overhead
of calling reflection by wrapping the setters of VD objects in
Float/IntProperty.

Bug: 28124049
Change-Id: I562c8d749fdfe508564c82a700a92e835cdd9ff4
(cherry picked from commit 9f3b31b953)
2016-06-08 20:43:34 +00:00
Doris Liu
d049837397 Pause infinite AVD when the drawable is not visible
And resume when it becomes visible again

Bug: 27441375
Change-Id: Ic5140a30f5726df252ca63be9e14c495cbd76466
2016-04-18 18:48:43 -07:00
Doris Liu
1d8e194661 Make AVD thread safe
This CL introduces staging properties to VectorDrawable, which holds
properties coming from UI thread. When staging properties are changed,
they are marked dirty, and the staging properties then get pushed to
RenderThread at sync point. In cases where no staging property has
been changed, at sync point we sync the render thread properties back
to staging properties to reflect the latest render thread animation
value change.

Also, update Vector Drawable bitmap only when it's dirty

Bug: 27343970
Bug: 27385912
Bug: 27263667
Bug: 27927674
Bug: 27774383

Change-Id: Ia864f5400a53a08dbfb284fae581fb1aac4fff87
2016-04-04 14:40:17 -07:00
Teng-Hui Zhu
988fc6fa43 Fix callback issue for AVD on UI thread
We have created AnimatorSet from XML, but it is assigned to the AVD only when
we start the animation due to theme-ing operations.

Given listeners can be added to AVD at any time, we have to cache them if
AnimatorSet is not setup yet.

b/26979225

Change-Id: I94315892de83f93a0205efe5e70dca0cd0f0a8e3
2016-03-22 15:06:21 -07:00
John Reck
7ab0f835e6 Switch back to UI-driven AVD
Bug: 27550546
Change-Id: I7c37438555fb8a72d2ff0bc42bf5de25a31cc464
2016-03-14 17:16:10 -07:00
Alan Viverette
781fbf28c7 Merge "Ensure all Java-side usages of config flags are using Java flags" into nyc-dev 2016-03-14 15:01:51 +00:00
Alan Viverette
ac85f90466 Ensure all Java-side usages of config flags are using Java flags
Previously we were using native config flags in some places that expected
Java flags, and vice-versa. All usages of config flags are now annotated
to ensure we're using the right type.

Cleans up annotations on most methods that were touched.

Bug: 21161798
Change-Id: Ifd87dfb12199fc8258915d8a510e03ddb681ca89
2016-03-11 15:15:51 -05:00
Alan Viverette
79936ddda4 Merge "Add consistent @NonNull annotations for drawable callbacks" into nyc-dev 2016-03-11 18:42:43 +00:00
Tenghui Zhu
335875bb48 Merge "Add the missing overriden API" into nyc-dev 2016-03-11 17:36:00 +00:00
Alan Viverette
f6d87ec193 Add consistent @NonNull annotations for drawable callbacks
Bug: 27599515
Change-Id: I33fdc5392302403bfff9cc74a8226173ec962af6
2016-03-11 10:09:14 -05:00
Teng-Hui Zhu
1af03b1d53 Add the missing overriden API
This is exposed by the CTS test.

Change-Id: Ic25fda1567d8c8504612d4e825dbb646f7db1076
2016-03-09 15:38:55 -08:00
Tenghui Zhu
35d44ba439 Merge "Update the VD and AVD's getOpacity()" into nyc-dev 2016-03-09 18:07:43 +00:00
Teng-Hui Zhu
f10d08a3d4 Update the VD and AVD's getOpacity()
static VectorDrawable should be returning Transparent while root alpha is 0.
AnimatedVectorDrawable running on RenderThread now, and the opacity should
be conservatively set as Translucent.

http://b/27554766

Change-Id: I9a78696cab94f10ba40a733cc9c00f1c2d7ebb7f
2016-03-08 15:54:50 -08:00
Doris Liu
44027214d4 Handle multiple animation actions within one frame
Bug: 27438778
Change-Id: I1b14da4bc7b4e82e5b4e45f3eb9ad04e3d7842c4
2016-03-01 18:09:21 -08:00
Doris Liu
28cfd20f02 Support running AVD on UI thread
By default, AVD animates on RT thread. But since in some cases there's a
need for a finer control on when the frame update for the animation should
happen, such as coordiating the AVD animation with other animations that
run on UI thread, we are providing a way to force the AVD to run on UI
thread.

Bug: 27278616
Change-Id: I372ecd3dc52e3fa0bdce3a1e9c19443f9b199027
2016-02-23 14:40:47 -08:00
Doris Liu
c21e8bcb01 Ensure invalidate is called after start()/reverse()
Change-Id: Iec96ada74cc7b845e21b5f0eb208ff7c7b1071ed
2016-02-19 14:35:55 -08:00
Doris Liu
8b083206ae Revert "Revert "Check RenderNode's owning view before attaching animators""
This reverts commit eb40178af3.

Change-Id: I6838ecb35b50847746ee66ac204f14eb5f579b91
2016-02-19 13:52:41 -08:00
Doris Liu
c4bb185d41 VectorDrawable native rendering - Step 5 of MANY
This is reverting the revert of what reverts the revert of the original
implementation. Fourth revert is a charm!

This reverts commit df7fdb1e0b.

Change-Id: I6fc3a5accfd8b79c3da31bbc101ad9e9b4d6e7dd
2016-02-19 13:51:31 -08:00
Doris Liu
df7fdb1e0b Revert "Revert "Revert "VectorDrawable native rendering - Step 5 of MANY"""
This reverts commit 0d20a275a5.

Change-Id: I97c782f1164a5d39ab74dc098cca71d9e1b30cd8
2016-02-18 18:37:02 +00:00
Doris Liu
0d20a275a5 Revert "Revert "VectorDrawable native rendering - Step 5 of MANY""
This reverts commit e03ef25a3e.

Change-Id: I9c2e1c891667451a3ee668e414bf337ad67279ab
2016-02-12 19:49:29 -08:00
John Reck
e03ef25a3e Revert "VectorDrawable native rendering - Step 5 of MANY"
Bug: 27136799

This reverts commit 18bdf443e3.

Change-Id: I825b061eec2a591f2d18119ba64494624b9ad4f2
2016-02-11 17:02:33 +00:00
Doris Liu
18bdf443e3 VectorDrawable native rendering - Step 5 of MANY
Implemented reset() (public API for AVD)
and reverse() (internal API that needs to be supported)

Change-Id: Ife1650049f271cad1347943151a5800c40c20aa2
2016-02-11 01:08:47 +00:00
Doris Liu
ef062ebd20 Ref count the nodes in VectorDrawable
Also added API check so that for pre-N we ignore invalid VD animation,
in order to avoid breaking old apps.

Bug: 26975469
Bug: 26949340
Change-Id: I498539ad6a05de3d886e7dcdc8a167e78333ab11
2016-02-05 11:12:25 -08:00
Doris Liu
766431aa57 Revert "Revert "VectorDrawable native rendering - Step 4 of MANY""
This reverts commit 5a11e8d0ba.

Change-Id: I7a48b59c4f930dad65ddc8590c25a12636244ea2
2016-02-04 16:29:51 -08:00
Doris Liu
5a11e8d0ba Revert "VectorDrawable native rendering - Step 4 of MANY"
b/26949340 and b/26975469, b/26975079 as well 

This reverts commit f276acd984.

Change-Id: I4b55177daf0d289bc03604c71fd4bf579f65073a
2016-02-04 20:59:00 +00:00
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