Commit Graph

82 Commits

Author SHA1 Message Date
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
1f29e71c46 Don't propagate level or RTL in LayerDrawable.setDrawable()
The developer used to be responsible for this and automatically
propagating the values breaks some use cases (ex. in Camera).

Bug: 20696311
Change-Id: Ia8ddc132c6d629bcc27d66f654baf30d9f078568
2015-04-29 14:28:25 -07:00
Alan Viverette
a54cd38ba5 Layout layers without intrinsic dimensions using FILL gravity
Addresses a regression in Calendar where a custom drawable that doesn't
implement intrinsic bounds is laid out incorrectly. Also fixes an issue
where ColorDrawable would be laid out incorrectly.

Bug: 20643614
Change-Id: I796f0d3e189e482cf6fa169a5dd13f654d72653c
2015-04-28 10:45:26 -07:00
Alan Viverette
388cd3b69c Fix visual styling for Material Spinner background
Adds explicit padding attributes to LayerDrawable, constrains the ripple
to fit within the container to avoid projection.

Bug: 19359934
Bug: 20083467
Change-Id: I46da941fba37552adeb2c1fe617b799f576df0c6
2015-04-21 13:00:33 -07:00
Alan Viverette
7a583e7bb3 Allow null layers in LayerDrawable
Bug: 20098214
Change-Id: I80285ddda7101ab7403048d38f9c40af6b692a1a
2015-04-13 11:03:55 -07:00
Alan Viverette
d18c59b3e6 Merge "Don't change state when inflating LayerDrawable" 2015-04-10 17:50:21 +00:00
Alan Viverette
9eaa604116 Don't change state when inflating LayerDrawable
Bug: 20098214
Change-Id: I6968697053587454bba42c0652efd99b9c8a8e25
2015-04-09 17:28:24 -07:00
Alan Viverette
45f207d6d9 Only parse LayerDrawable child items when necessary
Bug: 20098214
Change-Id: Ie9da5f6e494ede47f9fdc94481a3f8ca41d3ef00
2015-04-09 13:14:32 -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
Alan Viverette
1b23240f96 Only propagate state changes if wrapped drawable is stateful
Always update layer bounds if the contained drawable changed in any
way. Also adds null annotations in LayerDrawable and throws a more
useful exception when the layers argument is null.

Change-Id: Iae0cba68257e48b6a45fe081c3d4b0509d2dedd5
2015-03-20 11:08:46 -07:00
Chris Craik
bd3bfc5285 Improve docs for drawable tint and color filters
bug:19564477
Change-Id: I7e11baae2d4dd245965904c85b8855de71f6b6ac
2015-03-02 16:21:02 -08:00
Alan Viverette
6a8253fdc9 Update progress bar and seek bar backgrounds, fix seek bar thumb
Ensures LayerDrawable copies out the correct layer properties during
"tileification". This really needs to be deprecated or replaced in a
future CL, though, because it is potentially lossy (e.g. for
RippleDrawable, which is an instanceof LayerDrawable).

Bug: 19448441
Change-Id: I483e9c34fd781e280c13eb5951f96bc71a252819
2015-02-23 12:49:47 -08: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
Alan Viverette
d8c18e81c0 API for adding layers to LayerDrawable
Change-Id: I859c956a47d95fa1ce65b9eea9bc7be4659486bf
2015-02-12 18:49:42 +00:00
Alan Viverette
a756fd9af6 Prevent temp rect reuse across methods in LayerDrawable
Drawable invalidation may call back into methods that are relying on
the same temp rect objects, which mangles the values.

Bug: 19321598
Change-Id: If8aa434cf85c81d22b5d580e258926087248cd93
2015-02-10 16:39:46 -08:00
Alan Viverette
7354b30d90 Add layer width, height, gravity, and RTL insets for LayerDrawable
Bug: 18473819
Change-Id: Iae8e3dbd3fcc7f4c2f08b266c69d40036e75dfb6
2015-02-03 13:24:59 -08:00
Alan Viverette
f4c068b72e Add getDither, getFilterBitmap to Drawable for CTS testing
Also removes unnecessary overrides from PictureDrawable.

Change-Id: I13539b5204e8c0d8b9912da14de7ceae62720e3f
2015-01-06 11:01:36 -08:00
John Reck
dad7d84c04 Teach AssetAtlas about more drawables
Bug: 18317479

