249 Commits

Author SHA1 Message Date
Deepanshu Gupta
7c4420bd04 Revert "Revert "Add support for Choreographer animations""
This reverts commit 8390b2ac85765e768d4b685077a96e6395d208b4.

The build break should now be fixed by
cbb1ba7f493116882b79578ec68646366f29cde4

Change-Id: I9bf21cc6dbdb5d515a665384dc6dfa464c3e6e2e
2015-12-01 21:58:29 -08:00
Deepanshu Gupta
cbb1ba7f49 Add ability to promote fields.
This adds the ability to promote private fields to public ones to
enable layoutlib to access them. This was first added in change
b556decf75b2b084e1aed54ac7fa23a141eedb7f, but reverted in
847b0d3ad22a47e0bca3d8bc8168fea7a0ba2f80. This is essentially a revert
of the change again, but without the SimpleMonthView related stuff.

Also, promote the Choreographer's field as is needed to support
animations.

Change-Id: Iee45a465c7a1cadd362c1841385941e6232e4900
2015-12-01 21:49:12 -08:00
Diego Perez
8390b2ac85 Revert "Add support for Choreographer animations"
This reverts commit 29ed07524ce0fc2e5950f5340d306247145d0efa.
2015-12-02 04:10:22 +00:00
Diego Perez
2ee825f507 resolve merge conflicts of 956cad8870 to master.
Change-Id: Iebad149b2768bcd7a52ee2c7c8c260a9279d1742
2015-12-02 00:04:08 +00:00
Diego Perez
29ed07524c Add support for Choreographer animations
First step to add support for Choreographer based animations. The
Choreographer_Delegate avoid using a handler so the animation callbacks
can be called on-demand (by using doFrame). This allows things like
frame by frame animation or selecting a specific frame, and doesn't need
a separate thread to run.

The CL also changes the System and SystemClock implementations to allow
to set specific times. Because animations heavily rely on the system
time, this allows controlling it. It can also be useful to ensure that
the rendering produces a deterministic result when using controls like
the Calendar widget.

Change-Id: Iff221d2698a82075cafbb60f341be01741f7aa13
2015-12-01 10:14:52 +00:00
Diego Perez
865ad592fe Merge "Fix delegation of methods within inner static classes" into mnc-ub-dev am: 603544d4c4 am: 14a826380d am: 0b76d094c6
am: f9281b6dfe

* commit 'f9281b6dfe94f1df0fac3ddbad846012b0a6fb7d':
  Fix delegation of methods within inner static classes
2015-11-19 03:19:00 +00:00
Diego Perez
6777f54fa4 Fix delegation of methods within inner static classes
Currently, delegation of inner static classes methods is broken since
the rewritten method tries to pass an instance to the outer class. This
updates the method generation to only pass the reference if the inner
class is not static.

Change-Id: I8493929cafdbd80968989b422af0f956fa65681a
2015-11-13 14:06:50 +00:00
Deepanshu Gupta
51747638ed am d7b7e93a: am 9969f858: LayoutLib: Fix ring rendering.
* commit 'd7b7e93a47e99fb54c91fb0d5b37971c8638074d':
  LayoutLib: Fix ring rendering.
2015-10-07 21:29:30 +00:00
Deepanshu Gupta
9969f858c3 LayoutLib: Fix ring rendering.
Bug: http://b.android.com/65503
Change-Id: I6ed901703cffee345f3083ea3ddeb52a28f4ac64
2015-10-07 12:46:15 -07:00
Diego Perez
f32a1089c6 am 4a36d982: am 081cebf5: Implement Path.approximate and add PathMeasure support
* commit '4a36d982592c3a3238009be785574dd65ff33cc6':
  Implement Path.approximate and add PathMeasure support
2015-10-07 16:15:55 +00:00
Diego Perez
081cebf52b Implement Path.approximate and add PathMeasure support
PathMeasure is needed to use the trimPath* properties in drawables.
These properties are used in the vector drawable for indeterminate
progress bars in Material so this is needed to be able to render them
correctly in the preview.
PathMeasure makes use of Path.approximate to calculate which segments to
paint.

Change-Id: Ic513f0a30a6aac0317f7c13cd75e9154c37405c8
2015-10-07 17:04:26 +01:00
Deepanshu Gupta
847b0d3ad2 Revert "LayoutLib: Switch SimpleDateFormat to icu."
This reverts commit b556decf75b2b084e1aed54ac7fa23a141eedb7f.

