From d85b21fd7bc244c1b577e00c0308f40732aa9f09 Mon Sep 17 00:00:00 2001
From: peterLaurence
Date: Sun, 24 Apr 2016 01:10:30 +0200
Subject: [PATCH] Add the ability to use a custom DetailLevelManager (#293).
Bump version 2.1.5
---
README.md | 4 ++--
tileview/build.gradle | 4 ++--
.../java/com/qozix/tileview/TileView.java | 24 +++++++++++++++++++
.../tileview/detail/DetailLevelManager.java | 6 ++---
4 files changed, 31 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index 6d2b0116..7933f844 100644
--- a/README.md
+++ b/README.md
@@ -34,7 +34,7 @@ Javadocs are [here](http://moagrius.github.io/TileView/index.html?com/qozix/tile
###Installation
Gradle:
```
-compile 'com.qozix:tileview:2.1.4'
+compile 'com.qozix:tileview:2.1.5'
```
The library is hosted on jcenter, and is not currently available from maven.
@@ -54,7 +54,7 @@ A demo application, built in Android Studio, is available in the `demo` folder o
at the 2nd column from left and 3rd row from top.
1. Create a new application with a single activity ('Main').
1. Save the image tiles to your `assets` directory.
-1. Add `compile 'com.qozix:tileview:2.1.4'` to your gradle dependencies.
+1. Add `compile 'com.qozix:tileview:2.1.5'` to your gradle dependencies.
1. In the Main Activity, use this for `onCreate`:
```
@Override
diff --git a/tileview/build.gradle b/tileview/build.gradle
index fee3608c..63ffdb3e 100644
--- a/tileview/build.gradle
+++ b/tileview/build.gradle
@@ -6,8 +6,8 @@ android {
defaultConfig {
minSdkVersion 11
targetSdkVersion 22
- versionCode 29
- versionName "2.1.4"
+ versionCode 30
+ versionName "2.1.5"
}
buildTypes {
release {
diff --git a/tileview/src/main/java/com/qozix/tileview/TileView.java b/tileview/src/main/java/com/qozix/tileview/TileView.java
index 00bd96cb..95431931 100644
--- a/tileview/src/main/java/com/qozix/tileview/TileView.java
+++ b/tileview/src/main/java/com/qozix/tileview/TileView.java
@@ -716,6 +716,30 @@ public void setShouldRenderWhilePanning( boolean shouldRender ) {
mTileCanvasViewGroup.setRenderBuffer( buffer );
}
+ /**
+ * Allows the use of a custom {@link DetailLevelManager}.
+ *
+ * For example, to change the logic of {@link DetailLevel} choice for a given scale, you
+ * declare your own {@code DetailLevelMangerCustom} that extends {@link DetailLevelManager} :
+ *
{@code
+ * private class DetailLevelManagerCustom extends DetailLevelManager{
+ * @literal @Override
+ * public DetailLevel getDetailLevelForScale(){
+ * // your logic here
+ * }
+ * }
+ * }
+ *
+ * Then you should use {@code TileView.setDetailLevelManager} before other method calls, especially
+ * {@code TileView.setSize} and {@code TileView.addDetailLevel}.
+ *
+ *
+ * @param manager The DetailLevelManager instance used.
+ */
+ public void setDetailLevelManager( DetailLevelManager manager ) {
+ mDetailLevelManager = manager;
+ }
+
@Override
protected void onLayout( boolean changed, int l, int t, int r, int b ) {
super.onLayout( changed, l, t, r, b );
diff --git a/tileview/src/main/java/com/qozix/tileview/detail/DetailLevelManager.java b/tileview/src/main/java/com/qozix/tileview/detail/DetailLevelManager.java
index ecbf90ce..68fb8bbd 100644
--- a/tileview/src/main/java/com/qozix/tileview/detail/DetailLevelManager.java
+++ b/tileview/src/main/java/com/qozix/tileview/detail/DetailLevelManager.java
@@ -9,11 +9,11 @@
public class DetailLevelManager {
- private LinkedList mDetailLevelLinkedList = new LinkedList();
+ protected LinkedList mDetailLevelLinkedList = new LinkedList();
private DetailLevelChangeListener mDetailLevelChangeListener;
- private float mScale = 1;
+ protected float mScale = 1;
private int mBaseWidth;
private int mBaseHeight;
@@ -127,7 +127,7 @@ public DetailLevel getCurrentDetailLevel() {
return mCurrentDetailLevel;
}
- private void update() {
+ protected void update() {
boolean detailLevelChanged = false;
if( !mDetailLevelLocked ) {
DetailLevel matchingLevel = getDetailLevelForScale();