Commit Graph

540 Commits

Author SHA1 Message Date
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
0437cac76c Make getInt in BridgeTypedArray accept empty String.
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
2015-08-04 11:57:10 -07:00
Deepanshu Gupta
9f280a9301 Fix Matrix_Delegate.native_getValues()
The bug manifested itself by not rendering the wifi icon in the status
bar.

Change-Id: I7debf3eef387965d774bf66e856812e67c8552a7
2015-08-03 10:24:57 -07:00
Deepanshu Gupta
7b1e486e87 Fix bugs introduced in 78aa664.
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
2015-07-31 13:00:05 -07:00
Deepanshu Gupta
78aa664b02 Poor implementation of Path.approximate()
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
2015-07-29 15:34:38 -07:00
Deepanshu Gupta
ccbc117703 Add tools:openDrawer to open a DrawerLayout.
Store a list of drawer layouts with tools:openDrawer encountered and
call openDrawer on them during the post-inflation processing.

Change-Id: Idee299a9af1bb106509a03bb2e8424c372b93dc5
2015-07-15 16:38:25 -07:00
Deepanshu Gupta
cd595f1998 Fix Paint_Delegate.native_getRunAdvance()
Bug: 22249573
Change-Id: I29f7abe6448f439059547e1c1e310d3d651ac2d8
2015-07-07 14:38:39 -07:00
Deepanshu Gupta
61f23e9bf7 Implement tools:list_item for RecyclerView.
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
2015-07-07 12:24:10 -07:00
Diego Perez
898be8bc76 am fa794eb0: am 2f710356: am 13c06d6c: am 1f33bdad: am 5e50e00c: Merge "Fix for shadows on theme editor" into lmp-mr1-dev
* commit 'fa794eb0025dbec6c1b90135495081d42f06bdaf':
  Fix for shadows on theme editor
2015-06-15 15:48:29 +00:00
Diego Perez
8df6d037be resolved conflicts for merge of 5a53816b to mnc-dev
Change-Id: Ice1ba8cb9793432e18635e77f4e3309f50bb7b3f
2015-06-15 16:17:08 +01:00
Diego Perez
fa794eb002 am 2f710356: am 13c06d6c: am 1f33bdad: am 5e50e00c: Merge "Fix for shadows on theme editor" into lmp-mr1-dev
* commit '2f7103565cf1732d6d1281195cfa49a1564751d7':
  Fix for shadows on theme editor
2015-06-15 10:14:30 +00:00
Diego Perez
5e50e00c66 Merge "Fix for shadows on theme editor" into lmp-mr1-dev 2015-06-15 08:35:00 +00:00
Diego Perez
5a53816b0d am c051c556: am e10e8005: am 68155986: am f5a99437: Merge "Fix crash when shadowSize is 0" into lmp-mr1-dev
* commit 'c051c556669f88e284f2922f8d28fad2138598ae':
  Fix crash when shadowSize is 0
2015-06-12 16:29:54 +00:00
Jens Ole Lauridsen
4dfe4d43ce Support AppBar from Material Design.
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
2015-06-11 13:50:22 -07:00
Diego Perez
e5be1d7a39 Fix for shadows on theme editor
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
2015-06-02 11:14:53 +01:00
Deepanshu Gupta
5779ad71ea Fix BridgeTypedArray.getType()
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
2015-05-28 14:57:43 -07:00
Deepanshu Gupta
642cff50f8 LayoutLib: Support getting resource arrays.
- 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
2015-05-26 16:33:10 +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
a5e6298b35 Add LayoutLibDelegate for new Bitmap method.
Original method added in: 721ae5fec5

Change-Id: Ie14d132459638cf103c390fae3f4c0c02bef2f34
2015-05-21 23:07:15 +00:00
Deepanshu Gupta
4d8e078c7c Fix overrides for BridgeResources.
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
2015-05-20 18:49:56 -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
10dff451f3 Use non deprecated method for creating ColorStateList
Change-Id: I9fce928276c8a2af55eb0615a4895abb6a973be5
2015-05-20 16:51:22 -07:00
Deepanshu Gupta
719c9b93f1 Fix line breaking.
Essentially moves line breaking measurement later in the process when
character widths have already been computed.

Change-Id: I17c5bc10d373d8906c5caf86604ce8504650cd7f
2015-05-20 16:51:22 -07: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
21b5645733 Fix include tag rendering.
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
2015-05-19 12:06:22 -07:00
Deepanshu Gupta
1ae505060e Update rendering fidelity tag to use constant.
Change-Id: If6c1076aa1e070c6bda7be16516fe0e18a95fe2d
2015-05-13 21:47:10 -07:00
Deepanshu Gupta
88b92541be Use Balanced line breaker instead of HighQuality.
Fallback to the Balanced line breaker till the time HighQuality one is
implemented.

Change-Id: I51e9882c5c733e5409f932ef740684829340ced9
2015-05-13 20:53:14 -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
Deepanshu Gupta
78af255846 Remove kxml dependency.
Create XmlPullParser using callback provided by the client. This enables
clients to choose which XmlPullParser implementation they want.