This is no longer needed as the SimpleDateFormat has been switched in
the framework. Also, the revert leaves the change to intellij inspection
profiles as is, because that change was independent of the main issue.

Change-Id: I6f4d7d9ddc10262b087ad6a2604fa50562fac043
2015-08-07 10:31:54 -07:00
Deepanshu Gupta
b556decf75 LayoutLib: Switch SimpleDateFormat to icu.
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
2015-08-06 16:04:04 -07:00
Deepanshu Gupta
82c7fdb1f6 Replace Locale.getDefault with custom impl.
In LayoutLib the default locale should always be the locale set the
rendering params. This change replaces all calls to Locale.getDefault in
the framework with calls to AndroidLocale.getDefault() which tries to
find the locale from the current context, but falls back to the original
call.

Change-Id: I496b35dcfc17fd61fedee21c7495541ab870b1fc
2015-08-06 16:03:19 -07:00
Deepanshu Gupta
214466c777 Include EpicenterTranslateClipReveal in LayoutLib
Needed by Spinner to create transitions that are then ignored :)

Change-Id: Ibe7167a643ecb186e97c9af446c0e1d2eb2d6f86
2015-07-29 14:30:05 -07:00
Deepanshu Gupta
c714501141 Revert "Replace infinite loop with foreach."
This reverts commit c77f9c76e4142db8dd76a28ad99b8f0395b82eba.

Class.getDeclaredClasses() doesn't return anonymous inner class and
hence the change was wrong.

The revert doesn't undo the typo fixed in the original change.

Change-Id: Id0595c4bc3db1185dd1ce39808a6b8c3610a1e11
2015-07-07 13:13:48 -07:00
Deepanshu Gupta
c77f9c76e4 Replace infinite loop with foreach.
A method call exists to find all inner classes. Use it instead of
manually enumerating the possibilities and checking.

Also fix a typo.

Change-Id: I2af678e92ea0c11b53617b247d8cda324391c185
2015-06-30 15:36:34 -07:00
Deepanshu Gupta
86caef1892 LayoutLib: Skip classes from java package.
Classes in "java" package can't be defined at runtime anyway. No use
including them in LayoutLib.

Change-Id: I7e7c46f0d74e32c893b23093828569b4fa5e3a73
2015-06-01 14:43:28 -07:00
Deepanshu Gupta
bcbe9ba0f9 Merge "Include Shapes in LayoutLib." into mnc-dev 2015-05-26 22:37:27 +00:00
Deepanshu Gupta
59164ec055 Include Shapes in LayoutLib.
Change-Id: Ifb32882c478f8d407ad904e224b67fe2bd65dc08
2015-05-26 16:28:53 +00:00
Deepanshu Gupta
476e582d2f LayoutLib: Change nullity annotations.
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
2015-05-22 17:57:29 -07:00
Deepanshu Gupta
d5b8284545 Make DatePicker rendering not fail.
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
2015-05-20 18:01:48 -07:00
Deepanshu Gupta
bfc9c3bcbe Inject anonymous inner classes of injected classes
When injecting classes in LayoutLib (eg. CreateInfo), so that LayoutLib
can refer back to the changes, also inject the anonymous inner classes.
Without this, the injected classes are not loadable. Although, LayoutLib
itself doesn't load these classes, but some tests do.

Change-Id: Ib5f6b779ef4d79dec8d614d3dbb26eeac88a1064
2015-05-20 23:31:31 +00:00
Deepanshu Gupta
f8ea750455 Make Context.getClassLoader() work.
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
2015-05-19 19:56:20 -07:00
Deepanshu Gupta
eca056926a Load ICU data in LayoutLib
Also return the correct version numbers for ICU data.

Change-Id: I7de973b5553c73948870b97bdc12a880bb2fdd85
2015-05-13 18:15:32 -07:00
Deepanshu Gupta
d77b9ed7dc Add missing delegates for M preview.
- 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
2015-05-13 18:15:20 -07:00
Jorim Jaggi
b10e33ff80 Split up android.policy into framework.jar and services.jar 1/3
Change-Id: Ifd69f1f3dd308a7e17a1442e2f3950da8b03cec4
2015-02-10 14:56:02 +01:00
Deepanshu Gupta
321bf43315 am 2d14feb4: Merge "Replace java.util.LinkedHashMap.eldest()" into lmp-mr1-dev
automerge: 03c822a

