support loading BitmapDrawables from XML

This commit is contained in:
Julian Winkler
2023-12-30 17:31:56 +01:00
parent 493cb8284a
commit b393a6bf1d
2 changed files with 26 additions and 0 deletions

View File

@@ -1,15 +1,28 @@
package android.graphics.drawable;
import java.io.IOException;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import com.android.internal.R;
import android.content.res.Resources;
import android.content.res.Resources.Theme;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.AttributeSet;
public class BitmapDrawable extends Drawable {
private Bitmap bitmap;
public BitmapDrawable() {
}
public BitmapDrawable(Resources res, Bitmap bitmap) {
this.bitmap = bitmap;
}
@@ -23,4 +36,13 @@ public class BitmapDrawable extends Drawable {
return bitmap;
}
public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Theme theme)
throws XmlPullParserException, IOException {
final TypedArray a = r.obtainAttributes(attrs, R.styleable.BitmapDrawable);
if (a.hasValue(R.styleable.BitmapDrawable_src)) {
paintable = a.getDrawable(R.styleable.BitmapDrawable_src).paintable;
}
a.recycle();
}
}

View File

@@ -123,6 +123,10 @@ public class Drawable {
return drawable;
} else if ("shape".equals(parser.getName())) {
return new GradientDrawable();
} else if ("bitmap".equals(parser.getName())) {
BitmapDrawable drawable = new BitmapDrawable();
drawable.inflate(resources, parser, parser, null);
return drawable;
}
return null;
}