1758 Commits

Author SHA1 Message Date
Deepanshu Gupta
13d2e2e10b Add guard around getXmlFileParser() call
Prevents the need to update the LayoutLib API level.

Bug: http://b.android.com/202942
Change-Id: I507239148ab8d6d45406624dba569c8b7197f979
2016-03-21 08:53:13 -07:00
Deepanshu Gupta
ebdcc80ac2 Remove obsolete try catch
The try catch was to prevent crashing on preview releases of Android
Studio. We don't support them anymore.

Change-Id: I8e33cae98117c0034aea1b56903b623fcb64435e
2016-02-01 14:03:30 -08:00
Jerome Gaillard
ded4d14e33 Deals with translation and scaling in layoutlib
Layoutlib now correctly interprets the translation and scaling
xml attributes of views, by implementing what the Android platform
does in native code.

Change-Id: Ie8465f40ef4508d3c31796200800f12cb8f883a4
2016-01-21 11:21:47 +00:00
Jerome Gaillard
7efb74d54a Merge "Deals with android:rotation attribute in layoutlib" into mnc-ub-dev 2016-01-20 11:44:07 +00:00
Jerome Gaillard
c92d70dff7 Deals with android:rotation attribute in layoutlib
The way Android views deal with their rotation xml attribute is through
native code called for hardware accelerated rendering. So layoutlib
has to bypass that in order to take those attributes into account.

Bug: http://b.android.com/73300
Change-Id: Ieb5bf0567a25a9021491ebf3250cedd0752f7863
2016-01-19 18:31:06 +00:00
Diego Perez
ada8c117b1 Fix bug in PropertyValuesHolder_Delegate method index
The method index in PropertyValuesHolder was using only the method name
+ the number of parameters in the call to index the different properties
methods. This worked ok most of the time because, for a given method
name (let's say setTrimStartOffset), the class is usually the same.
However, if the same method name is used in multiple classes, this will
cause collisions and will most likely crash.

Change-Id: Ie6fa8872c5c5e69e690f4f1bb79191a31bef2a28
2016-01-19 10:42:19 +00:00
Diego Perez
b9c48d8f49 New path interpolation to paint vector drawables
Before this CL, PathMeasure_Delegate would use Path_Delegate.approximate
to get a path segment to draw. Path_Delegate.approximate uses a
flattening iterator to do the path approximation.
Unfortunately, because we do not control the stroke mode while painting,
in some cases the approximation would draw unwanted artifacts caused by
the rough approximation and the use of wrong miter values.
This CL does a much better calculation of the path and interpolates the
segments of the curves instead of replacing them with line segments.

This also fixes an issue with the calculation of empty paths.

Bug: http://b.android.com/187256

Change-Id: I450f7aa4c3d9efcbf902a40c3b4d6d388546893f
2016-01-19 10:14:46 +00:00
Deepanshu Gupta
f5984d5fce Merge "Fix custom font rendering" into mnc-ub-dev 2016-01-14 23:48:17 +00:00
Deepanshu Gupta
2ea852541f Fix custom font rendering
The context was using the wrong asset manager.

Bug: http://b.android.com/198897
Change-Id: Id58473a4539ed93a9f338c730686128c7089fc92
2016-01-14 23:46:42 +00:00
Deepanshu Gupta
1665a621da LayoutLib: Fix device used comments in intensive tests
Change-Id: I65ee2f8bdf096ea991e72c99777c8981da7b5ae2
2016-01-14 23:19:29 +00:00
Deepanshu Gupta
0c08fc0fc5 Merge "Fix ninepatch scaling." into mnc-ub-dev 2016-01-11 18:09:45 +00:00
Jerome Gaillard
171a2a9322 Merge "Get color state list file content from PSI instead of disk" into mnc-ub-dev 2016-01-11 18:06:10 +00:00
Jerome Gaillard
b63da06a7a Get color state list file content from PSI instead of disk
Use new functionality from callback to get the content of state list files
from PSI instead of disks.

Bug: http://b.android.com/183767
Change-Id: Ic256d1e7787209d772ccd42c2e3c7f409cac2964
2016-01-11 11:37:19 +00:00
Jerome Gaillard
3b90b74cf9 Create new Navigation Bar for the Theme Editor Preview
The standard navigation bar was not working well in the Theme Editor preview
when in a wide configuration. The bar then did not fit entirely inside the display.
So we created a new Navigation Bar to use in the Theme Editor preview, that fixes
the size problem.

Bug: http://b.android.com/198179
Change-Id: Ifb1fa7b8f399f17392934de89078696337eca3e1
2016-01-04 15:38:12 +00:00
Jerome Gaillard
4b0fe7f14b Use RenderDrawable to render mipmaps
Bug: http://b.android.com/179714
Change-Id: If05e71b33ee3a95590eb892f4fffbff4cfca1867
2015-12-11 15:05:46 +00:00
Deepanshu Gupta
95e58deaa2 Fix ninepatch scaling.
Really fix the bug now. Also add tests for the same and update
allwidgets golden file for M.

Bug: http://b.android.com/187939
Change-Id: I98cd55da0561fef9d47d8759bcd287ee36d03cc2
2015-12-07 14:48:38 -08: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
Deepanshu Gupta
35f7562495 Merge "Revert "Revert "Update StaticLayout_Delegate to use new nLoadHyphenator""" into mnc-ub-dev 2015-11-19 20:49:55 +00:00
Deepanshu Gupta
66098964e2 Revert "Revert "Update StaticLayout_Delegate to use new nLoadHyphenator""
This reverts commit 65a834980cdbb9407a3f27e48cd0a8c472182cd6.


The original revert was only for cherry-pick to release
branch.

Change-Id: Ib78f9a06ce49681c767f65b262058f18a670e38e
2015-11-19 20:49:35 +00:00
Deepanshu Gupta
8c971ae5a0 Merge "Revert "Update StaticLayout_Delegate to use new nLoadHyphenator"" into mnc-ub-dev 2015-11-19 20:48:52 +00:00
Deepanshu Gupta
65a834980c Revert "Update StaticLayout_Delegate to use new nLoadHyphenator"
This reverts commit 631c2ffd6ff1bfa7463d29a39a7ee74be019b3f9.

The revert is only for cherry-pick back to mnc-sdk-release.

Change-Id: I42cb392528b7890b58d689c732f90c3b9ba5f74c
2015-11-19 20:47:26 +00:00
Deepanshu Gupta
4ea74d2960 Revert "LayoutLib: Fix true transparency in status bar."
This reverts commit 4eb298a941c3f465944b63f1a06518e911681c89.

Even though this is techinically closer to what the framework does, the
fix is not complete. As a result, it looks worse when using AppCompat
themes. Revert the change for the release.

Change-Id: I67c1002ea17dee7234d78e2d13aab876467bd70f
2015-11-17 12:25:25 -08:00
Deepanshu Gupta
99b54b364b AppCompatActionBar: use findClass to test presence
To test the presence of WindowDecorActionBar class, use findClass()
instead of loadClass() which logs warnings.

Change-Id: Ice8a5a6badd764c7f75b5a64a07c48f0a7cfef98
2015-11-17 11:34:32 -08:00
Deepanshu Gupta
2b0551175d WindowDecorActionBar name change fix.
In change id I7582e242c7564c32feeb044fc9eff6bfb5c56536,
WindowDecorActionBar's package name was changed. This breaks layoutlib.
Fix the issue by checking both package names when loading the class.

Change-Id: I5723a97f0f164d61c56061fef6cff18e3cdafaee
2015-11-16 15:46:12 -08:00
Deepanshu Gupta
d30c141a2d Improve error reporting on Exceptions in fw views.
When there's an exception during the inflation of a framework view (for
example invalid attributes), report the exception correctly. The earlier
behaviour assumed the exception to be a ClassNotFoundException and tried
to load it from the user's project. This is not longer the case.

