Commit Graph

42 Commits

Author SHA1 Message Date
Alan Viverette
7d6854a229 Synchronize mutated constant state's drawable constant state
Mutating InsetDrawable's locally-held drawable alters its constant state,
so we need to update the InsetDrawable's reference to match. This ensures
that any drawables created using getConstantState().newDrawable() will
match the mutated versions.

Bug: 19213175
Change-Id: If9063bcc0942691a8940443e607f2dc722fc6e13
2015-01-30 16:19:45 -08:00
Alan Viverette
f0f7f8ceb5 Move drawable out of inset state, only store constant state
This ensures that InsetDrawable's constant state only references other
constant states rather than holding an entire Drawable, which provides
a clean separation between local and constant state information. This
ensures that calls to mutate() can create a new constant state without
losing local drawable state and that newDrawable() still relies on
the same constant state.

Bug: 19156549
Bug: 13877782
Change-Id: I48146f6c7ac3593009cfa323fc341bcd7d8ab21b
2015-01-27 12:07:33 -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
6dfa60f33c Avoid extra saveLayer calls in RippleDrawable, fix docs
Also fixes opacity returned from InsetDrawable to accurately reflect
the transparent inset area and updates button to correctly use tint.

BUG: 18226391
Change-Id: Ia9a88d9d663990a6829d2f251c7f59ea2a79d816
2014-12-04 16:52:16 -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
cdd5e067f2 Fix inset drawable's intrinsic size, replace ic_text_dot asset
BUG: 17648301
Change-Id: I8af0f6d1beee7a1cb3a3b9db571ed2c407e24556
2014-10-10 14:08:32 -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
39e33621a7 Fix theme propagation to contained android:drawable elements
BUG: 17790666
Change-Id: I6733a98e779cad0d384b917c57d2b3409a166c02
2014-10-02 15:54:23 -07:00
Chet Haase
014e14b242 Fix behavior of inflating InsetDrawable
A recent change to InsetDrawable changed the behavior of inflating
an InsetDrawable when it already had a valid bitmap. The new behavior
avoids throwing an exception with a bad resource where it used to
throw, because the existence of the bitmap makes it avoid trying to
load the resource at all.

The fix is to reintroduce the old behavior of forcing it to load the
resource regardless of the state of its bitmap.

Issue #17068252 InsetDrawable inflation CTS test is failing

Change-Id: I941388730d4479f8f4747a7985754ffdf5133f04
2014-09-02 16:28:48 -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
0bece71ee2 Throw exception when inset drawable is missing drawable attribute
BUG: 17068252
Change-Id: I3f5757966c1bb723311a2e2c41d419ed41369061
2014-08-15 19:12:28 -07:00
Alan Viverette
4afbbfd547 Add insets to dialog background
Also adds inset attribute to InsetDrawable to control all four insets.

BUG: 16868069
Change-Id: I909d05a6dc69747e9092e9ac34551b18d70d2b9f
2014-08-08 01:06:26 +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
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
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
c054966b71 Make optical insets actually work
Change-Id: I9fabf4cb939cc7a868f95580e7229745acde0418
2014-07-04 01:10:38 +00:00
Chris Craik
3e1585e05d Add outline support to InsetDrawable
bug:15933107
Change-Id: I3341417dc197a751442d2b4c2645a1520db41095
2014-06-30 17:53:05 +00: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
53a3ed7c46 Clean up hotspot bounds API
Change-Id: I7daf7e2d360d761f673aa69a0f925b8076ab19c6
2014-05-21 15:42:54 -07:00
Alan Viverette
c80ad99a33 TouchFeedbackDrawable is now RippleDrawable
Change-Id: I59f5f04b73089215c6320560556ac21beb03db06
2014-05-19 16:27:31 -07:00
Alan Viverette
860126b78a Make Drawable hotspot APIs public
Change-Id: I8377ed735f73f7083636947aa08a5427f1dc3bf6
2014-04-08 16:37:19 -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
Jeff Sharkey
ee3e1603fd Fix animations, padding in RTL mode.
Show directory animations coming in from left-side when in RTL
language.  Also fix NinePatchDrawable to correctly mirror its padding
when auto-mirrored, and fix InsetDrawable to propagate the layout
direction to the wrapped Drawable.

