Android library (AAR). Highly configurable, easily extendable deep zoom view for displaying huge images without loss of detail. Perfect for photo galleries, maps, building plans etc.
This release contains breaking changes for Kotlin apps.
Nullable
and NonNull
annotations have been added. Kotlin did not recognise some method returns as nullable, so uses of these methods without a null check will no longer compile.
Nullable
and NonNull
annotationsThis release contains breaking changes. If you use a custom ImageRegionDecoder, changes may be required to make it thread safe. For full details see the migration guide.
These changes are discussed on #120.
setParallelLoadingEnabled
with an option to supply a custom executor - setExecutor(Executor)
.AsyncTask.THREAD_POOL_EXECUTOR
the default, to reduce contention with other background tasks.ImageRegionDecoder.decodeRegion
calls to allow for parallel decoding by decoders that support it.setEagerLoadingEnabled(false)
SkiaPooledImageRegionDecoder
which maintains a small pool of BitmapRegionDecoder
instances to allow for parallel decoding when combined with a multi-threaded executor.setMinimumTileDpi(int)
to override the default.SCALE_TYPE_START
. This displays the image filling the view width and height, and scrolled to the top left.getPanRemaining(RectF)
, which exposes the pan remaining in each direction, in screen pixels.OnClickListener
to work before the image has loaded.visibleFileRect(Rect)
and viewToFileRect(Rect, Rect)
.vFocusStart
in animation.Fixed gradle release script to deploy correct artifacts and returned to more recent build tool versions.
Release 3.7.0 caused (unreproduced) problems for some developers, due to unexplained population of the AttributeSet
constructor argument with unexpected values. This release reverts the changes to build tools - an attempt at a blind fix.
BitmapRegionDecoder has known issues decoding some images, particularly JPEGs, which can result in images being decoded highly pixellated, grayscale, or completely garbled. BitmapFactory is unaffected by any of these bugs so is much more reliable.
This library will now use BitmapRegionDecoder to decode the bounds of the image, and if it is smaller than the canvas maximum bitmap size, and the whole image is required at native resolution, BitmapFactory is automatically used instead. This should make the display of small to medium size images from unknown sources much more reliable. As screen densities continue to increase, BitmapFactory will be used more frequently.
Users on devices with low resolution screens viewing large images are more likely to see the problems caused by BitmapRegionDecoder.