aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Morrissey <davemorrissey@gmail.com>2017-11-23 14:20:57 +0000
committerDavid Morrissey <davemorrissey@gmail.com>2017-11-23 14:20:57 +0000
commit4695e4f534e6c40baa4fa1ba1ac075c93f1a4272 (patch)
treea4bd41cfa3951e873f4c41d86d23642bd40cef37
parent33f748109bf36bc5fad78bb110e63be2c8e687ed (diff)
downloadsubsampling-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.java21
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.
*/