Ensure nine-patch uses the best available target density
Bug: 27507887
Change-Id: Iddab4fdd2fe8fbf201dbb8ed42657a00509f42cc
diff --git a/graphics/java/android/graphics/drawable/NinePatchDrawable.java b/graphics/java/android/graphics/drawable/NinePatchDrawable.java
index fd3b9b4..5b1cc80 100644
--- a/graphics/java/android/graphics/drawable/NinePatchDrawable.java
+++ b/graphics/java/android/graphics/drawable/NinePatchDrawable.java
@@ -748,7 +748,14 @@
setDither(state.mDither);
}
- mTargetDensity = Drawable.resolveDensity(res, mTargetDensity);
+ // The nine-patch may have been created without a Resources object, in
+ // which case we should try to match the density of the nine patch (if
+ // available).
+ if (res == null && state.mNinePatch != null) {
+ mTargetDensity = state.mNinePatch.getDensity();
+ } else {
+ mTargetDensity = Drawable.resolveDensity(res, mTargetDensity);
+ }
mTintFilter = updateTintFilter(mTintFilter, state.mTint, state.mTintMode);
computeBitmapSize();
}