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(Context context, AttributeSet attrs) { super(context, attrs); if (attrs != null) { int resource = attrs.getAttributeResourceValue("http://schemas.android.com/apk/res/android", "src", 0); if (resource != 0) setImageResource(resource); } } public ImageView(Context context) { super(context); } public ImageView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected native long native_constructor(Context context, AttributeSet attrs); protected native void native_setPixbuf(long pixbuf); public /*native*/ void setImageResource(final int resid) { if (Context.this_application.getResources().getString(resid).endsWith(".xml")) return; 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); } public void setImageDrawable(Drawable drawable) {} /** * Options for scaling the bounds of an image to the bounds of this view. */ public enum ScaleType { /** * Scale using the image matrix when drawing. The image matrix can be set using * {@link ImageView#setImageMatrix(Matrix)}. From XML, use this syntax: * android:scaleType="matrix". */ MATRIX(0), /** * Scale the image using {@link Matrix.ScaleToFit#FILL}. * From XML, use this syntax: android:scaleType="fitXY". */ FIT_XY(1), /** * Scale the image using {@link Matrix.ScaleToFit#START}. * From XML, use this syntax: android:scaleType="fitStart". */ FIT_START(2), /** * Scale the image using {@link Matrix.ScaleToFit#CENTER}. * From XML, use this syntax: * android:scaleType="fitCenter". */ FIT_CENTER(3), /** * Scale the image using {@link Matrix.ScaleToFit#END}. * From XML, use this syntax: android:scaleType="fitEnd". */ FIT_END(4), /** * Center the image in the view, but perform no scaling. * From XML, use this syntax: android:scaleType="center". */ CENTER(5), /** * Scale the image uniformly (maintain the image's aspect ratio) so * that both dimensions (width and height) of the image will be equal * to or larger than the corresponding dimension of the view * (minus padding). The image is then centered in the view. * From XML, use this syntax: android:scaleType="centerCrop". */ CENTER_CROP(6), /** * Scale the image uniformly (maintain the image's aspect ratio) so * that both dimensions (width and height) of the image will be equal * to or less than the corresponding dimension of the view * (minus padding). The image is then centered in the view. * From XML, use this syntax: android:scaleType="centerInside". */ CENTER_INSIDE(7); ScaleType(int ni) { nativeInt = ni; } final int nativeInt; } }