| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Change-Id: I031443de83f93eb57a98863001826671b18f3b17
|
|
|
|
| |
Change-Id: I119cc059c2f8bd98fd585fc84ac2b1b7d5892a08
|
|
|
|
| |
Change-Id: I184113680c5dc867b353df81961e93523b91bbc5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce new AssistData class that contains all data
the framework automatically generates for assist. Currently
populated with a very simple tree structure representing
the app's view hierarchy.
Reworked how we populate the class name for accessibility
info, so this is provided through a new method call on View
that subclasses can override. This method is also used
to populate the class name in AssistData.
Change-Id: Ibd0acdc8354727d4291473283b5e4b70894905dc
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Ensures that delegate code is run last. Previously, calling the super
method from an accessibility delegate set on a widget would only run
code in the widget's parent. Next, the delegate code would run. Finally,
the widget's code would run. As a result, the widget code would override
any data supplied by the delegate.
By moving all overridden code to internal methods, we ensure that the
call chain for super includes the widget's parent code followed by the
widget's code. The delegate code will always run last.
BUG: 17641433
Change-Id: Ib9d403156c1fc4fb04f65f3c126d1277a44b3740
|
|
|
|
|
|
|
|
| |
Fixes no-op on method call after configuration change at the expense
of removing a micro-optimization that wasn't really needed.
BUG: 18178233
Change-Id: I36eccf91b138e4bed34be96d9b87200edeb66938
|
|
|
|
|
| |
BUG: 18155988
Change-Id: Ic536027a54c10b2082fbc22476530165b76e2c59
|
|
|
|
|
|
| |
Bug 17600191
Change-Id: I5918866dbb6594725f4712a92acdef23003e8f3e
|
|
|
|
|
|
|
|
| |
Preserves pre-L behavior and avoids requiring developers to manually
set the tintMode to SRC_ATOP when targeting SDK 21+.
BUG: 17507827
Change-Id: I43f86cbcb9662172254f46700441ca85a54428f6
|
|
|
|
|
|
|
| |
Calling setTint now only modifies the tint. It won't force a mode change.
BUG: 17494736
Change-Id: I91392634869ed23981d8e61a403bb2be42aa7a07
|
|
|
|
|
| |
BUG: 16054922
Change-Id: I820fb857b671faf9eb27612e470e820c5c4cd6b5
|
|
|
|
|
|
| |
BUG: 16400590
BUG: 16403307
Change-Id: Ie924815a39eb0e683d1982b08ec478ed3edbfb7b
|
|
|
|
|
|
|
|
|
|
|
| |
Bug 15744992
MoveImage used an overlay to transition ImageViews. This
caused strange problems when ImageViews were contained in
other Views. The new ChangeImageTransform does a smooth
transition for changes in scale type and bounds.
Change-Id: Ia5021f4828f8f818a8699b3bdd38437aeba1cfc8
|
|
|
|
|
| |
BUG: 15287810
Change-Id: Ic7a9549dc1ba8afd07e9a196371ed349a54aaf2f
|
|
|
|
|
|
|
| |
Also cleans up handling in setters for managed drawables.
BUG: 15391544
Change-Id: Idc08f7eaea0050feb6403566985a6d58185b81f8
|
|
|
|
|
| |
BUG: 15285217
Change-Id: Iad44454fe16ac27ed20b9c17ae2df69649339eed
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
BUG: 12611005
Change-Id: Ic0057be4e4c2d0c61ce02a019b3f7d0625e3a016
|
|
|
|
|
| |
BUG: 12876148
Change-Id: I8c27546851f491e229a880307d34e1da8e74e6c2
|
|\
| |
| |
| |
| |
| |
| | |
ImageView.java
* commit 'be878d8773cc841e5e144a6332c576c650e88126':
Fix typo in ImageView.java
|
| |\
| | |
| | |
| | |
| | | |
* commit '0196e561f280e6cc361442036da277a630e68558':
Fix typo in ImageView.java
|
| | |
| | |
| | |
| | | |
Change-Id: Iaa7b020f09c893a5fe006a8523686dd8b9a8f872
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Includes special handling for attributes that can affect the image's
drawing opacity and bounds, e.g. xfermode, alpha, and matrix transform.
BUG: 12120109
Change-Id: Ieeec11ff35af899c4e6fcf6364633c15ec94241e
|
|\ \ \
| |/ /
| | |
| | |
| | |
| | |
| | | |
standard media router icon." into klp-dev
* commit '40c81e4a5d96f8a3853045b289f6131c44d3155d':
Make quick settings show the standard media router icon.
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fixed a bug in ImageView where we failed to inform a newly updated
Drawable about the visibility state. This caused AnimationDrawables
to not animate when attached to an existing ImageView *unless* that
ImageView happened to be attached to the window *later* or have
its visibility toggled for some other reason.
Bug: 11257292
Change-Id: Iba9e0db5ba0db2b022950aec0c6f60a435da8ad2
|
|\ \
| |/
| |
| |
| |
| |
| | |
badges; update SeekBar
* commit '266b3026c42ed3ba0feedd9abe3e3bb6932c2f23':
Use SCREEN Xfermode for keyguard badges; update SeekBar
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Plumb through the necessary API features through Drawables and
ImageView but leave it hidden for now pending future API review and
plumbing through the rest of the framework Drawable implementations.
Update SeekBar assets used for keyguard transport control.
Set selected status directly instead of finding views by id.
Bug 10531608
Bug 10784913
Change-Id: Ia38bd04ad1bc26e9e6da1dda8a374c9ba3ceccb3
|
|/
|
|
|
|
|
| |
Also updates the constructor of every class that extends View.
BUG: 10676369
Change-Id: Ifaf27bf82028d180afa4931c0e906df88d858ac3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- default value is "no mirroring"
- introduce android:autoMirrored as a new attribute for Drawable,
BitmapDrawable, LayerDrawable, StateListDrawable and NinePatchDrawable
- setting android:autoMirrored="true" means that the drawable will
be mirrored when the layout direction is RTL (right-to-left)
- also fix an issue with ImageView drawable layout direction not
updated correctly when RTL properties were changed
See bug #7034321 Need Drawable RTL support
Change-Id: If595ee5106c786f38e786d3a032e182f784a9d97
|
|
|
|
|
|
|
|
|
| |
Adding features which round out the animation APIs (missing
getters, etc.). Also fix doc typos.
Issue #8350510 Add APIs needed for future animation capabilities
Change-Id: I063736848ba26e6d6c809b15fc3a103c74222f46
|
|
|
|
|
| |
Bug: 8439502
Change-Id: I80075eddf6abc7999b70e665e692d88b81d5f087
|
|
|
|
|
|
|
| |
An app trying to modify the returned matrix (despite what the
documentation says...) would crash when the matrix is identity.
Change-Id: I8aae06b712907085088fb9f0321352dd2c3462ac
|
|\
| |
| |
| |
| |
| |
| | |
jb-mr1-aah-dev
* commit '05d485044bc4607759e2b4ca5188858bceb120f8':
fix ImageView.getImageMatrix()
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
getImageMatrix() does not return "mDrawMatrix", instead it returns
mMatrix. This is not reflecting the matrix used in drawing when
Bitmap is changed and mDrawMatrix is set to null while mMatrix still
holds old invalid data.
Change-Id: If24c3118068eca70cfe15786f9715d95c4499f3b
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
MeasureSpec.makeMeasureSpec has a bug where a negative or very large
size parameter will cause the resulting MeasureSpec value to
overflow. RelativeLayout partially relies on this when measuring
children with mode UNSPECIFIED; a default value of -1 in a local
variable ends up being passed to makeMeasureSpec, overflowing a mode
value to create a measurespec that is very large in size, with AT_MOST
as the mode. The correct behavior is for RelativeLayout to propagate
the UNSPECIFIED mode.
Unfortunately a number of custom view implementations in apps rely on
the buggy behavior as they do not implement their own onMeasure
method. This makes them fall back to View's default onMeasure
implementation, which accepts the spec's size unconditionally for
AT_MOST or EXACTLY modes, but falls back on
getSuggestedMinimum[Width|Height] for UNSPECIFIED. If the view had no
background drawable with dimensions and no minWidth field set, this
fix for RelativeLayout causes some views to measure with a size of 0
rather than a size of the 30-bit version of 0xFF...
Revert these fixes in the interests of compatibility. The next version
will conditionally use the new behavior if targetSdk > JB-MR1.
This also required reverting a fix for ImageView's adjustViewBounds
functionality, as it cannot be implemented reliably if this
RelativeLayout fix is not also in place.
Revert "Fix UNSPECIFIED measurement in RelativeLayout"
This reverts commit 132a742b94b9716451ddef30cec20548b346f1b9.
Revert "Fix adjustViewBounds handling for ImageView"
This reverts commit d5edc7721791ad807b9a8fbd923b8d6e73c399cc.
|
| |
| |
| |
| |
| |
| |
| | |
Mention changes involving MeasureSpec/RelativeLayout/ImageView
behavior changes when apps target SDK > 17.
Change-Id: I232492a76ac048f7b460d28a87bd84cbbec4e4d7
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
All three of these are interrelated!
* Allow broken MeasureSpec values. The long-standing implementation
of MeasureSpec.makeMeasureSpec has been to add both values rather
than masking/or-ing the values together. Some old code relied on
this, such as if it mixed up size/mode params.
* Disable ImageView adjustViewBounds allowing the view to grow beyond
its initial size. A bug in RelativeLayout in the presence of the
above MeasureSpec fix causes this not to work properly in apps.
* Allow RelativeLayout to send overflowed/bogus MeasureSpec values
when measured with MeasureSpec.UNSPECIFIED mode. Some apps have
custom child views that do not properly handle UNSPECIFIED
measurements, but the exact overflow semantics caused this to
generate AT_MOST $REALLYBIG MeasureSpecs for those views instead if
they were placed inside a RelativeLayout in a scrolling container.
Change-Id: I977a5f1ba5637f0cba3d26a70139e2bcd021fc9c
|
|/
|
|
|
|
| |
External bug #40837
Change-Id: Ic7f3fefb7aabf4d006f9928b6f67d1263f039487
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When computing the adjusted view bounds, don't constrain the
dimensions by the original estimate if the opposite dimension has a
fixed size. This can result in the view never getting properly
enlarged.
Also fix a long-standing bug in MeasureSpec.makeMeasureSpec where
oversized or negative values could result in broken packed values.
Bug 7240251
Change-Id: I359d108ff52b6f3b5c4bf393d2271d28999c0127
|
|
|
|
|
|
|
|
| |
This reverts commit b1271ac183c36d0e9e3a524bec8908ed5aab9a45
Revert this for now pending further investigation of bug 7248600
Change-Id: Ieb0a279fa2208f2aa575759dd6dd94476b471b8d
|
|
|
|
|
|
|
|
|
|
| |
When computing the adjusted view bounds, don't constrain the
dimensions by the original estimate. This can result in the view never
getting properly enlarged.
Bug 7240251
Change-Id: I44fc017f8b661121f0042fcd59a4efde70be6bbe
|
|
|
|
|
|
| |
- rename getResolvedLayoutDirection() to getLayoutDirection()
Change-Id: I3afe56c0db0751952f5056c23893cb7455531d29
|
|
|
|
|
|
|
|
|
|
|
| |
- canResolveXxx() should be hidden
- resetResolvedXxx() should be hidden
- resolveDrawables(), resolveLayoutDirection(), resolvePadding(), resolveTextAlignment(), resolveTextDirection() should be hidden
- onResolvedXxx() should be merged into one callback
- fix also an issue with setting the layout direction of the drawable in ImageView
- fix also an issue with checking if TextAlignment can be resolved
Change-Id: I1402269ddf8632525f5550f80e5610e1a7b4034d
|
|
|
|
|
|
|
|
|
|
| |
Mirror the optimization from setImageDrawable into setImageResource
and setImageURI where we won't requestLayout() if the drawable's size
didn't change.
Bug 6359116
Change-Id: Iaae2100f3bddb2737628e31483b471c9e22d945f
|
|
|
| |
This reverts commit c96132ff53e5c26f5b0170edd85072006fb2bc70
|
|
|
|
| |
This reverts commit c1da65187a4b9de8f72bd617ef937030187c0a92.
|
|
|
|
|
|
| |
- see bug #6427629
Change-Id: I3119db3022bba0ee325b6d0d4471bfebd850ec10
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This flag was still hanging around pending any need to disable
DisplayList properties. But things seem stable, so it's time to clean up
and simplify the code.
At the same time, I reduced redundance in DisplayList dimensions. We
used to call drawDisplayList() with width/height parameters that were
used to do a clip reject. This is redundant with the DisplayList properties
that set the bounds of the DisplayList; the left/right and top/bottom properties
represent the same width/height properties formerly used in drawDisplayList().
The new approach is to not pass dimensions to drawDisplayList(), but to
instead pull those dimensions directly from the DisplayList when needed.
Change-Id: I8871beff03b1d4be95f7c6e079c31a71d31e0c56
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Usefulness: Keep track of the current user location in the screen when
traversing the it. Enabling structural and directional
navigation over all elements on the screen. This enables
blind users that know the application layout to efficiently
locate desired elements as opposed to try touch exploring the
region where the the element should be - very tedious.
Rationale: There are two ways to implement accessibility focus One is
to let accessibility services keep track of it since they
have access to the screen content, and another to let the view
hierarchy keep track of it. While the first approach would
require almost no work on our part it poses several challenges
which make it a sub-optimal choice. Having the accessibility focus
in the accessibility service would require that service to scrape
the window content every time it changes to sync the view tree
state and the accessibility focus location. Pretty much the service
will have to keep an off screen model of the screen content. This
could be quite challenging to get right and would incur performance
cost for the multiple IPCs to repeatedly fetch the screen content.
Further, keeping virtual accessibility focus (i.e. in the service)
would require sync of the input and accessibility focus. This could
be challenging to implement right as well. Also, having an unlimited
number of accessibility services we cannot guarantee that they will
have a proper implementation, if any, to allow users to perform structural
navigation of the screen content. Assuming two accessibility
services implement structural navigation via accessibility focus,
there is not guarantee that they will behave similarly by default,
i.e. provide some standard way to navigate the screen content.
Also feedback from experienced accessibility researchers, specifically
T.V Raman, provides evidence that having virtual accessibility focus
creates many issues and it is very hard to get right.
Therefore, keeping accessibility focus in the system will avoid
keeping an off-screen model in accessibility services, it will always
be in sync with the state of the view hierarchy and the input focus.
Also this will allow having a default behavior for traversing the
screen via this accessibility focus that is consistent in all
accessibility services. We provide accessibility services with APIs to
override this behavior but all of them will perform screen traversal
in a consistent way by default.
Behavior: If accessibility is enabled the accessibility focus is the leading one
and the input follows it. Putting accessibility focus on a view moves
the input focus there. Clearing the accessibility focus of a view, clears
the input focus of this view. If accessibility focus is on a view that
cannot take input focus, then no other view should have input focus.
In accessibility mode we initially give accessibility focus to the topmost
view and no view has input focus. This ensures consistent behavior accross
all apps. Note that accessibility focus can move hierarchically in the
view tree and having it at the root is better than putting it where the
input focus would be - at the first input focusable which could be at
an arbitrary depth in the view tree. By default not all views are reported
for accessibility, only the important ones. A view may be explicitly labeled
as important or not for accessibility, or the system determines which one
is such - default. Important views for accessibility are all views that are
not dumb layout managers used only to arrange their chidren. Since the same
content arrangement can be obtained via different combintation of layout
managers, such managers cannot be used to reliably determine the application
structure. For example, a user should see a list as a list view with several
list items and each list item as a text view and a button as opposed to seeing
all the layout managers used to arrange the list item's content.
By default only important for accessibility views are regared for accessibility
purposes. View not regarded for accessibility neither fire accessibility events,
nor are reported being on the screen. An accessibility service may request the
system to regard all views. If the target SDK of an accessibility services is
less than JellyBean, then all views are regarded for accessibility.
Note that an accessibility service that requires all view to be ragarded for
accessibility may put accessibility focus on any view. Hence, it may implement
any navigational paradigm if desired. Especially considering the fact that
the system is detecting some standard gestures and delegates their processing
to an accessibility service. The default implementation of an accessibility
services performs the defualt navigation.
bug:5932640
bug:5605641
Change-Id: Ieac461d480579d706a847b9325720cb254736ebe
|