From 75491ae40bffcb56b5fb7b9a0ec83e10ad003ab8 Mon Sep 17 00:00:00 2001 From: Georg Lukas Date: Thu, 29 Sep 2011 20:29:53 +0200 Subject: [PATCH] unscaled bitmap loader: workaround android 1.5 compat --- src/UnscaledBitmapLoader.java | 46 +++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/UnscaledBitmapLoader.java diff --git a/src/UnscaledBitmapLoader.java b/src/UnscaledBitmapLoader.java new file mode 100644 index 0000000..1d9ff1e --- /dev/null +++ b/src/UnscaledBitmapLoader.java @@ -0,0 +1,46 @@ +// (C) http://blog.tomgibara.com/post/190539066/android-unscaled-bitmaps + +package org.aprsdroid.app; + +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.BitmapFactory.Options; +import android.os.Build; + +public abstract class UnscaledBitmapLoader { + + public static final UnscaledBitmapLoader instance; + + static { + instance = Integer.parseInt(Build.VERSION.SDK) < 4 ? new Old() : new New(); + } + + public static Bitmap loadFromResource(Resources resources, int resId, BitmapFactory.Options options) { + return instance.load(resources, resId, options); + } + + private static class Old extends UnscaledBitmapLoader { + + @Override + Bitmap load(Resources resources, int resId, Options options) { + return BitmapFactory.decodeResource(resources, resId, options); + } + + } + + private static class New extends UnscaledBitmapLoader { + + @Override + Bitmap load(Resources resources, int resId, Options options) { + if (options == null) options = new BitmapFactory.Options(); + options.inScaled = false; + return BitmapFactory.decodeResource(resources, resId, options); + } + + } + + abstract Bitmap load(Resources resources, int resId, BitmapFactory.Options options); + +} +