Use ICU's implementation of SimpleDateFormat in LayoutLib. The format
patterns used are not supported by java.text.SimpleDateFormat.
The change required adding a mechanism for promoting visibility of
fields in the framework in the create tool.
TODO: Add additional tests in the create tool for this new
functionality.
Change-Id: Id0f4be41f9731c42a28919c32cc5ef271a656982
The XML editor already warns about the empty strings in places where an
int value is required. There's no need to show another warning for it in
the rendering panel. Also, the rendering might have also failed when the
empty string is encountered. Try an continue the rendering, because no
rendering state is really bad.
Change-Id: I85106f37e4462f237e85f0b065b4ce8a4bfabf4d
Fix a couple of bugs (ArrayIndexOutOfBoundsException due to
miscalculation and a typo - swapped src and dst) introduced in the CL:
78aa664 Poor implementation of Path.approximate()
Change-Id: Iff7dbbf66d2714df51699ddb9a4169c38feefa7b
Include a very poor implementation of Path.approximate() in LayoutLib
that only returns the first and last coordinate of the path. This avoids
crashing the rendering when certain assumptions are made on the value
returned from the method.
Also change the error to a warning.
Change-Id: I9241dec734d4df90a9eebd1e6de8b3e443eee3c8
Store a list of drawer layouts with tools:openDrawer encountered and
call openDrawer on them during the post-inflation processing.
Change-Id: Idee299a9af1bb106509a03bb2e8424c372b93dc5
It's now possible to use tools:list_item attribute for RecyclerView to
point to a default layout, rather than always using a TextView.
Change-Id: I5d522b2f0ca38b420fddfcb0f73a26d95707da79
This CL is a start for making the design able to render the AppBar.
We are still missing support for: system menu and the app icon.
Change-Id: I19600f8ee1e7e6492186a0b7ae7fb38c82e15c02
If the preferred ColorModel doesn't support alpha, the shadows are
incorrectly rendered. In the theme editor on Linux, the graphics device
object doesn't support alpha so we need to use a different color model.
We default to ARGB which works fine.
Change-Id: I3e71e3d086fa4975a9149d36792e574813f37dfd
Also includes some fixes for BridgeTypedArray.getInt() - when value is a
color, when value is an octal int, when value is true/false.
Bug: http://b.android.com/162438
Change-Id: I0b985ea3437be8018d0e116e7a599843cc7aacd6
- Don't crash when Resources.get<Type>Array() is called.
- If the IDE supports it, actually return the value.
- Add tests for getArray.
- Update test app to latest gradle plugin version.
- Switch to using AppTheme for tests, since the tests depend on some
custom theme attributes. The AppTheme now inherits from
Material.Light.DarkActionBar, so other tests should be unaffected.
Depends on a newer version of sdk-common, which fixes the parsing of
array resource in value files.
Bug: 12372031
Change-Id: I313b61511e98ac1402d75056ebfdeeb005ebb96d
Switch from using tools nullity annotations (com.android.annotations)
to android framework annotations (android.annotation).
A new sdk-common prebuilt is required for LayoutLib tests. The new
sdk-common requires an updated tools-common. The updated tools-common
doesn't have nullity annotations. So, instead of adding the annotation
dependency, just reuse the platform ones. This also paves the way to
include other platform annotations like IdRes etc.
Change-Id: I87b8f767d3681d914abe7d1329e26a87f49f50a7
New method overloads have been introduces in android.content.Resources.
Change BridgeResources to overrides the appropriate ones. Also, fix the
implementation to the new behaviour.
Change-Id: I7b83b329f04286512f223c0fafc3f989f1b9a244
Ensures that having a DatePicker in the layout doesn't crash the
complete rendering. The rendering is still not perfect, but at least it
works.
- Return a non-null window token so that ViewPager thinks that it's
attached to a window and doesn't skip populating the views.
- Fix a style not found issue.
Change-Id: Ied2b71de5b32bcb640bf4ec445e8a39509f800e9
Essentially moves line breaking measurement later in the process when
character widths have already been computed.
Change-Id: I17c5bc10d373d8906c5caf86604ce8504650cd7f
Context.getClassLoader() is used by the LayoutInflater and can be used
by custom views. However, when called from the LayoutInflater, this
needs to return only the Framework classes. This is so that the IDE gets
a chance to instantiate the custom views, which helps in better error
reporting and better fallback in case of exceptions, like MockView.
To workaround this need of the same method returning different results
based on where it's called from, the method call in LayoutInflater is
renamed to getFrameworkClassLoader() and the new method is injected in
Context. The implementation of getFrameworkClassLoader() maintains the
existing behaviour of getClassLoader().
Context.getClassLoader() is now modified to return classes from both
Framework and the app namespace.
Also, update the list of packages to search for Framework views.
Change-Id: I1a6be4aa1fc5c1c5520b5440a348a52f10b6eb3b
A missing catch clause caused rendering to be failed when there is an
include tag that doesn't specify layout_width and layout_height. Also
improve the error messages to make debugging easier next time.
Change-Id: I617762636973a010b34da167c7b5fcd328b7d178
- Remove ICU dependency (use the version bundled with platform).
- Restructure intelliJ project to move dependencies to module.
- Minor fixes to layoutlib tests.
TODO:
- Load ICU data.
- Hyphenator doesn't work.
- High quality line breaker not present.
Change-Id: I965e096e17bfc97ee995a649c3f4f6f64bb4f70d
Create XmlPullParser using callback provided by the client. This enables
clients to choose which XmlPullParser implementation they want.
Change-Id: I9ad97a4777820cdbe5c8fc3716f74ddec9065c70
Drawing empty rects results in IllegalArgumentException on Mac JRE 1.6.
Prevent that by checking the bounds before attempting to draw the rect.
Bug: 20687353
Change-Id: I45f48ee125196480bb6510cc49b24d2122bc3e48
For correct low-level drawing of low level text, a method that
includes context for shaping is necessary, and it's similarly useful
to provide the direction explicitly rather than running the BiDi
algorithm on the text. The drawTextRun method (in both char[] and
CharSequence variants) has provided this functionality for several
major releases but has been internal. This patch exposes the
methods publicly, and also improves the doc strings for both
the new method and some related ones.
Bug: 20193553
Change-Id: I9be33ca5ae3e7db2b69a56298400671d5ef8ad05
Set the bounds on the drawable before getting the view outline for
shadow. Also, reuse the temp outline object in AttachInfo rather than
allocating a new one each time.
Change-Id: I69793d38d60c5b9f9050569f2b22fbc7b90620bf
- RecyclerView now supports XML attributes natively. Thus, remove the
custom support via tools attribute. Users with older versions of
RecyclerView should update.
- Add Context.getPackageName() support used by RecyclerView.
- Update SessionParamsFlags with the new changes and rename it to
RenderParamsFlags.
The attribute behaves slightly different from the original tools
attribute. For usage, see commit 044b5b61e96 in frameworks/support.
Change-Id: I12073e37a2ba411558ca1d3e30c399e3d9a0b144
* commit '1f3c7f3f500bdbfd790c20872961d84ef617f066':
Update golden image for tests.
Update to using LayoutlibCallback.
Remove implementation of deprecated method.
Add @empty support.
Added two new options to the wm command.
1. Set the screen size based on dips rather than pixels using the
current screen density.
eg. adb shell wm size 320dpx320dp
2. Disable automatic scaling of the contents of the display.
When combined with the previous command, this is useful for seeing
how the UI would behave if the screen remained at its current density
but changed physical size.
eg. adb shell wm scaling off
Bug: 19899223
Change-Id: I545f893ba4861494e995cf0457ebeba1050d28dc