Make setGradientCenter/Radius work.

The previous implementation would not rebuild the gradient shader
when programmatically changing the shader's properties. Also fixes
the documentation since the gradient center does affect linear
gradients.

Change-Id: I5387188484b862f6835b0da9042b25032e55e792
This commit is contained in:
Romain Guy
2011-04-26 11:50:17 -07:00
parent ee6d5cfdff
commit e1c6ff4b91
2 changed files with 5 additions and 4 deletions

View File

@@ -1561,11 +1561,9 @@ want, providing zero ("0dp") where you don't want rounded corners.</p>
<dd><em>Integer</em>. The angle for the gradient, in degrees. 0 is left to right, 90 is
bottom to top. It must be a multiple of 45. Default is 0.</dd>
<dt><code>android:centerX</code></dt>
<dd><em>Float</em>. The relative X-position for the center of the gradient (0 - 1.0).
Does not apply when {@code android:type="linear"}.</dd>
<dd><em>Float</em>. The relative X-position for the center of the gradient (0 - 1.0).</dd>
<dt><code>android:centerY</code></dt>
<dd><em>Float</em>. The relative Y-position for the center of the gradient (0 - 1.0).
Does not apply when {@code android:type="linear"}.</dd>
<dd><em>Float</em>. The relative Y-position for the center of the gradient (0 - 1.0).</dd>
<dt><code>android:centerColor</code></dt>
<dd><em>Color</em>. Optional color that comes between the start and end colors, as a
hexadecimal value or <a href="more-resources.html#Color">color resource</a>.</dd>

View File

@@ -240,16 +240,19 @@ public class GradientDrawable extends Drawable {
public void setGradientCenter(float x, float y) {
mGradientState.setGradientCenter(x, y);
mRectIsDirty = true;
invalidateSelf();
}
public void setGradientRadius(float gradientRadius) {
mGradientState.setGradientRadius(gradientRadius);
mRectIsDirty = true;
invalidateSelf();
}
public void setUseLevel(boolean useLevel) {
mGradientState.mUseLevel = useLevel;
mRectIsDirty = true;
invalidateSelf();
}