Bug: 10987190, 11030793
Change-Id: I1213802a07d0c4ced93438df1e6ddf5aed3df677
2013-10-01 16:03:00 -07:00
Romain Guy
84956d53f1 Add missing InsetDrawable.getDrawable() method
Change-Id: I216b0e8a327f495fd83ebac79013418dbae007b9
2013-07-30 13:01:40 -07:00
Fabrice Di Meglio
d04aaa97c9 am ddd02537: am b4426f15: Merge "Fix bug #8858012 layer-list\'s bitmap item\'s start/end gravity is incorrect on RTL under certain conditions" into jb-mr2-dev
* commit 'ddd02537a3fb499a82097453535194f4e29583dc':
  Fix bug #8858012 layer-list's bitmap item's start/end gravity is incorrect on RTL under certain conditions
2013-05-13 11:24:47 -07:00
Fabrice Di Meglio
731ba6649a Fix bug #8858012 layer-list's bitmap item's start/end gravity is incorrect on RTL under certain conditions
- set correct layout direction for Drawable

Change-Id: Ic8968acadbc7c9aa0bb68dd4dfbe09aa4e7cfa62
2013-05-10 19:21:35 -07:00
Chet Haase
b1af7f3d4b add getAlpha() to Drawable
Drawable has setAlpha(int), but no getAlpha() (although some subclasses have added the
method). This makes it more tedious to use the property. For example, animations that wish to
animate this property must explicitly give it a start value since this value cannot be queried
from the object.

The trick is that setAlpha(int) is abstract, only implemented by subclasses. We cannot take this
approach for getAlpha(), as we would break all subclasses of Drawable until they implemented the
method. Instead, we'll add a default method which returns an invalid value, making it easier for
clients of the method to detect whether the value is valid.

All subclasses of Drawble in frameworks have been changed to add an override of getAlpha() when
appropriate.

Issue #7485875 Drawables is missing getAlpha()

Change-Id: I06b6e35f1a56d202838eca44759c85c82595020a
2013-03-08 15:40:28 -08:00
Christopher Lais
6efd2bad95 Don't drop the drawable cache completely on configuration change
There was a lot of fancy code just above the clear to ensure
that drawables that aren't affected by the change are kept,
then the entire array was cleared.  This patch removes the
clear, so that the drawables that haven't changed are really
kept, matching the logs, comments and larger part of the code.

This patch also fixes the various constant states to return
correct ChangingConfigurations.

Change-Id: Ic11f6179537318d3de16dc58286989eb62a07f15
Old-Change-Id: I22495e6ed232dfe056207ce5155405af1fa82428
2011-01-14 12:31:26 -08:00
Romain Guy
f2a47782f3 Make Drawable.mCallback a WeakReference.
Many memory leaks occur because of long lived drawables. This should
help.

Change-Id: I2e9e8dee26579ec56e8e73f08f6b1d62be7812d9
2010-12-14 17:33:00 -08:00
Scott Main
dfe5c20440 docs: lots of additions to the resources docs
new drawable resources
add <merge> and <include> to layout resource
update drawable class descriptioons to point to resources guide
add ID resource type

Change-Id: I733eec50bb2671f28c9e6dd7dec14eb6586f5193
2010-06-21 15:19:23 -07:00
Dianne Hackborn
c297480937 Fix issue #2116977: buttons are huge and bent
Now that we are using preloaded drawables in compatibilty mode, when
constructing them from their constant state we need to set the new
drawable's target density appropriately.

Change-Id: I3665cbea09d38b9ac5f45f8c380dc8641f86b266
2009-09-14 16:32:56 -07:00
The Android Open Source Project
9066cfe988 auto import from //depot/cupcake/@135843 2009-03-03 19:31:44 -08:00
The Android Open Source Project
d83a98f4ce auto import from //depot/cupcake/@135843 2009-03-03 18:28:45 -08:00
The Android Open Source Project
d24b8183b9 auto import from //branches/cupcake/...@130745 2009-02-10 15:44:00 -08:00
The Android Open Source Project
b798689749 auto import from //branches/cupcake/...@125939 2009-01-09 17:51:23 -08:00
The Android Open Source Project
54b6cfa9a9 Initial Contribution 2008-10-21 07:00:00 -07:00