Also, update the MockView class to a FrameLayout with a single TextView.
This means that the MockView is a ViewGroup and will not choke when
someone attempts to add a View to it (although, the view will be
silently dropped).

Change-Id: Ice003817ceb627ebfbbbb245ab6be10f9141e728
2015-11-12 13:56:14 -08:00
Deepanshu Gupta
c9b8f95c99 Fix Switch colors
The conversion of the PorterDuff mode from int to enum was incorrect
resulting in the wrong PorterDuff Mode being used.

Change-Id: I7607d505b6e4382e6101869971154f6a77db279c
2015-11-05 09:20:07 -08:00
Diego Perez
1c442aca0a Merge "Remove auto-boxing during the inflate" into mnc-ub-dev 2015-11-04 14:26:15 +00:00
Diego Perez
631c2ffd6f Update StaticLayout_Delegate to use new nLoadHyphenator
Small fix to update call parameters

Change-Id: I4322aa212493ec2970ae17ec1918b9b7e2f8e93a
2015-11-04 11:35:34 +00:00
Diego Perez
91fa3ba4cc Remove auto-boxing during the inflate
Change-Id: I3f9ba5d78363f878fa0c58ca8cbf736bd43fe1c0
2015-11-03 14:59:23 +00:00
Deepanshu Gupta
2f01cf2ea6 LayoutLib: Fix android:dependency for preferences.
Bug: http://b.android.com/189314
Change-Id: I229632d11a2529e865f3f2e8eca3a78b47ad462c
2015-10-09 14:54:19 -07: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
Deepanshu Gupta
8db8bc6362 Merge "Skip drawing empty shapes to keep Apple JRE happy." into mnc-ub-dev 2015-10-07 17:08:30 +00:00
Deepanshu Gupta
4064e118e2 Skip drawing empty shapes to keep Apple JRE happy.
Bug: http://b.android.com/178278
Change-Id: I693912678ed79e9c6690560b618a605da5a807c6
2015-10-07 09:28:31 -07: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
e5d3baf22f LayoutLib: Fix bitmap scaling.
Bug: http://b.android.com/187939
Change-Id: I20bf61746e8af3bb87ba9cfcc9bf58854ac7c5be
2015-10-05 16:08:54 -07:00
Deepanshu Gupta
7a9f771fe0 Merge "Don't break error string (easier grepping)" into mnc-ub-dev 2015-09-30 22:16:22 +00:00
Deepanshu Gupta
1bd276f6f7 Don't break error string (easier grepping)
Change-Id: If52097ba90481644707dd0323ec63ca3ddf0986b
2015-09-30 12:49:42 -07:00
Diego Perez
b9c4cccf67 Merge "Reduce the amount of allocations on Paint_Delegate" into mnc-ub-dev 2015-09-30 09:29:40 +00:00
Diego Perez
6dac0d4b7c Reduce the amount of allocations on Paint_Delegate
When the text properties of the Paint object are updated, or when .set()
is called, updateFontObject will be called. This method is currently at the
top of the methods for number of allocations.
This CL reduces the number of calls to updateFontObject by a 90%,
reducing the number of Font allocations.