Change-Id: I16868ee204d24af72af9a2efc987f7e9eb1d266b
2014-12-09 14:18:33 -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
d7853e5763 Preserve inner drawable bounds and level on mutate
Also includes a tiny change to progress bar background alpha, which was
too dark to see.

BUG: 17285057
Change-Id: I8b0cc1c2c9405558b8163d8db9374d7c748317a2
2014-08-27 17:45:28 +00:00
Alan Viverette
a426445dfd Separate tint and tintMode properties
BUG: 16054922
Change-Id: I820fb857b671faf9eb27612e470e820c5c4cd6b5
2014-08-06 15:42:10 -07:00
Chris Craik
77b5cad3ef Add outline alpha
bug:16140822
bug:16566746

This allows background drawables to alter the opacity of a shadow
being cast with their own alpha values.

Change-Id: I49698cc7c1bf4b2b55ffe2f82899543ca62bc61c
2014-07-31 12:29:57 -07:00
Chris Craik
31ba192dd2 Tweaks to outline API
b/15283203
b/16142564

Remove boolean return value chaining, as it's redundant with
the data in the Outline itself.

Change-Id: I3116e57cd1b35c98b74e95195117edd7e39fb2df
2014-07-19 00:13:59 +00:00
Alan Viverette
7068c39526 Fix hotspot movement on focus change
BUG: 15726988
Change-Id: I97f88e5f7e404ecfcd5c254fddd18c8f6616064e
2014-07-16 00:06:14 +00:00
Alan Viverette
9e6f9924c4 Fix layer drawable inflation
Change-Id: I2f16e3ddea919c33dc7b62f457a994e6d8a66e5b
2014-07-07 17:12:42 -07:00
Alan Viverette
8e5e11b99f Handle configuration changes in drawable attributes
Adds themeable attribute support to InsetDrawable, adds support
for attribute configuration changes to all themable drawables.

BUG: 16045735
Change-Id: I3dc62d28801760ac69d303be81b6c78bb9bb5aca
2014-07-07 22:54:22 +00:00
Alan Viverette
7c0517272b Fix getOutline() in ripple and layer drawables
BUG: 16134862
Change-Id: Ibcef20fc154ecc342344770f96fbd3d77d6fad26
2014-07-07 15:29:12 -07:00
Chris Craik
58945975b2 Outline support in DrawableContainer and LayerDrawable
bug:14445484
Change-Id: I26a45b0115b976d0dbcc351a208dc0956bc52e96
2014-06-24 15:56:05 -07:00
Alan Viverette
b3c56086d8 Add support for setTint in all Drawables, clean up lint warnings
Change-Id: I962089ca59684cef28cb4a648d4a91e542bdf5d4
2014-06-16 11:00:24 -07:00
Jeff Brown
cda212d79d Revert "Add support for setTint in all Drawables, clean up lint warnings"
This reverts commit 381f83b613f7b6e71180983dbb992ff62f8dd6e3.

Change-Id: I1181f436c647216ac46162260d9d886197b24568
2014-06-14 02:16:41 +00:00
Alan Viverette
4b17118aca Add support for setTint in all Drawables, clean up lint warnings
Change-Id: Ia38b9d3e9d5c0072382050e815bdd9232b672e50
2014-06-13 16:18:11 -07:00
Alan Viverette
6dbe51b50e Clean up drawable theming APIs
Removes APIs for themed creation of a drawable from a stream, since
that doesn't involve any inflation. Also cleans up tinting methods
left over from previous clean up.

BUG: 15089957
Change-Id: I2af7aa9a6d351ae61b33ee1216c674fae1bffe11
Signed-off-by: Alan Viverette <alanv@google.com>
2014-06-02 16:39:04 -07:00
Alan Viverette
4d2f2483f6 Fixes hotspot list transitions, update to use a single hotspot
Also updates background and button colors to match spec, removes
dependency on bouncycastle Arrays. Vastly simplifies ripple drawing.
Adds APIs for maximum ripple radius. Makes selectableItemBackground
bounded by default and adds an unbounded version and theme attribute.