* commit '03c822aa585c319fb9cd05f392d8518501cc4f79':
  Replace java.util.LinkedHashMap.eldest()
2015-01-08 01:49:23 +00:00
Deepanshu Gupta
1330f79f95 Replace java.util.LinkedHashMap.eldest()
Provide an alternate implementation for the above method and replace the
calls to it, since the method is not available on host VM.

Change-Id: I329d86b457d1859b137da8fb2790ddd7f8efa788
2015-01-07 16:32:21 -08:00
Deepanshu Gupta
e88c120ebf resolve conflict for 8c831b2f -> lmp-mr1-dev-plus-aosp again
The earlier resolution (a2a5ce49b29b8e3bf3cd695ff9f968e5579f4be2)
wasn't the right one. This fixes it.

Change-Id: I6a6dc908d3e7dd510064a46df932d129a58eed98
2015-01-06 14:58:37 -08:00
Deepanshu Gupta
86f96d07c7 am 0db2524c: am b2ebb968: Merge "Remove Time from CreateInfo" into lmp-dev
* commit '0db2524caa01022629075a113d3370a1b7c3da30':
  Remove Time from CreateInfo
2015-01-06 22:22:56 +00:00
Deepanshu Gupta
b88a65df73 am cec8e5a1: am f861c0ce: Merge "Fix default initial value for preferences" into lmp-dev
* commit 'cec8e5a10de413c733223b8b1cc11b70c6254647':
  Fix default initial value for preferences
2015-01-06 22:22:40 +00:00
Deepanshu Gupta
2bd01ebfa9 am 7ed14549: am 7081a114: Merge "Add preferences rendering." into lmp-dev
* commit '7ed145493d3f5bea32c567980f77cc42f613197e':
  Add preferences rendering.
2015-01-06 22:22:36 +00:00
Deepanshu Gupta
4022272a4f Remove Time from CreateInfo
Time_Delegate was removed in change with Change-Id:
Iae5ef65678f0e6c7c5af520c45bd15980ce3fa55. But the name wasn't removed
from CreateInfo. This didn't cause any problems at runtime, but caused
the layoutlib_create tests to fail.

Change-Id: I079b1e024b97d389eb07d4f088fd860efbb02eb3
2015-01-02 13:55:20 -08:00
Deepanshu Gupta
f5b02eb7c4 resolved conflicts for a0bc2e7e to lmp-mr1-dev
The original change wasn't properly merged into lmp-mr1-dev because of
merge conflicts. This change manually resolves the conflicts. The main
reason for the conflict was that TimePickerSpinnerDelegate was swapped
with TimePickerClockDelegate.

This change also fixes the typo in the original change which was fixed
in a subsequent change.

Original commit: 12b6d29b7b5592dcfb6e6fd6f0c21a40f37d014a
fix for typo: cb09bc45c58740af953874f9915306d351fc3d9d

Change-Id: I50bf8c2d86318f632465a38adfad16d1382a9319
2014-12-30 14:07:29 -08:00
Deepanshu Gupta
dfeffd4c0a Fix default initial value for preferences
NO_SQ: Depends on unsubmitted changes.
Change-Id: I061cf71f6167d382e9ef060abeb4d5cff83c4104
2014-12-23 12:04:30 -08:00
Deepanshu Gupta
10bb1371dc Add preferences rendering.
NO_SQ: Depends on updating layoutlib-api-prebuilt.jar
Change-Id: Iae93ab74c478e6f2158e1528467bec9ee2d7ee9b
2014-12-23 12:04:30 -08:00
Deepanshu Gupta
302a7cc13a am 4628d51a: am 141c7614: Merge "Fix AnalogClock rendering" into lmp-dev
* commit '4628d51a0d01641ca7fe2cf8403ad551ea6f50ce':
  Fix AnalogClock rendering
2014-12-04 07:00:14 +00:00
Deepanshu Gupta
17a6170c62 Fix AnalogClock rendering
1. Change calls to java.lang.System.log* since they don't exist on the
host.
2. Clean up method rewrite mechanism in ReplaceMethodCallsAdapter.
3. Stub out creation of uninitialized GregorianCalendar.
4. Memory map the time zone data base file and provide a custom
implementation of BufferIterator for use by ZoneInfoDB
5. Delete unused Time_Delegate

