am 7553d48d: Merge "Fix default stroke width and NPE for line with no stroke width" into lmp-preview-dev

* commit '7553d48d28683b5b21e964d837a3f3c0f66af9ad':
  Fix default stroke width and NPE for line with no stroke width
This commit is contained in:
Alan Viverette
2014-06-05 22:22:57 +00:00
committed by Android Git Automerger
2 changed files with 12 additions and 6 deletions

View File

@@ -94,7 +94,7 @@ public class AnimationDrawable extends DrawableContainer implements Runnable, An
boolean changed = super.setVisible(visible, restart);
if (visible) {
if (changed || restart) {
setFrame(0, true, mCurFrame >= 0);
setFrame(0, true, restart || mCurFrame >= 0);
}
} else {
unscheduleSelf(this);

View File

@@ -1203,8 +1203,11 @@ public class GradientDrawable extends Drawable {
st.mAttrStroke = a.extractThemeAttrs();
// We have an explicit stroke defined, so the default stroke width
// must be at least 0 or the current stroke width.
final int defaultStrokeWidth = Math.max(0, st.mStrokeWidth);
final int width = a.getDimensionPixelSize(
R.styleable.GradientDrawableStroke_width, st.mStrokeWidth);
R.styleable.GradientDrawableStroke_width, defaultStrokeWidth);
final float dashWidth = a.getDimension(
R.styleable.GradientDrawableStroke_dashWidth, st.mStrokeDashWidth);
@@ -1406,10 +1409,13 @@ public class GradientDrawable extends Drawable {
outline.setOval(bounds);
return true;
case LINE:
float halfStrokeWidth = mStrokePaint.getStrokeWidth() * 0.5f;
float centerY = bounds.centerY();
int top = (int) Math.floor(centerY - halfStrokeWidth);
int bottom = (int) Math.ceil(centerY + halfStrokeWidth);
// Hairlines (0-width stroke) must have a non-empty outline for
// shadows to draw correctly, so we'll use a very small width.
final float halfStrokeWidth = mStrokePaint == null ?
0.0001f : mStrokePaint.getStrokeWidth() * 0.5f;
final float centerY = bounds.centerY();
final int top = (int) Math.floor(centerY - halfStrokeWidth);
final int bottom = (int) Math.ceil(centerY + halfStrokeWidth);
outline.setRect(bounds.left, top, bounds.right, bottom);
return true;