Change-Id: I9ad97a4777820cdbe5c8fc3716f74ddec9065c70
2015-05-13 18:10:46 -07:00
Chris Craik
caa6226b17 Revert "Anti-alias by default"
bug:20948129

Keep HIDDEN_DEFAULT_PAINT_FLAGS name.

This reverts commit 1b60cc0529.

Change-Id: I97cd9c556375c74c52b006bda4fc7b3a2cfa89e1
2015-05-13 13:44:30 -07:00
Diego Perez
635d8f4fe7 Fix crash when shadowSize is 0
Change-Id: I9f131afc95a2571fbc8a737df37f43653cfbb90d
(cherry picked from commit e81096458f)
2015-05-08 02:01:53 +01:00
Alan Viverette
78f12e43f0 Update LayoutLib for theme key changes to fix build
Change-Id: I47b400b320f16688cd32c1d8955a660637d93f4d
2015-05-07 16:24:10 -07:00
Deepanshu Gupta
2ab7b46056 resolved conflicts for merge of a663e012 to mnc-dev
Change-Id: I279cad7db6e9b5e97da3ea3c3bb91e09cabc7076
2015-05-06 17:45:29 -07:00
Deepanshu Gupta
c49b8f9d1b am 88b193d7: am 047a28ec: am 96437fb4: am 9aa600e7: Merge "LayoutLib: fix crash when shadow size <=0." into lmp-mr1-dev
* commit '88b193d717bb73cbe555e4e621f7b6efdf49cdaa':
  LayoutLib: fix crash when shadow size <=0.
2015-05-07 00:34:14 +00:00
Diego Perez
52ef7fce16 am ffeb8117: am 9c13c8de: am bc47abe4: Merge "Make sure shaders use a color model compatible with the destination." into lmp-mr1-dev
* commit 'ffeb8117b139f61dd7c92bda6a7d47b83871cb66':
  Make sure shaders use a color model compatible with the destination.
2015-05-07 00:21:24 +00:00
Deepanshu Gupta
a663e01204 am 9abe4232: am 7e4c1a92: am b4ca896f: Merge "RecyclerView in LayoutLib: better XML attrs." into lmp-mr1-dev
* commit '9abe42324f2252460b003e6fcdb097910e16178a':
  RecyclerView in LayoutLib: better XML attrs.
2015-05-07 00:21:14 +00:00
Deepanshu Gupta
88b193d717 am 047a28ec: am 96437fb4: am 9aa600e7: Merge "LayoutLib: fix crash when shadow size <=0." into lmp-mr1-dev
* commit '047a28ec506bb40081eef6eaf8434884157709ce':
  LayoutLib: fix crash when shadow size <=0.
2015-05-07 00:20:53 +00:00
Diego Perez
bc47abe4b4 Merge "Make sure shaders use a color model compatible with the destination." into lmp-mr1-dev 2015-05-06 23:43:50 +00:00
Deepanshu Gupta
b4ca896f05 Merge "RecyclerView in LayoutLib: better XML attrs." into lmp-mr1-dev 2015-05-06 23:42:56 +00:00
Deepanshu Gupta
0aa004c3cf LayoutLib: fix crash when shadow size <=0.
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
2015-05-01 21:38:02 +00:00
Alan Viverette
5181f279c8 Fix layoutlib build breakage
Change-Id: Id3a9b79ac47ef27b04a96ff3ee50688bbb58f9c0
2015-04-30 15:57:42 -07:00
Deepanshu Gupta
8381e2cdcc Merge "Fix view outline for shadows in LayoutLib." into mnc-dev 2015-04-27 23:20:35 +00:00
Raph Levien
c6abf5bff6 Expose drawTextRun publicly
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
2015-04-27 15:33:03 -07:00
Chris Craik
1b60cc0529 Anti-alias by default
Change-Id: I19434717dd3af4fdcffbfcca2ffbb485dfebe644
2015-04-27 18:11:57 +00:00
Deepanshu Gupta
dbc7ca0bac Fix view outline for shadows in LayoutLib.
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
2015-04-27 17:19:35 +00:00
Jeff Brown
f647832bd4 Merge "Add support for disabling display scaling for development." 2015-04-16 22:55:58 +00:00
Deepanshu Gupta
2bc2daa74e RecyclerView in LayoutLib: better XML attrs.
- 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
2015-04-16 12:00:30 -07:00
Deepanshu Gupta
4967201a2c resolved conflicts for merge of 186fe7b1 to master
Change-Id: I60886d3e44ae23a11c8f129517df87ee29625ada
2015-04-16 11:18:41 -07:00
Deepanshu Gupta
c4affce9df am 1f3c7f3f: am f18ceefc: am cd6e00c6: Merge changes from topic \'layoutlib-api-15\' into lmp-mr1-dev
* commit '1f3c7f3f500bdbfd790c20872961d84ef617f066':
  Update golden image for tests.
  Update to using LayoutlibCallback.
  Remove implementation of deprecated method.
  Add @empty support.
2015-04-16 17:41:54 +00:00
Jeff Brown
d46747a1c6 Add support for disabling display scaling for development.
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
2015-04-15 19:02:36 -07:00