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
This commit is contained in:
Alan Viverette
2015-06-16 15:04:45 -07:00
parent 27a88a3eb6
commit 63a39ffe48
3 changed files with 12 additions and 9 deletions

View File

@@ -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;
}

View File

@@ -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() +

View File

@@ -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;
}