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();