make BitmapDrawable functional

This commit is contained in:
Julian Winkler
2023-08-06 14:27:30 +02:00
parent 8c1e98b09c
commit c10504c089
5 changed files with 58 additions and 9 deletions

View File

@@ -19,7 +19,7 @@ package android.content.res;
import android.content.pm.ActivityInfo;
import android.icu.text.PluralRules;
// import android.graphics.Movie;
// import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable;
// import android.graphics.drawable.ColorDrawable;
// import android.graphics.drawable.Drawable.ConstantState;
import android.os.Build;
@@ -42,9 +42,6 @@ import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
class Movie {}
class Drawable {
class ConstantState {}
}
class ColorDrawable {}
class ConstantState {}

View File

@@ -17,7 +17,7 @@
package android.content.res;
import android.content.pm.ActivityInfo;
// import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;

View File

@@ -2,7 +2,21 @@ package android.graphics.drawable;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.RectF;
public class BitmapDrawable extends Drawable {
public BitmapDrawable(Resources res, Bitmap bitmap) {}
private Bitmap bitmap;
public BitmapDrawable(Resources res, Bitmap bitmap) {
this.bitmap = bitmap;
}
@Override
public void draw(Canvas canvas) {
canvas.drawBitmap(bitmap, new Rect(0, 0, bitmap.getWidth(), bitmap.getWidth()), new RectF(getBounds()), null);
}
}

View File

@@ -1,5 +1,33 @@
package android.graphics.drawable;
public class Drawable {
import android.graphics.Canvas;
import android.graphics.Rect;
public abstract class Drawable {
private Rect mBounds = new Rect();
public int getChangingConfigurations() {
return 0;
}
public void setChangingConfigurations(int bitmap) {}
public ConstantState getConstantState() {
return new ConstantState();
}
public class ConstantState {
}
public void setBounds(int left, int top, int right, int bottom) {
mBounds.set(left, top, right, bottom);
}
public final Rect getBounds() {
return mBounds;
}
public abstract void draw(Canvas canvas);
}

View File

@@ -3,16 +3,22 @@ package android.widget;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
public class ImageView extends View {
private Bitmap bitmap;
public ImageView(AttributeSet attrs) {
super(attrs);
native_constructor(attrs);
int resource = attrs.getAttributeResourceValue("http://schemas.android.com/apk/res/android", "src", 0);
setImageResource(resource);
if (resource != 0)
setImageResource(resource);
}
public ImageView(Context context) {
@@ -34,13 +40,17 @@ public class ImageView extends View {
public /*native*/ void setImageResource(final int resid) {
if (Context.this_application.getResources().getString(resid).endsWith(".xml"))
return;
Bitmap bitmap = BitmapFactory.decodeResource(Context.this_application.getResources(), resid);
bitmap = BitmapFactory.decodeResource(Context.this_application.getResources(), resid);
native_setPixbuf(bitmap.pixbuf);
}
public void setAdjustViewBounds(boolean adjustViewBounds) {}
public void setScaleType(ScaleType scaleType) {}
public Drawable getDrawable() {
return new BitmapDrawable(getContext().getResources(), bitmap);
}
/**
* Options for scaling the bounds of an image to the bounds of this view.
*/