BUG: 15315168
BUG: 15314684
BUG: 15314830
BUG: 15316768
BUG: 15333033
BUG: 15344050
Change-Id: Ib0619587ce78e43056b66571bae185e0f1613185
2014-06-01 15:58:04 -07:00
Alan Viverette
53a3ed7c46 Clean up hotspot bounds API
Change-Id: I7daf7e2d360d761f673aa69a0f925b8076ab19c6
2014-05-21 15:42:54 -07:00
Alan Viverette
f31512eb17 Merge "Various API council fixes to drawables" 2014-05-20 17:45:52 +00:00
Alan Viverette
e5b082d6eb Various API council fixes to drawables
BUG: 15089957
Change-Id: Ieaf468bbff092e68f6313d8a5ecccda8b753806d
2014-05-20 10:45:22 -07:00
Alan Viverette
c80ad99a33 TouchFeedbackDrawable is now RippleDrawable
Change-Id: I59f5f04b73089215c6320560556ac21beb03db06
2014-05-19 16:27:31 -07:00
Alan Viverette
0cfb877f5a Simplify attribute extraction for themed Drawables
Also fixes a bug in GlowPadView that randomly popped up.

Change-Id: Id20508a44ea02b4a14c8f794de36e13a2c06587c
2014-05-14 17:40:53 -07:00
Alan Viverette
6195660681 Add ripple to switches, radio buttons, check boxes, seek bars
BUG: 14231772
Change-Id: Ie40eac9f68815294460175965a999dd75f4144b5
2014-04-22 19:07:06 -07:00
Alan Viverette
860126b78a Make Drawable hotspot APIs public
Change-Id: I8377ed735f73f7083636947aa08a5427f1dc3bf6
2014-04-08 16:37:19 -07:00
Alan Viverette
1c4e36c973 Clean up LayerDrawable, ensure cached values are cleared on changes
Change-Id: I9a652475b6ad66379b1298bf53cd5dcb1a1dd37b
2014-03-31 12:07:58 -07:00
Alan Viverette
47bf0d95ef Separate ripple animation logic, remove RevealDrawable
Change-Id: I9d0370cea288e6caf518209b5bc94a66a0f9176f
2014-03-26 16:43:07 -07:00
Alan Viverette
52b999f072 Implement APIs for obtaining, caching themed Drawables
When Drawables are inflated during preload (or otherwise without a theme)
they cache their themeable attributes in their constant state as an array
keyed on attribute index. Drawables inflated with a theme will simply
resolve theme attributes as part of normal inflation, and they will not
cache any themeable attributes.

Drawables obtained from Resources are pulled from theme-specific cache
when possible. If an unthemed Drawable exists in the preload cache, a
new constant state will be obtained for the Drawable and the theme will
be applied by resolving the cached themeable attributes and overwriting
their respective constant state properties. If no cached version exists,
a new Drawable is inflated against the desired theme.

Constant states from themed drawables may be cached if the applied theme
is "pure" and was loaded from a style resource without any subsequent
modifications.

This CL does not handle applying themes to several Drawable types, but it
fully supports BitmapDrawable, GradientDrawable, NinePatchDrawable,
ColorDrawable, and TouchFeedbackDrawable.

BUG: 12611005
Change-Id: I4e794fbb62f7a371715f4ebdf946ee5f9a5ad1c9
2014-03-24 18:00:26 -07:00
Alan Viverette
87980f9a73 Adds hotspot support to LayerDrawable and InsetDrawable
Change-Id: Id17f460c8e4e0a6bf9fd39a4a7b8c79fa2df8d29
2014-02-05 14:05:51 -08:00
Alan Viverette
ee779ea446 Fixing LayerDrawable methods for find layer and invalidate
BUG: 12475487
BUG: 12475575
Change-Id: I98eb2674a5090a20cae1cd69db6022859dcab36c
2014-01-13 12:59:50 -08:00
Alan Viverette
6ae1bdebf3 Merge "Revert "Fixing Drawable methods for find by layer ID and invalidation callback"" 2014-01-10 22:52:51 +00:00
Alan Viverette
218974915a Revert "Fixing Drawable methods for find by layer ID and invalidation callback"
This reverts commit 8f164f64ec.

Change-Id: I35637dee7b58c77387f375de585713ff76d4dd87
2014-01-10 22:52:42 +00:00
Alan Viverette
7682e03964 Merge "Fixes for DrawableContainer, LayerDrawable" 2014-01-10 22:10:14 +00:00