summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2015-06-16 15:04:45 -0700
committerAlan Viverette <alanv@google.com>2015-06-16 15:04:45 -0700
commit63a39ffe489e1411f96ab54002b83c7d28bb5ffc (patch)
treef277a1e6bab8ec4e8479a154204befd8443f4a19 /graphics
parent27a88a3eb6a6a456ea3ec1b81a8fb26333f904a5 (diff)
downloadframeworks_base-63a39ffe489e1411f96ab54002b83c7d28bb5ffc.zip
frameworks_base-63a39ffe489e1411f96ab54002b83c7d28bb5ffc.tar.gz
frameworks_base-63a39ffe489e1411f96ab54002b83c7d28bb5ffc.tar.bz2
Ensure first load for bitmap and nine-patch gets correct density
Remove unnecessary lines setting target density on bitmap and nine patch, since we'll do this later in inflate(). Bug: 21774853 Change-Id: I5ea316bee81f82192ce20f2f1bee0e62c6ec8ccb
Diffstat (limited to 'graphics')
-rw-r--r--graphics/java/android/graphics/drawable/BitmapDrawable.java6
-rw-r--r--graphics/java/android/graphics/drawable/Drawable.java9
-rw-r--r--graphics/java/android/graphics/drawable/NinePatchDrawable.java6
3 files changed, 12 insertions, 9 deletions
diff --git a/graphics/java/android/graphics/drawable/BitmapDrawable.java b/graphics/java/android/graphics/drawable/BitmapDrawable.java
index 82a592a..a0c407f 100644
--- a/graphics/java/android/graphics/drawable/BitmapDrawable.java
+++ b/graphics/java/android/graphics/drawable/BitmapDrawable.java
@@ -815,6 +815,9 @@ public class BitmapDrawable extends Drawable {
if (tileModeY != TILE_MODE_UNDEFINED) {
setTileModeY(parseTileMode(tileModeY));
}
+
+ final int densityDpi = r.getDisplayMetrics().densityDpi;
+ state.mTargetDensity = densityDpi == 0 ? DisplayMetrics.DENSITY_DEFAULT : densityDpi;
}
@Override
@@ -977,7 +980,8 @@ public class BitmapDrawable extends Drawable {
*/
private void updateLocalState(Resources res) {
if (res != null) {
- mTargetDensity = res.getDisplayMetrics().densityDpi;
+ final int densityDpi = res.getDisplayMetrics().densityDpi;
+ mTargetDensity = densityDpi == 0 ? DisplayMetrics.DENSITY_DEFAULT : densityDpi;
} else {
mTargetDensity = mBitmapState.mTargetDensity;
}
diff --git a/graphics/java/android/graphics/drawable/Drawable.java b/graphics/java/android/graphics/drawable/Drawable.java
index 532c888..415af0d 100644
--- a/graphics/java/android/graphics/drawable/Drawable.java
+++ b/graphics/java/android/graphics/drawable/Drawable.java
@@ -1147,6 +1147,7 @@ public abstract class Drawable {
* document, tries to create a Drawable from that tag. Returns {@code null}
* if the tag is not a valid drawable.
*/
+ @SuppressWarnings("deprecation")
public static Drawable createFromXmlInner(Resources r, XmlPullParser parser, AttributeSet attrs,
Theme theme) throws XmlPullParserException, IOException {
final Drawable drawable;
@@ -1202,16 +1203,10 @@ public abstract class Drawable {
drawable = new InsetDrawable();
break;
case "bitmap":
- drawable = new BitmapDrawable(r);
- if (r != null) {
- ((BitmapDrawable) drawable).setTargetDensity(r.getDisplayMetrics());
- }
+ drawable = new BitmapDrawable();
break;
case "nine-patch":
drawable = new NinePatchDrawable();
- if (r != null) {
- ((NinePatchDrawable) drawable).setTargetDensity(r.getDisplayMetrics());
- }
break;
default:
throw new XmlPullParserException(parser.getPositionDescription() +
diff --git a/graphics/java/android/graphics/drawable/NinePatchDrawable.java b/graphics/java/android/graphics/drawable/NinePatchDrawable.java
index 91bbff7..0b7869b 100644
--- a/graphics/java/android/graphics/drawable/NinePatchDrawable.java
+++ b/graphics/java/android/graphics/drawable/NinePatchDrawable.java
@@ -482,6 +482,9 @@ public class NinePatchDrawable extends Drawable {
if (tint != null) {
state.mTint = tint;
}
+
+ final int densityDpi = r.getDisplayMetrics().densityDpi;
+ state.mTargetDensity = densityDpi == 0 ? DisplayMetrics.DENSITY_DEFAULT : densityDpi;
}
@Override
@@ -713,7 +716,8 @@ public class NinePatchDrawable extends Drawable {
final NinePatchState state = mNinePatchState;
if (res != null) {
- mTargetDensity = res.getDisplayMetrics().densityDpi;
+ final int densityDpi = res.getDisplayMetrics().densityDpi;
+ mTargetDensity = densityDpi == 0 ? DisplayMetrics.DENSITY_DEFAULT : densityDpi;
} else {
mTargetDensity = state.mTargetDensity;
}