diff options
author | David Morrissey <davemorrissey@gmail.com> | 2017-11-26 08:37:31 +0000 |
---|---|---|
committer | David Morrissey <davemorrissey@gmail.com> | 2017-11-26 08:37:31 +0000 |
commit | bd263d84ae69394213478267cb742b1b6e07613a (patch) | |
tree | 222c45b6a5160c372e412a4a955ffd25432ca9a6 /library | |
parent | 504362d8a26226fa2cbfebe7cb6a348e6e475c41 (diff) | |
download | subsampling-scale-image-view-bd263d84ae69394213478267cb742b1b6e07613a.tar.gz |
Simple global bitmap config with a static field
Diffstat (limited to 'library')
4 files changed, 46 insertions, 9 deletions
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java index 4298edd..a5a29f8 100644 --- a/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java +++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java @@ -279,6 +279,8 @@ public class SubsamplingScaleImageView extends View { //The logical density of the display private float density; + // A global preference for bitmap format, available to decoder classes that respect it + private static Bitmap.Config preferredBitmapConfig; public SubsamplingScaleImageView(Context context, AttributeSet attr) { super(context, attr); @@ -336,6 +338,26 @@ public class SubsamplingScaleImageView extends View { } /** + * Get the current preferred configuration for decoding bitmaps. {@link ImageDecoder} and {@link ImageRegionDecoder} + * instances can read this and use it when decoding images. + * @return the preferred bitmap configuration, or null if none has been set. + */ + public static Bitmap.Config getPreferredBitmapConfig() { + return preferredBitmapConfig; + } + + /** + * Set a global preferred bitmap config shared by all view instances and applied to new instances + * initialised after the call is made. This is a hint only; the bundled {@link ImageDecoder} and + * {@link ImageRegionDecoder} classes all respect this (except when they were constructed with + * an instance-specific config) but custom decoder classes will not. + * @param preferredBitmapConfig the bitmap configuration to be used by future instances of the view. Pass null to restore the default. + */ + public static void setPreferredBitmapConfig(Bitmap.Config preferredBitmapConfig) { + SubsamplingScaleImageView.preferredBitmapConfig = preferredBitmapConfig; + } + + /** * Sets the image orientation. It's best to call this before setting the image file or asset, because it may waste * loading of tiles. However, this can be freely called at any time. * @param orientation orientation to be set. See ORIENTATION_ static fields for valid values. diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.java index aed751f..292502c 100644 --- a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.java +++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.java @@ -9,6 +9,8 @@ import android.graphics.BitmapFactory; import android.net.Uri; import android.text.TextUtils; +import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; + import java.io.InputStream; import java.util.List; @@ -31,10 +33,13 @@ public class SkiaImageDecoder implements ImageDecoder { } public SkiaImageDecoder(Bitmap.Config bitmapConfig) { - if (bitmapConfig == null) { - this.bitmapConfig = Bitmap.Config.RGB_565; - } else { + Bitmap.Config globalBitmapConfig = SubsamplingScaleImageView.getPreferredBitmapConfig(); + if (bitmapConfig != null) { this.bitmapConfig = bitmapConfig; + } else if (globalBitmapConfig != null) { + this.bitmapConfig = globalBitmapConfig; + } else { + this.bitmapConfig = Bitmap.Config.RGB_565; } } diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.java index 28f5d80..8be3822 100644 --- a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.java +++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.java @@ -10,6 +10,8 @@ import android.net.Uri; import android.os.Build; import android.text.TextUtils; +import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; + import java.io.InputStream; import java.util.List; import java.util.concurrent.locks.Lock; @@ -43,10 +45,13 @@ public class SkiaImageRegionDecoder implements ImageRegionDecoder { } public SkiaImageRegionDecoder(Bitmap.Config bitmapConfig) { - if (bitmapConfig == null) { - this.bitmapConfig = Bitmap.Config.RGB_565; - } else { + Bitmap.Config globalBitmapConfig = SubsamplingScaleImageView.getPreferredBitmapConfig(); + if (bitmapConfig != null) { this.bitmapConfig = bitmapConfig; + } else if (globalBitmapConfig != null) { + this.bitmapConfig = globalBitmapConfig; + } else { + this.bitmapConfig = Bitmap.Config.RGB_565; } } diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.java index abf88b4..9edb5cd 100644 --- a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.java +++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.java @@ -17,6 +17,8 @@ import android.os.Build; import android.text.TextUtils; import android.util.Log; +import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; + import java.io.File; import java.io.FileFilter; import java.io.InputStream; @@ -77,10 +79,13 @@ public class SkiaPooledImageRegionDecoder implements ImageRegionDecoder { } public SkiaPooledImageRegionDecoder(Bitmap.Config bitmapConfig) { - if (bitmapConfig == null) { - this.bitmapConfig = Bitmap.Config.RGB_565; - } else { + Bitmap.Config globalBitmapConfig = SubsamplingScaleImageView.getPreferredBitmapConfig(); + if (bitmapConfig != null) { this.bitmapConfig = bitmapConfig; + } else if (globalBitmapConfig != null) { + this.bitmapConfig = globalBitmapConfig; + } else { + this.bitmapConfig = Bitmap.Config.RGB_565; } } |