diff options
author | David Morrissey <davemorrissey@gmail.com> | 2017-11-23 14:20:57 +0000 |
---|---|---|
committer | David Morrissey <davemorrissey@gmail.com> | 2017-11-23 14:20:57 +0000 |
commit | 4695e4f534e6c40baa4fa1ba1ac075c93f1a4272 (patch) | |
tree | a4bd41cfa3951e873f4c41d86d23642bd40cef37 | |
parent | 33f748109bf36bc5fad78bb110e63be2c8e687ed (diff) | |
download | subsampling-scale-image-view-4695e4f534e6c40baa4fa1ba1ac075c93f1a4272.tar.gz |
Eager loading option loads tiles during anim/gestures
-rw-r--r-- | library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java | 21 |
1 files changed, 18 insertions, 3 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 b28d8a7..4298edd 100644 --- a/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java +++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java @@ -177,6 +177,9 @@ public class SubsamplingScaleImageView extends View { // An executor service for loading of images private Executor executor = AsyncTask.SERIAL_EXECUTOR; + // Whether tiles should be loaded while gestures and animations are still in progress + private boolean eagerLoadingEnabled = false; + // Gesture detection settings private boolean panEnabled = true; private boolean zoomEnabled = true; @@ -753,7 +756,7 @@ public class SubsamplingScaleImageView extends View { } fitToBounds(true); - refreshRequiredTiles(false); + refreshRequiredTiles(eagerLoadingEnabled); } } else if (isQuickScaling) { // One finger zoom @@ -807,7 +810,7 @@ public class SubsamplingScaleImageView extends View { quickScaleLastDistance = dist; fitToBounds(true); - refreshRequiredTiles(false); + refreshRequiredTiles(eagerLoadingEnabled); consumed = true; } else if (!isZooming) { @@ -845,7 +848,7 @@ public class SubsamplingScaleImageView extends View { requestDisallowInterceptTouchEvent(false); } - refreshRequiredTiles(false); + refreshRequiredTiles(eagerLoadingEnabled); } } } @@ -2773,6 +2776,18 @@ public class SubsamplingScaleImageView extends View { } /** + * Enable or disable eager loading of tiles that appear on screen during gestures or animations, + * while the gesture or animation is still in progress. By default this is off; the view will + * wait until the image is not panning or zooming before loading the tiles then required. + * Enabling it will increase CPU and memory usage and result in the loading of tiles during a + * gesture that are immediately discarded later, causing low frame rates on slower devices. + * @param eagerLoadingEnabled true to enable loading during gestures + */ + public void setEagerLoadingEnabled(boolean eagerLoadingEnabled) { + this.eagerLoadingEnabled = eagerLoadingEnabled; + } + + /** * Enables visual debugging, showing tile boundaries and sizes. * @param debug true to enable debugging, false to disable. */ |