Change-Id: I3e232f9e6e230da8ecdd19921faadf2d3f4ff763
2015-09-30 09:10:37 +01:00
Deepanshu Gupta
4e27221d49 Merge "Support databinding in listitem layouts." into mnc-ub-dev 2015-09-30 00:45:52 +00:00
Deepanshu Gupta
e91096c03d Support databinding in listitem layouts.
Add a wrapper around the PullParser to support stripping out databinding
parts.

Bug: http://b.android.com/187428
Change-Id: I88080d8f4108cb5ae27a137ad20c5dd7d516f3ea
2015-09-29 17:07:53 -07:00
Deepanshu Gupta
6649ca3711 Fix TypedArray.getTextArray()
Change-Id: Ic55b52840892fbf2a4258ba97ed31ca0283da8ed
2015-09-23 16:03:02 -07:00
Diego Perez
0e766de7c5 Avoid calling scrollBy(0,0) on render
Usually scrollBy(0, 0) won't have any effect but when called on the
NumberPicker but, in some cases, it seems to cause an endless loop.
When called from layoutlib, this will hold the read lock causing all
operations trying to acquire the write lock to block forever.

Bug: http://b.android.com/182506
Change-Id: Ib25427d3f32d804d1c481d979795eee71fbdbc6d
2015-09-22 16:44:37 +00:00
Deepanshu Gupta
ee1eed7e71 am 7209945f: am 0e150a8b: am 0c5fd7e3: am eb541727: am dd21212f: am eb26f5ce: LayoutLib: Fix typedArray caching.
* commit '7209945fd38d22078b2fd208abe0aa976c311dde':
  LayoutLib: Fix typedArray caching.
2015-09-02 01:21:26 +00:00
Deepanshu Gupta
0c5fd7e379 am eb541727: am dd21212f: am eb26f5ce: LayoutLib: Fix typedArray caching.
* commit 'eb54172719db60740a0b8dde6380db54d4006159':
  LayoutLib: Fix typedArray caching.
2015-09-02 00:11:24 +00:00
Deepanshu Gupta
eb54172719 am dd21212f: am eb26f5ce: LayoutLib: Fix typedArray caching.
* commit 'dd21212fa1a9c907d5d2f80f3de2413f6c14da7a':
  LayoutLib: Fix typedArray caching.
2015-09-01 23:59:10 +00:00
Deepanshu Gupta
eb26f5cecd LayoutLib: Fix typedArray caching.
The typedArray depends on the current context (more specifically, the
themes set on the context). The fact was ignored in the caching of the
typedArray and caused the android:theme attribute to be ignored in
certain cases.

Change-Id: If095580919474f12c0eb4e1f8fb7f076cf3c4ed0
2015-09-01 23:17:56 +00:00
Deepanshu Gupta
753517700d Fix android:theme parsing for custom views.
Change-Id: Iba83ba1d2e4a96461cc298a759e32e4e51e311a0
2015-08-28 14:49:04 -07:00
Deepanshu Gupta
ebdedb47e5 am 42994097: am a1be8b43: LayoutLib: Update golden test images. [DO NOT MERGE]
* commit '4299409775ffd5cb70a8970c15807f33fc8b08d4':
  LayoutLib: Update golden test images. [DO NOT MERGE]
2015-08-26 20:22:48 +00:00
Deepanshu Gupta
d9600c986d am 7eb81868: am b1ad4a15: LayoutLib: Fix true transparency in status bar. [DO NOT MERGE]
* commit '7eb81868c338fc78139592ac81845c080f53b1c5':
  LayoutLib: Fix true transparency in status bar. [DO NOT MERGE]
2015-08-26 20:22:35 +00:00