Also fixed a comment in BridgeAssetManager and an error message in
FontFamily_Delegate.

Bug: http://b.android.com/79160
Change-Id: Iae5ef65678f0e6c7c5af520c45bd15980ce3fa55
2014-11-26 12:03:39 +00:00
Deepanshu Gupta
12b6d29b7b LayoutLib: Stub AM/PM keycodes in Time Picker.
TimePickerSpinnerDelegate doesn't need to deal with input when running
inside LayoutLib. So, we just return the keycodes as if it's running in
English locale.

Bug: http://b.android.com/79189
Change-Id: Ife0ae91a1e34a8dac379bc1dda1c1c8ed461c164
2014-11-18 22:02:40 +00:00
Deepanshu Gupta
2c5cddbd07 Don't skip loading object animator.
This is used by Buttons as part of StateListAnimator.

Change-Id: Id370869e71898d46e11bbd17ad31169c9f9f5274
2014-11-11 15:21:19 +00:00
Deepanshu Gupta
796e9b7f99 Add primitive shadows support to LayoutLib
The shadows rendered are not the same as rendered by the framework. The
main purpose of the shadows here is let the user know when shadows will
be cast.

Currently rectangular shadows are available in only two intensities. Any
elevation below 10dp uses one shadow and any elevation over 10 dp uses
the other.

Also, even though the code for arbitrary shapes exist, it doesn't quite
work yet. No shadows are visible when that code is run.

Change-Id: Ie8235ffccf1d3809713f5d8f82afde434817d6b2
2014-11-07 22:26:11 +00:00
Deepanshu Gupta
75bf1b1c6a Merge "Skip loading animations." into lmp-dev 2014-10-29 00:13:54 +00:00
Deepanshu Gupta
0b42936d86 Skip loading animations.
This is a temporary fix until Path.approximate() is supported.

Bug: http://b.android.com/77865
Change-Id: I28739e58f51fabaaf1dcc1c9be61cd0b17e84eec
2014-10-28 15:07:25 -07:00
Deepanshu Gupta
b6444c4309 Fix multiple styles case in resource resolution.
When multiple styles are applied to a theme, we only remembered the last
one. This change fixes the issue.

Change-Id: I46490e882edc3eabe522a641c83366234b5bb25d
2014-10-28 11:11:10 -07:00
Deepanshu Gupta
908a4f9a43 am 4f133894: Exclude KXmlParser from LayoutLib.
* commit '4f133894a6e98d8d30557ea42cec92cfb21fa5c9':
  Exclude KXmlParser from LayoutLib.
2014-10-08 17:34:12 +00:00
Deepanshu Gupta
4f133894a6 Exclude KXmlParser from LayoutLib.
The class was incorrectly being included in the LayoutLib.

Change-Id: I3c86662efa068019fe9165f2fc49a00d0a1b7f2d
2014-10-08 10:12:11 -07:00
Deepanshu Gupta
11b14e3996 LayoutLib: Use ICU's line break algo. [DO NOT MERGE]
Change-Id: I7e5b0ab7423a72f5a4b0e1163d0a537f0b03ba07
(cherry picked from commit 760f6394d0f65fbb5365186e8e068d53c506b653)
2014-10-08 02:05:05 +00:00
Deepanshu Gupta
039d5849ea Build layoutlib create tests as part of sdk build. [DO NOT MERGE]
LayoutLib Create tests are now built whenever LayoutLib create is built.

Change-Id: Id215e8690e435019579dba1734090a0d585f37e1
(cherry picked from commit 4efe6264f1251fa200427f54ea6f5dd4c4d03665)
2014-10-01 12:44:05 -07:00
Deepanshu Gupta
6fb5fdc233 Add layoutlib tests to DIST_DIR [DO NOT MERGE]
Add the layoutlib and layoutlib-create tests to DIST_DIR for sdk
targets. These can be used for continuous testing on the build server.

Change-Id: I747dddcddfd8009937668bec4d75cb99bf63235f
(cherry picked from commit f9c749c9901c459f77ffc6f4fbbc15f4142c6e0a)
2014-10-01 12:43:52 -07:00