Status Update
Comments
ni...@google.com <ni...@google.com>
ni...@google.com <ni...@google.com> #2
jsjeon@ do you know why that might be?
ap...@google.com <ap...@google.com> #3
Any concrete examples I can take a look at?
One possibility is, as explained at property
use-site target has a higher priority over field
, and
but the property itself in Metalava's output is not.
here Metalava's output should be Java field and accessor methods, so I guess @Deprecated
could be not properly propagated to field
.
ni...@google.com <ni...@google.com>
ni...@google.com <ni...@google.com> #4
and
Description
===== DESCRIPTION =====
=======================
Consider the following vector drawable:
```
<vector xmlns:android="
xmlns:aapt="
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#f00"
android:pathData="M 0 0 h 12 v 12 h -12 v -12 z" />
<path
android:pathData="M 4 4 h 12 v 12 h -12 v -12 z"
android:strokeWidth="3">
<aapt:attr name="android:fillColor">
<gradient
android:endX="14.0"
android:endY="14.0"
android:startX="6.0"
android:startY="6.0"
android:type="linear">
<item
android:color="#0f0"
android:offset="0" />
<item
android:color="#00f"
android:offset="1" />
</gradient>
</aapt:attr>
<aapt:attr name="android:strokeColor">
<gradient
android:endX="14"
android:endY="14"
android:startX="6"
android:startY="6"
android:type="linear">
<item
android:color="#000"
android:offset="0" />
<item
android:color="#fff"
android:offset="1" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#0ff"
android:pathData="M 14 14 h 8 v 8 h -8 v -8 z"
android:strokeWidth="2"
android:strokeColor="#ff0" />
</vector>
```
=============================
===== EXPECTED BEHAVIOR =====
=============================
The vector is correctly rendered on API 28 (see the vector-drawable-gradient-bug-api28.png attachment).
===========================
===== ACTUAL BEHAVIOR =====
===========================
The vector is incorrectly rendered on API 22 (see the vector-drawable-gradient-bug-api22.png attachment).
=======================
===== SOURCE CODE =====
=======================
I believe the issue is in the following source code:
Specifically, if the fill/stroke is NOT a gradient, we need to set the fill/stroke paint's shader back to null so that it doesn't continue to use a shader used by a previous vector drawable path.
======================
===== OTHER INFO =====
======================
Tested using 'androidx.appcompat:appcompat:1.0.0' on API 22 and API 28.
I've attached a sample project that can be used to reproduce the issue to this bug report.
Please assign this bug to Nick Butcher (nickbutcher@google.com) as I know he was the one who wrote the backported vector drawable gradient code.