From 4534745f53e10952b706bd22fb0c2a29bcbb75e0 Mon Sep 17 00:00:00 2001 From: Leon Scroggins III Date: Fri, 13 Apr 2018 11:57:08 -0400 Subject: [PATCH] Fix rounding of padding in NinePatchDrawable Bug: 73088142 Test: Test app at https://buganizer.corp.google.com/issues/73088142#comment6 Test: GridWidgetTest.testItemDecorationAndMarginsAndOpticalBounds In computeBitmapSize, treat padding as a size in scaleFromDensity. This results in rounding instead of truncating. This matches the way optical insets are handled. It also matches the padding we would have gotten if we had scaled at decode time. Change-Id: I7d3a83ba824b8dc81187ce9b2d9889d4a87f88ac --- .../java/android/graphics/drawable/NinePatchDrawable.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/graphics/java/android/graphics/drawable/NinePatchDrawable.java b/graphics/java/android/graphics/drawable/NinePatchDrawable.java index 66f2a3173eaed..5ff49aba88aef 100644 --- a/graphics/java/android/graphics/drawable/NinePatchDrawable.java +++ b/graphics/java/android/graphics/drawable/NinePatchDrawable.java @@ -692,13 +692,13 @@ public class NinePatchDrawable extends Drawable { mPadding = new Rect(); } mPadding.left = Drawable.scaleFromDensity( - sourcePadding.left, sourceDensity, targetDensity, false); + sourcePadding.left, sourceDensity, targetDensity, true); mPadding.top = Drawable.scaleFromDensity( - sourcePadding.top, sourceDensity, targetDensity, false); + sourcePadding.top, sourceDensity, targetDensity, true); mPadding.right = Drawable.scaleFromDensity( - sourcePadding.right, sourceDensity, targetDensity, false); + sourcePadding.right, sourceDensity, targetDensity, true); mPadding.bottom = Drawable.scaleFromDensity( - sourcePadding.bottom, sourceDensity, targetDensity, false); + sourcePadding.bottom, sourceDensity, targetDensity, true); } else { mPadding = null; }