diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a8e4df1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,18 @@
+# Gradle files
+.gradle/
+build/
+
+# Local configuration file (sdk path, etc)
+local.properties
+
+# Android Studio generated folders
+.navigation/
+captures/
+.externalNativeBuild
+
+# IntelliJ project files
+*.iml
+.idea/
+
+# Misc
+.DS_Store
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..69effa0
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,26 @@
+language: android
+
+before_cache:
+  - rm -f  $HOME/.gradle/caches/modules-2/modules-2.lock
+  - rm -fr $HOME/.gradle/caches/*/plugin-resolution/
+  
+before_install:
+  - yes | sdkmanager "platforms;android-27"
+
+cache:
+  directories:
+    - $HOME/.gradle/caches/
+    - $HOME/.gradle/wrapper/
+    - $HOME/.android/build-cache
+
+android:
+  components:
+    - tools
+    - build-tools-26.0.2
+    - android-27
+    - platform-tools
+  licenses:
+    - 'android-sdk-license-.+'
+
+script:
+  ./gradlew build
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..cb19537
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,10 @@
+Before raising a new issue, please check the following places for an answer to your question!
+
+* Read through [the wiki](https://github.com/davemorrissey/subsampling-scale-image-view/wiki) for a comprehensive guide to using the view.
+* Search through [open and closed issues](https://github.com/davemorrissey/subsampling-scale-image-view/issues?utf8=%E2%9C%93&q=is%3Aissue)
+* Check examples in [the sample project](https://github.com/davemorrissey/subsampling-scale-image-view/tree/master/sample/src/com/davemorrissey/labs/subscaleview/sample) - most common uses are covered.
+* See if there's an answer to your question on [StackOverflow](http://stackoverflow.com/).
+
+If you get stuck adding the view in your project or need help extending it for your requirements, please consider asking for help on StackOverflow instead of raising an issue. This issue tracker is intended for reporting bugs and raising feature requests.
+
+Thanks for reading!
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..37ec93a
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,191 @@
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and
+distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright
+owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities
+that control, are controlled by, or are under common control with that entity.
+For the purposes of this definition, "control" means (i) the power, direct or
+indirect, to cause the direction or management of such entity, whether by
+contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
+outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising
+permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including
+but not limited to software source code, documentation source, and configuration
+files.
+
+"Object" form shall mean any form resulting from mechanical transformation or
+translation of a Source form, including but not limited to compiled object code,
+generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made
+available under the License, as indicated by a copyright notice that is included
+in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that
+is based on (or derived from) the Work and for which the editorial revisions,
+annotations, elaborations, or other modifications represent, as a whole, an
+original work of authorship. For the purposes of this License, Derivative Works
+shall not include works that remain separable from, or merely link (or bind by
+name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version
+of the Work and any modifications or additions to that Work or Derivative Works
+thereof, that is intentionally submitted to Licensor for inclusion in the Work
+by the copyright owner or by an individual or Legal Entity authorized to submit
+on behalf of the copyright owner. For the purposes of this definition,
+"submitted" means any form of electronic, verbal, or written communication sent
+to the Licensor or its representatives, including but not limited to
+communication on electronic mailing lists, source code control systems, and
+issue tracking systems that are managed by, or on behalf of, the Licensor for
+the purpose of discussing and improving the Work, but excluding communication
+that is conspicuously marked or otherwise designated in writing by the copyright
+owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
+of whom a Contribution has been received by Licensor and subsequently
+incorporated within the Work.
+
+2. Grant of Copyright License.
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the Work and such
+Derivative Works in Source or Object form.
+
+3. Grant of Patent License.
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable (except as stated in this section) patent license to make, have
+made, use, offer to sell, sell, import, and otherwise transfer the Work, where
+such license applies only to those patent claims licensable by such Contributor
+that are necessarily infringed by their Contribution(s) alone or by combination
+of their Contribution(s) with the Work to which such Contribution(s) was
+submitted. If You institute patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Work or a
+Contribution incorporated within the Work constitutes direct or contributory
+patent infringement, then any patent licenses granted to You under this License
+for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof
+in any medium, with or without modifications, and in Source or Object form,
+provided that You meet the following conditions:
+
+You must give any other recipients of the Work or Derivative Works a copy of
+this License; and
+You must cause any modified files to carry prominent notices stating that You
+changed the files; and
+You must retain, in the Source form of any Derivative Works that You distribute,
+all copyright, patent, trademark, and attribution notices from the Source form
+of the Work, excluding those notices that do not pertain to any part of the
+Derivative Works; and
+If the Work includes a "NOTICE" text file as part of its distribution, then any
+Derivative Works that You distribute must include a readable copy of the
+attribution notices contained within such NOTICE file, excluding those notices
+that do not pertain to any part of the Derivative Works, in at least one of the
+following places: within a NOTICE text file distributed as part of the
+Derivative Works; within the Source form or documentation, if provided along
+with the Derivative Works; or, within a display generated by the Derivative
+Works, if and wherever such third-party notices normally appear. The contents of
+the NOTICE file are for informational purposes only and do not modify the
+License. You may add Your own attribution notices within Derivative Works that
+You distribute, alongside or as an addendum to the NOTICE text from the Work,
+provided that such additional attribution notices cannot be construed as
+modifying the License.
+You may add Your own copyright statement to Your modifications and may provide
+additional or different license terms and conditions for use, reproduction, or
+distribution of Your modifications, or for any such Derivative Works as a whole,
+provided Your use, reproduction, and distribution of the Work otherwise complies
+with the conditions stated in this License.
+
+5. Submission of Contributions.
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted
+for inclusion in the Work by You to the Licensor shall be under the terms and
+conditions of this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify the terms of
+any separate license agreement you may have executed with Licensor regarding
+such Contributions.
+
+6. Trademarks.
+
+This License does not grant permission to use the trade names, trademarks,
+service marks, or product names of the Licensor, except as required for
+reasonable and customary use in describing the origin of the Work and
+reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+Unless required by applicable law or agreed to in writing, Licensor provides the
+Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
+including, without limitation, any warranties or conditions of TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
+solely responsible for determining the appropriateness of using or
+redistributing the Work and assume any risks associated with Your exercise of
+permissions under this License.
+
+8. Limitation of Liability.
+
+In no event and under no legal theory, whether in tort (including negligence),
+contract, or otherwise, unless required by applicable law (such as deliberate
+and grossly negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special, incidental,
+or consequential damages of any character arising as a result of this License or
+out of the use or inability to use the Work (including but not limited to
+damages for loss of goodwill, work stoppage, computer failure or malfunction, or
+any and all other commercial damages or losses), even if such Contributor has
+been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+While redistributing the Work or Derivative Works thereof, You may choose to
+offer, and charge a fee for, acceptance of support, warranty, indemnity, or
+other liability obligations and/or rights consistent with this License. However,
+in accepting such obligations, You may act only on Your own behalf and on Your
+sole responsibility, not on behalf of any other Contributor, and only if You
+agree to indemnify, defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason of your
+accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work
+
+To apply the Apache License to your work, attach the following boilerplate
+notice, with the fields enclosed by brackets "[]" replaced with your own
+identifying information. (Don't include the brackets!) The text should be
+enclosed in the appropriate comment syntax for the file format. We also
+recommend that a file or class name and description of purpose be included on
+the same "printed page" as the copyright notice for easier identification within
+third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..63a41ae
--- /dev/null
+++ b/README.md
@@ -0,0 +1,121 @@
+Subsampling Scale Image View
+===========================
+
+[![Build Status](https://travis-ci.org/davemorrissey/subsampling-scale-image-view.svg?branch=master)](https://travis-ci.org/davemorrissey/subsampling-scale-image-view)
+
+A custom image view for Android, designed for photo galleries and displaying huge images (e.g. maps and building plans) without `OutOfMemoryError`s. Includes pinch to zoom, panning, rotation and animation support, and allows easy extension so you can add your own overlays and touch event detection.
+
+The view optionally uses subsampling and tiles to support very large images - a low resolution base layer is loaded and as you zoom in, it is overlaid with smaller high resolution tiles for the visible area. This avoids holding too much data in memory. It's ideal for displaying large images while allowing you to zoom in to the high resolution details. You can disable tiling for smaller images and when displaying a bitmap object. There are some advantages and disadvantages to disabling tiling so to decide which is best, see [the wiki](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/02.-Displaying-images).
+
+#### Guides
+
+* [Releases & downloads](https://github.com/davemorrissey/subsampling-scale-image-view/releases)
+* [Installation and setup](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/01.-Setup)
+* [Image display notes & limitations](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/02.-Displaying-images)
+* [Using preview images](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/03.-Preview-images)
+* [Handling orientation changes](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/05.-Orientation-changes)
+* [Advanced configuration](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/07.-Configuration)
+* [Event handling](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/09.-Events)
+* [Animation](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/08.-Animation)
+* [Extension](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/10.-Extension)
+* [Reference (JavaDocs)](http://davemorrissey.github.io/subsampling-scale-image-view/javadoc/)
+
+#### Migration guides
+
+Versions 3.9.0, 3.8.0 and 3.0.0 contain breaking changes. Migration instructions can be found [in the wiki](https://github.com/davemorrissey/subsampling-scale-image-view/wiki/X.--Migration-guides).
+
+#### Download the sample app
+
+[![Get it on Google Play](docs/images/google_play.png)](https://play.google.com/store/apps/details?id=com.davemorrissey.labs.subscaleview.sample)
+
+[Kotlin Sample App on GitHub](https://github.com/davemorrissey/ssiv-kotlin-sample)
+
+#### Demo
+
+![Demo](docs/images/demo.gif)
+
+## Features
+
+#### Image display
+
+* Display images from assets, resources, the file system or bitmaps
+* Automatically rotate images from the file system (e.g. the camera or gallery) according to EXIF
+* Manually rotate images in 90° increments
+* Display a region of the source image
+* Use a preview image while large images load
+* Swap images at runtime
+* Use a custom bitmap decoder
+
+*With tiling enabled:*
+
+* Display huge images, larger than can be loaded into memory
+* Show high resolution detail on zooming in
+* Tested up to 20,000x20,000px, though larger images are slower
+
+#### Gesture detection
+
+* One finger pan
+* Two finger pinch to zoom
+* Quick scale (one finger zoom)
+* Pan while zooming
+* Seamless switch between pan and zoom
+* Fling momentum after panning
+* Double tap to zoom in and out
+* Options to disable pan and/or zoom gestures
+
+#### Animation
+
+* Public methods for animating the scale and center
+* Customisable duration and easing
+* Optional uninterruptible animations
+
+#### Overridable event detection
+* Supports `OnClickListener` and `OnLongClickListener`
+* Supports interception of events using `GestureDetector` and `OnTouchListener`
+* Extend to add your own gestures
+
+#### Easy integration
+* Use within a `ViewPager` to create a photo gallery
+* Easily restore scale, center and orientation after screen rotation
+* Can be extended to add overlay graphics that move and scale with the image
+* Handles view resizing and `wrap_content` layout
+
+## Quick start
+
+**1)** Add `com.davemorrissey.labs:subsampling-scale-image-view:3.9.0` as a dependency in your build.gradle file.
+
+**2)** Add the view to your layout XML.
+
+    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" >
+
+        <com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
+            android:id="@+id/imageView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"/>
+
+    </LinearLayout>
+
+**3a)** Now, in your fragment or activity, set the image resource, asset name or file path.
+
+    SubsamplingScaleImageView imageView = (SubsamplingScaleImageView)findViewById(id.imageView);
+    imageView.setImage(ImageSource.resource(R.drawable.monkey));
+    // ... or ...
+    imageView.setImage(ImageSource.asset("map.png"))
+    // ... or ...
+    imageView.setImage(ImageSource.uri("/sdcard/DCIM/DSCM00123.JPG"));
+
+**3b)** Or, if you have a `Bitmap` object in memory, load it into the view. This is unsuitable for large images because it bypasses subsampling - you may get an `OutOfMemoryError`.
+
+    SubsamplingScaleImageView imageView = (SubsamplingScaleImageView)findViewById(id.imageView);
+    imageView.setImage(ImageSource.bitmap(bitmap));
+
+## Photo credits
+
+* San Martino by Luca Bravo, via [unsplash.com](https://unsplash.com/photos/lWAOc0UuJ-A)
+* Swiss Road by Ludovic Fremondiere, via [unsplash.com](https://unsplash.com/photos/3XN-BNRDUyY)
+
+## About
+
+Copyright 2018 David Morrissey, and licensed under the Apache License, Version 2.0. No attribution is necessary but it's very much appreciated. Star this project if you like it!
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..8e05d42
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,19 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+allprojects {
+    repositories {
+        mavenCentral()
+        jcenter()
+        google()
+    }
+}
+
+buildscript {
+    repositories {
+        mavenCentral()
+        jcenter()
+        google()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:3.0.1'
+    }
+}
diff --git a/docs/images/demo.gif b/docs/images/demo.gif
new file mode 100644
index 0000000..673d581
--- /dev/null
+++ b/docs/images/demo.gif
Binary files differ
diff --git a/docs/images/google_play.png b/docs/images/google_play.png
new file mode 100644
index 0000000..b9bb8d9
--- /dev/null
+++ b/docs/images/google_play.png
Binary files differ
diff --git a/docs/issue_template.md b/docs/issue_template.md
new file mode 100644
index 0000000..63899d4
--- /dev/null
+++ b/docs/issue_template.md
@@ -0,0 +1,17 @@
+*Please provide as much of the following information as possible. Please do not raise issues to ask for help developing your app.*
+
+### Expected behaviour
+
+### Actual behaviour
+
+### Steps to reproduce
+
+(Include your setup code, and where relevant, your layout XML)
+
+### Affected devices
+
+(Specific devices, screen densities, SDK versions)
+
+### Affected images
+
+(Attach images you have problems with)
diff --git a/docs/javadoc/allclasses-frame.html b/docs/javadoc/allclasses-frame.html
new file mode 100644
index 0000000..082d8ac
--- /dev/null
+++ b/docs/javadoc/allclasses-frame.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>All Classes (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<h1 class="bar">All&nbsp;Classes</h1>
+<div class="indexContainer">
+<ul>
+<li><a href="com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="class in com.davemorrissey.labs.subscaleview.decoder" target="classFrame">CompatDecoderFactory</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder" target="classFrame"><span class="interfaceName">DecoderFactory</span></a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder" target="classFrame"><span class="interfaceName">ImageDecoder</span></a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder" target="classFrame"><span class="interfaceName">ImageRegionDecoder</span></a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview" target="classFrame">ImageSource</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview" target="classFrame">ImageViewState</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder" target="classFrame">SkiaImageDecoder</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder" target="classFrame">SkiaImageRegionDecoder</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder" target="classFrame">SkiaPooledImageRegionDecoder</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview" target="classFrame">SubsamplingScaleImageView</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview" target="classFrame">SubsamplingScaleImageView.DefaultOnAnimationEventListener</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview" target="classFrame">SubsamplingScaleImageView.DefaultOnImageEventListener</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview" target="classFrame">SubsamplingScaleImageView.DefaultOnStateChangedListener</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview" target="classFrame"><span class="interfaceName">SubsamplingScaleImageView.OnAnimationEventListener</span></a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview" target="classFrame"><span class="interfaceName">SubsamplingScaleImageView.OnImageEventListener</span></a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview" target="classFrame"><span class="interfaceName">SubsamplingScaleImageView.OnStateChangedListener</span></a></li>
+</ul>
+</div>
+</body>
+</html>
diff --git a/docs/javadoc/allclasses-noframe.html b/docs/javadoc/allclasses-noframe.html
new file mode 100644
index 0000000..8e809e3
--- /dev/null
+++ b/docs/javadoc/allclasses-noframe.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>All Classes (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<h1 class="bar">All&nbsp;Classes</h1>
+<div class="indexContainer">
+<ul>
+<li><a href="com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="class in com.davemorrissey.labs.subscaleview.decoder">CompatDecoderFactory</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="interfaceName">DecoderFactory</span></a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="interfaceName">ImageDecoder</span></a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="interfaceName">ImageRegionDecoder</span></a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview">ImageViewState</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaImageDecoder</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaImageRegionDecoder</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaPooledImageRegionDecoder</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnAnimationEventListener</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnImageEventListener</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnStateChangedListener</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="interfaceName">SubsamplingScaleImageView.OnAnimationEventListener</span></a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="interfaceName">SubsamplingScaleImageView.OnImageEventListener</span></a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="interfaceName">SubsamplingScaleImageView.OnStateChangedListener</span></a></li>
+</ul>
+</div>
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/ImageSource.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/ImageSource.html
new file mode 100644
index 0000000..0ad82ee
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/ImageSource.html
@@ -0,0 +1,580 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>ImageSource (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ImageSource (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9,"i2":9,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":9,"i14":10,"i15":10,"i16":10,"i17":9,"i18":9};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev&nbsp;Class</li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/ImageSource.html" target="_top">Frames</a></li>
+<li><a href="ImageSource.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview</div>
+<h2 title="Class ImageSource" class="title">Class ImageSource</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>com.davemorrissey.labs.subscaleview.ImageSource</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">ImageSource</span>
+extends <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
+<div class="block">Helper class used to set the source and additional attributes from a variety of sources. Supports
+ use of a bitmap, asset, resource, external file or any other URI.
+
+ When you are using a preview image, you must set the dimensions of the full size image on the
+ ImageSource object for the full size image using the <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#dimensions-int-int-"><code>dimensions(int, int)</code></a> method.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>static <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#asset-java.lang.String-">asset</a></span>(<a href="https://developer.android.com/reference/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;assetName)</code>
+<div class="block">Create an instance from an asset name.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#bitmap-android.graphics.Bitmap-">bitmap</a></span>(<a href="https://developer.android.com/reference/android/graphics/Bitmap.html?is-external=true" title="class or interface in android.graphics">Bitmap</a>&nbsp;bitmap)</code>
+<div class="block">Provide a loaded bitmap for display.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>static <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#cachedBitmap-android.graphics.Bitmap-">cachedBitmap</a></span>(<a href="https://developer.android.com/reference/android/graphics/Bitmap.html?is-external=true" title="class or interface in android.graphics">Bitmap</a>&nbsp;bitmap)</code>
+<div class="block">Provide a loaded and cached bitmap for display.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#dimensions-int-int-">dimensions</a></span>(int&nbsp;sWidth,
+          int&nbsp;sHeight)</code>
+<div class="block">Declare the dimensions of the image.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>protected <a href="https://developer.android.com/reference/android/graphics/Bitmap.html?is-external=true" title="class or interface in android.graphics">Bitmap</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#getBitmap--">getBitmap</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>protected <a href="https://developer.android.com/reference/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#getResource--">getResource</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>protected int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#getSHeight--">getSHeight</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>protected <a href="https://developer.android.com/reference/android/graphics/Rect.html?is-external=true" title="class or interface in android.graphics">Rect</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#getSRegion--">getSRegion</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>protected int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#getSWidth--">getSWidth</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#getTile--">getTile</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>protected <a href="https://developer.android.com/reference/android/net/Uri.html?is-external=true" title="class or interface in android.net">Uri</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#getUri--">getUri</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#isCached--">isCached</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#region-android.graphics.Rect-">region</a></span>(<a href="https://developer.android.com/reference/android/graphics/Rect.html?is-external=true" title="class or interface in android.graphics">Rect</a>&nbsp;sRegion)</code>
+<div class="block">Use a region of the source image.</div>
+</td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#resource-int-">resource</a></span>(int&nbsp;resId)</code>
+<div class="block">Create an instance from a resource.</div>
+</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#tiling-boolean-">tiling</a></span>(boolean&nbsp;tile)</code>
+<div class="block">Enable or disable tiling of the image.</div>
+</td>
+</tr>
+<tr id="i15" class="rowColor">
+<td class="colFirst"><code><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#tilingDisabled--">tilingDisabled</a></span>()</code>
+<div class="block">Disable tiling of the image.</div>
+</td>
+</tr>
+<tr id="i16" class="altColor">
+<td class="colFirst"><code><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#tilingEnabled--">tilingEnabled</a></span>()</code>
+<div class="block">Enable tiling of the image.</div>
+</td>
+</tr>
+<tr id="i17" class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#uri-java.lang.String-">uri</a></span>(<a href="https://developer.android.com/reference/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;uri)</code>
+<div class="block">Create an instance from a URI.</div>
+</td>
+</tr>
+<tr id="i18" class="altColor">
+<td class="colFirst"><code>static <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#uri-android.net.Uri-">uri</a></span>(<a href="https://developer.android.com/reference/android/net/Uri.html?is-external=true" title="class or interface in android.net">Uri</a>&nbsp;uri)</code>
+<div class="block">Create an instance from a URI.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="resource-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>resource</h4>
+<pre>public static&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;resource(int&nbsp;resId)</pre>
+<div class="block">Create an instance from a resource. The correct resource for the device screen resolution will be used.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>resId</code> - resource ID.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>an <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview"><code>ImageSource</code></a> instance.</dd>
+</dl>
+</li>
+</ul>
+<a name="asset-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>asset</h4>
+<pre>public static&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;asset(<a href="https://developer.android.com/reference/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;assetName)</pre>
+<div class="block">Create an instance from an asset name.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>assetName</code> - asset name.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>an <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview"><code>ImageSource</code></a> instance.</dd>
+</dl>
+</li>
+</ul>
+<a name="uri-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>uri</h4>
+<pre>public static&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;uri(<a href="https://developer.android.com/reference/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;uri)</pre>
+<div class="block">Create an instance from a URI. If the URI does not start with a scheme, it's assumed to be the URI
+ of a file.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>uri</code> - image URI.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>an <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview"><code>ImageSource</code></a> instance.</dd>
+</dl>
+</li>
+</ul>
+<a name="uri-android.net.Uri-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>uri</h4>
+<pre>public static&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;uri(<a href="https://developer.android.com/reference/android/net/Uri.html?is-external=true" title="class or interface in android.net">Uri</a>&nbsp;uri)</pre>
+<div class="block">Create an instance from a URI.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>uri</code> - image URI.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>an <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview"><code>ImageSource</code></a> instance.</dd>
+</dl>
+</li>
+</ul>
+<a name="bitmap-android.graphics.Bitmap-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>bitmap</h4>
+<pre>public static&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;bitmap(<a href="https://developer.android.com/reference/android/graphics/Bitmap.html?is-external=true" title="class or interface in android.graphics">Bitmap</a>&nbsp;bitmap)</pre>
+<div class="block">Provide a loaded bitmap for display.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>bitmap</code> - bitmap to be displayed.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>an <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview"><code>ImageSource</code></a> instance.</dd>
+</dl>
+</li>
+</ul>
+<a name="cachedBitmap-android.graphics.Bitmap-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>cachedBitmap</h4>
+<pre>public static&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;cachedBitmap(<a href="https://developer.android.com/reference/android/graphics/Bitmap.html?is-external=true" title="class or interface in android.graphics">Bitmap</a>&nbsp;bitmap)</pre>
+<div class="block">Provide a loaded and cached bitmap for display. This bitmap will not be recycled when it is no
+ longer needed. Use this method if you loaded the bitmap with an image loader such as Picasso
+ or Volley.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>bitmap</code> - bitmap to be displayed.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>an <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview"><code>ImageSource</code></a> instance.</dd>
+</dl>
+</li>
+</ul>
+<a name="tilingEnabled--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tilingEnabled</h4>
+<pre>public&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;tilingEnabled()</pre>
+<div class="block">Enable tiling of the image. This does not apply to preview images which are always loaded as a single bitmap.,
+ and tiling cannot be disabled when displaying a region of the source image.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>this instance for chaining.</dd>
+</dl>
+</li>
+</ul>
+<a name="tilingDisabled--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tilingDisabled</h4>
+<pre>public&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;tilingDisabled()</pre>
+<div class="block">Disable tiling of the image. This does not apply to preview images which are always loaded as a single bitmap,
+ and tiling cannot be disabled when displaying a region of the source image.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>this instance for chaining.</dd>
+</dl>
+</li>
+</ul>
+<a name="tiling-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tiling</h4>
+<pre>public&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;tiling(boolean&nbsp;tile)</pre>
+<div class="block">Enable or disable tiling of the image. This does not apply to preview images which are always loaded as a single bitmap,
+ and tiling cannot be disabled when displaying a region of the source image.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>tile</code> - whether tiling should be enabled.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>this instance for chaining.</dd>
+</dl>
+</li>
+</ul>
+<a name="region-android.graphics.Rect-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>region</h4>
+<pre>public&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;region(<a href="https://developer.android.com/reference/android/graphics/Rect.html?is-external=true" title="class or interface in android.graphics">Rect</a>&nbsp;sRegion)</pre>
+<div class="block">Use a region of the source image. Region must be set independently for the full size image and the preview if
+ you are using one.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>sRegion</code> - the region of the source image to be displayed.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>this instance for chaining.</dd>
+</dl>
+</li>
+</ul>
+<a name="dimensions-int-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>dimensions</h4>
+<pre>public&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;dimensions(int&nbsp;sWidth,
+                              int&nbsp;sHeight)</pre>
+<div class="block">Declare the dimensions of the image. This is only required for a full size image, when you are specifying a URI
+ and also a preview image. When displaying a bitmap object, or not using a preview, you do not need to declare
+ the image dimensions. Note if the declared dimensions are found to be incorrect, the view will reset.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>sWidth</code> - width of the source image.</dd>
+<dd><code>sHeight</code> - height of the source image.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>this instance for chaining.</dd>
+</dl>
+</li>
+</ul>
+<a name="getUri--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getUri</h4>
+<pre>protected final&nbsp;<a href="https://developer.android.com/reference/android/net/Uri.html?is-external=true" title="class or interface in android.net">Uri</a>&nbsp;getUri()</pre>
+</li>
+</ul>
+<a name="getBitmap--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getBitmap</h4>
+<pre>protected final&nbsp;<a href="https://developer.android.com/reference/android/graphics/Bitmap.html?is-external=true" title="class or interface in android.graphics">Bitmap</a>&nbsp;getBitmap()</pre>
+</li>
+</ul>
+<a name="getResource--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getResource</h4>
+<pre>protected final&nbsp;<a href="https://developer.android.com/reference/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;getResource()</pre>
+</li>
+</ul>
+<a name="getTile--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTile</h4>
+<pre>protected final&nbsp;boolean&nbsp;getTile()</pre>
+</li>
+</ul>
+<a name="getSWidth--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getSWidth</h4>
+<pre>protected final&nbsp;int&nbsp;getSWidth()</pre>
+</li>
+</ul>
+<a name="getSHeight--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getSHeight</h4>
+<pre>protected final&nbsp;int&nbsp;getSHeight()</pre>
+</li>
+</ul>
+<a name="getSRegion--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getSRegion</h4>
+<pre>protected final&nbsp;<a href="https://developer.android.com/reference/android/graphics/Rect.html?is-external=true" title="class or interface in android.graphics">Rect</a>&nbsp;getSRegion()</pre>
+</li>
+</ul>
+<a name="isCached--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>isCached</h4>
+<pre>protected final&nbsp;boolean&nbsp;isCached()</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev&nbsp;Class</li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/ImageSource.html" target="_top">Frames</a></li>
+<li><a href="ImageSource.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/ImageViewState.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/ImageViewState.html
new file mode 100644
index 0000000..a5075a9
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/ImageViewState.html
@@ -0,0 +1,308 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>ImageViewState (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ImageViewState (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/ImageViewState.html" target="_top">Frames</a></li>
+<li><a href="ImageViewState.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview</div>
+<h2 title="Class ImageViewState" class="title">Class ImageViewState</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>com.davemorrissey.labs.subscaleview.ImageViewState</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="https://developer.android.com/reference/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public class <span class="typeNameLabel">ImageViewState</span>
+extends <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements <a href="https://developer.android.com/reference/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a></pre>
+<div class="block">Wraps the scale, center and orientation of a displayed image for easy restoration on screen rotate.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../serialized-form.html#com.davemorrissey.labs.subscaleview.ImageViewState">Serialized Form</a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html#ImageViewState-float-android.graphics.PointF-int-">ImageViewState</a></span>(float&nbsp;scale,
+              <a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;center,
+              int&nbsp;orientation)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html#getCenter--">getCenter</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html#getOrientation--">getOrientation</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>float</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html#getScale--">getScale</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ImageViewState-float-android.graphics.PointF-int-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ImageViewState</h4>
+<pre>public&nbsp;ImageViewState(float&nbsp;scale,
+                      <a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;center,
+                      int&nbsp;orientation)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getScale--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getScale</h4>
+<pre>public&nbsp;float&nbsp;getScale()</pre>
+</li>
+</ul>
+<a name="getCenter--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCenter</h4>
+<pre>public&nbsp;<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;getCenter()</pre>
+</li>
+</ul>
+<a name="getOrientation--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getOrientation</h4>
+<pre>public&nbsp;int&nbsp;getOrientation()</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/ImageViewState.html" target="_top">Frames</a></li>
+<li><a href="ImageViewState.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html
new file mode 100644
index 0000000..37c7b87
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html
@@ -0,0 +1,331 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>SubsamplingScaleImageView.AnimationBuilder (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SubsamplingScaleImageView.AnimationBuilder (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" target="_top">Frames</a></li>
+<li><a href="SubsamplingScaleImageView.AnimationBuilder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview</div>
+<h2 title="Class SubsamplingScaleImageView.AnimationBuilder" class="title">Class SubsamplingScaleImageView.AnimationBuilder</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.AnimationBuilder</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">SubsamplingScaleImageView.AnimationBuilder</span>
+extends <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
+<div class="block">Builder class used to set additional options for a scale animation. Create an instance using <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#animateScale-float-"><code>SubsamplingScaleImageView.animateScale(float)</code></a>,
+ then set your options and call <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html#start--"><code>start()</code></a>.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html#start--">start</a></span>()</code>
+<div class="block">Starts the animation.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html#withDuration-long-">withDuration</a></span>(long&nbsp;duration)</code>
+<div class="block">Desired duration of the anim in milliseconds.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html#withEasing-int-">withEasing</a></span>(int&nbsp;easing)</code>
+<div class="block">Set the easing style.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html#withInterruptible-boolean-">withInterruptible</a></span>(boolean&nbsp;interruptible)</code>
+<div class="block">Whether the animation can be interrupted with a touch.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html#withOnAnimationEventListener-com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.OnAnimationEventListener-">withOnAnimationEventListener</a></span>(<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnAnimationEventListener</a>&nbsp;listener)</code>
+<div class="block">Add an animation event listener.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="withDuration-long-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>withDuration</h4>
+<pre>public&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a>&nbsp;withDuration(long&nbsp;duration)</pre>
+<div class="block">Desired duration of the anim in milliseconds. Default is 500.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>duration</code> - duration in milliseconds.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>this builder for method chaining.</dd>
+</dl>
+</li>
+</ul>
+<a name="withInterruptible-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>withInterruptible</h4>
+<pre>public&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a>&nbsp;withInterruptible(boolean&nbsp;interruptible)</pre>
+<div class="block">Whether the animation can be interrupted with a touch. Default is true.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>interruptible</code> - interruptible flag.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>this builder for method chaining.</dd>
+</dl>
+</li>
+</ul>
+<a name="withEasing-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>withEasing</h4>
+<pre>public&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a>&nbsp;withEasing(int&nbsp;easing)</pre>
+<div class="block">Set the easing style. See static fields. <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#EASE_IN_OUT_QUAD"><code>SubsamplingScaleImageView.EASE_IN_OUT_QUAD</code></a> is recommended, and the default.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>easing</code> - easing style.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>this builder for method chaining.</dd>
+</dl>
+</li>
+</ul>
+<a name="withOnAnimationEventListener-com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.OnAnimationEventListener-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>withOnAnimationEventListener</h4>
+<pre>public&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a>&nbsp;withOnAnimationEventListener(<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnAnimationEventListener</a>&nbsp;listener)</pre>
+<div class="block">Add an animation event listener.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>listener</code> - The listener.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>this builder for method chaining.</dd>
+</dl>
+</li>
+</ul>
+<a name="start--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>start</h4>
+<pre>public&nbsp;void&nbsp;start()</pre>
+<div class="block">Starts the animation.</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" target="_top">Frames</a></li>
+<li><a href="SubsamplingScaleImageView.AnimationBuilder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html
new file mode 100644
index 0000000..1c2b1d0
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html
@@ -0,0 +1,328 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>SubsamplingScaleImageView.DefaultOnAnimationEventListener (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SubsamplingScaleImageView.DefaultOnAnimationEventListener (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" target="_top">Frames</a></li>
+<li><a href="SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview</div>
+<h2 title="Class SubsamplingScaleImageView.DefaultOnAnimationEventListener" class="title">Class SubsamplingScaleImageView.DefaultOnAnimationEventListener</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.DefaultOnAnimationEventListener</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnAnimationEventListener</a></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static class <span class="typeNameLabel">SubsamplingScaleImageView.DefaultOnAnimationEventListener</span>
+extends <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnAnimationEventListener</a></pre>
+<div class="block">Default implementation of <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.OnAnimationEventListener</code></a> for extension. This does nothing in any method.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html#DefaultOnAnimationEventListener--">DefaultOnAnimationEventListener</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html#onComplete--">onComplete</a></span>()</code>
+<div class="block">The animation has completed, having reached its endpoint.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html#onInterruptedByNewAnim--">onInterruptedByNewAnim</a></span>()</code>
+<div class="block">The animation has been aborted before reaching its endpoint because a new animation has been started.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html#onInterruptedByUser--">onInterruptedByUser</a></span>()</code>
+<div class="block">The animation has been aborted before reaching its endpoint because the user touched the screen.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="DefaultOnAnimationEventListener--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>DefaultOnAnimationEventListener</h4>
+<pre>public&nbsp;DefaultOnAnimationEventListener()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="onComplete--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onComplete</h4>
+<pre>public&nbsp;void&nbsp;onComplete()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html#onComplete--">SubsamplingScaleImageView.OnAnimationEventListener</a></code></span></div>
+<div class="block">The animation has completed, having reached its endpoint.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html#onComplete--">onComplete</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnAnimationEventListener</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="onInterruptedByUser--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onInterruptedByUser</h4>
+<pre>public&nbsp;void&nbsp;onInterruptedByUser()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html#onInterruptedByUser--">SubsamplingScaleImageView.OnAnimationEventListener</a></code></span></div>
+<div class="block">The animation has been aborted before reaching its endpoint because the user touched the screen.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html#onInterruptedByUser--">onInterruptedByUser</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnAnimationEventListener</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="onInterruptedByNewAnim--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>onInterruptedByNewAnim</h4>
+<pre>public&nbsp;void&nbsp;onInterruptedByNewAnim()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html#onInterruptedByNewAnim--">SubsamplingScaleImageView.OnAnimationEventListener</a></code></span></div>
+<div class="block">The animation has been aborted before reaching its endpoint because a new animation has been started.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html#onInterruptedByNewAnim--">onInterruptedByNewAnim</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnAnimationEventListener</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" target="_top">Frames</a></li>
+<li><a href="SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html
new file mode 100644
index 0000000..cc298e4
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html
@@ -0,0 +1,415 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>SubsamplingScaleImageView.DefaultOnImageEventListener (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SubsamplingScaleImageView.DefaultOnImageEventListener (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" target="_top">Frames</a></li>
+<li><a href="SubsamplingScaleImageView.DefaultOnImageEventListener.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview</div>
+<h2 title="Class SubsamplingScaleImageView.DefaultOnImageEventListener" class="title">Class SubsamplingScaleImageView.DefaultOnImageEventListener</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.DefaultOnImageEventListener</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static class <span class="typeNameLabel">SubsamplingScaleImageView.DefaultOnImageEventListener</span>
+extends <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a></pre>
+<div class="block">Default implementation of <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.OnImageEventListener</code></a> for extension. This does nothing in any method.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html#DefaultOnImageEventListener--">DefaultOnImageEventListener</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html#onImageLoaded--">onImageLoaded</a></span>()</code>
+<div class="block">Called when the full size image is ready.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html#onImageLoadError-java.lang.Exception-">onImageLoadError</a></span>(<a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)</code>
+<div class="block">Indicates an error initiliasing the decoder when using a tiling, or when loading the full
+ size bitmap when tiling is disabled.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html#onPreviewLoadError-java.lang.Exception-">onPreviewLoadError</a></span>(<a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)</code>
+<div class="block">Called when a preview image could not be loaded.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html#onPreviewReleased--">onPreviewReleased</a></span>()</code>
+<div class="block">Called when a bitmap set using ImageSource.cachedBitmap is no longer being used by the View.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html#onReady--">onReady</a></span>()</code>
+<div class="block">Called when the dimensions of the image and view are known, and either a preview image,
+ the full size image, or base layer tiles are loaded.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html#onTileLoadError-java.lang.Exception-">onTileLoadError</a></span>(<a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)</code>
+<div class="block">Called when an image tile could not be loaded.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="DefaultOnImageEventListener--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>DefaultOnImageEventListener</h4>
+<pre>public&nbsp;DefaultOnImageEventListener()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="onReady--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onReady</h4>
+<pre>public&nbsp;void&nbsp;onReady()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onReady--">SubsamplingScaleImageView.OnImageEventListener</a></code></span></div>
+<div class="block">Called when the dimensions of the image and view are known, and either a preview image,
+ the full size image, or base layer tiles are loaded. This indicates the scale and translate
+ are known and the next draw will display an image. This event can be used to hide a loading
+ graphic, or inform a subclass that it is safe to draw overlays.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onReady--">onReady</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="onImageLoaded--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onImageLoaded</h4>
+<pre>public&nbsp;void&nbsp;onImageLoaded()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onImageLoaded--">SubsamplingScaleImageView.OnImageEventListener</a></code></span></div>
+<div class="block">Called when the full size image is ready. When using tiling, this means the lowest resolution
+ base layer of tiles are loaded, and when tiling is disabled, the image bitmap is loaded.
+ This event could be used as a trigger to enable gestures if you wanted interaction disabled
+ while only a preview is displayed, otherwise for most cases <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onReady--"><code>SubsamplingScaleImageView.OnImageEventListener.onReady()</code></a> is the best
+ event to listen to.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onImageLoaded--">onImageLoaded</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="onPreviewLoadError-java.lang.Exception-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onPreviewLoadError</h4>
+<pre>public&nbsp;void&nbsp;onPreviewLoadError(<a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onPreviewLoadError-java.lang.Exception-">SubsamplingScaleImageView.OnImageEventListener</a></code></span></div>
+<div class="block">Called when a preview image could not be loaded. This method cannot be relied upon; certain
+ encoding types of supported image formats can result in corrupt or blank images being loaded
+ and displayed with no detectable error. The view will continue to load the full size image.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onPreviewLoadError-java.lang.Exception-">onPreviewLoadError</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>e</code> - The exception thrown. This error is logged by the view.</dd>
+</dl>
+</li>
+</ul>
+<a name="onImageLoadError-java.lang.Exception-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onImageLoadError</h4>
+<pre>public&nbsp;void&nbsp;onImageLoadError(<a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onImageLoadError-java.lang.Exception-">SubsamplingScaleImageView.OnImageEventListener</a></code></span></div>
+<div class="block">Indicates an error initiliasing the decoder when using a tiling, or when loading the full
+ size bitmap when tiling is disabled. This method cannot be relied upon; certain encoding
+ types of supported image formats can result in corrupt or blank images being loaded and
+ displayed with no detectable error.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onImageLoadError-java.lang.Exception-">onImageLoadError</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>e</code> - The exception thrown. This error is also logged by the view.</dd>
+</dl>
+</li>
+</ul>
+<a name="onTileLoadError-java.lang.Exception-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onTileLoadError</h4>
+<pre>public&nbsp;void&nbsp;onTileLoadError(<a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onTileLoadError-java.lang.Exception-">SubsamplingScaleImageView.OnImageEventListener</a></code></span></div>
+<div class="block">Called when an image tile could not be loaded. This method cannot be relied upon; certain
+ encoding types of supported image formats can result in corrupt or blank images being loaded
+ and displayed with no detectable error. Most cases where an unsupported file is used will
+ result in an error caught by <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onImageLoadError-java.lang.Exception-"><code>SubsamplingScaleImageView.OnImageEventListener.onImageLoadError(Exception)</code></a>.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onTileLoadError-java.lang.Exception-">onTileLoadError</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>e</code> - The exception thrown. This error is logged by the view.</dd>
+</dl>
+</li>
+</ul>
+<a name="onPreviewReleased--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>onPreviewReleased</h4>
+<pre>public&nbsp;void&nbsp;onPreviewReleased()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onPreviewReleased--">SubsamplingScaleImageView.OnImageEventListener</a></code></span></div>
+<div class="block">Called when a bitmap set using ImageSource.cachedBitmap is no longer being used by the View.
+ This is useful if you wish to manage the bitmap after the preview is shown</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onPreviewReleased--">onPreviewReleased</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" target="_top">Frames</a></li>
+<li><a href="SubsamplingScaleImageView.DefaultOnImageEventListener.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html
new file mode 100644
index 0000000..f038090
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html
@@ -0,0 +1,318 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>SubsamplingScaleImageView.DefaultOnStateChangedListener (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SubsamplingScaleImageView.DefaultOnStateChangedListener (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" target="_top">Frames</a></li>
+<li><a href="SubsamplingScaleImageView.DefaultOnStateChangedListener.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview</div>
+<h2 title="Class SubsamplingScaleImageView.DefaultOnStateChangedListener" class="title">Class SubsamplingScaleImageView.DefaultOnStateChangedListener</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.DefaultOnStateChangedListener</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnStateChangedListener</a></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static class <span class="typeNameLabel">SubsamplingScaleImageView.DefaultOnStateChangedListener</span>
+extends <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnStateChangedListener</a></pre>
+<div class="block">Default implementation of <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.OnStateChangedListener</code></a>. This does nothing in any method.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html#DefaultOnStateChangedListener--">DefaultOnStateChangedListener</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html#onCenterChanged-android.graphics.PointF-int-">onCenterChanged</a></span>(<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;newCenter,
+               int&nbsp;origin)</code>
+<div class="block">The source center has been changed.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html#onScaleChanged-float-int-">onScaleChanged</a></span>(float&nbsp;newScale,
+              int&nbsp;origin)</code>
+<div class="block">The scale has changed.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="DefaultOnStateChangedListener--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>DefaultOnStateChangedListener</h4>
+<pre>public&nbsp;DefaultOnStateChangedListener()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="onCenterChanged-android.graphics.PointF-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onCenterChanged</h4>
+<pre>public&nbsp;void&nbsp;onCenterChanged(<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;newCenter,
+                            int&nbsp;origin)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html#onCenterChanged-android.graphics.PointF-int-">SubsamplingScaleImageView.OnStateChangedListener</a></code></span></div>
+<div class="block">The source center has been changed. This can be a result of panning or zooming.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html#onCenterChanged-android.graphics.PointF-int-">onCenterChanged</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnStateChangedListener</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>newCenter</code> - The new source center point.</dd>
+<dd><code>origin</code> - Where the event originated from - one of <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_ANIM"><code>SubsamplingScaleImageView.ORIGIN_ANIM</code></a>, <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_TOUCH"><code>SubsamplingScaleImageView.ORIGIN_TOUCH</code></a>.</dd>
+</dl>
+</li>
+</ul>
+<a name="onScaleChanged-float-int-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>onScaleChanged</h4>
+<pre>public&nbsp;void&nbsp;onScaleChanged(float&nbsp;newScale,
+                           int&nbsp;origin)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html#onScaleChanged-float-int-">SubsamplingScaleImageView.OnStateChangedListener</a></code></span></div>
+<div class="block">The scale has changed. Use with <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getMaxScale--"><code>SubsamplingScaleImageView.getMaxScale()</code></a> and <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getMinScale--"><code>SubsamplingScaleImageView.getMinScale()</code></a> to determine
+ whether the image is fully zoomed in or out.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html#onScaleChanged-float-int-">onScaleChanged</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnStateChangedListener</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>newScale</code> - The new scale.</dd>
+<dd><code>origin</code> - Where the event originated from - one of <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_ANIM"><code>SubsamplingScaleImageView.ORIGIN_ANIM</code></a>, <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_TOUCH"><code>SubsamplingScaleImageView.ORIGIN_TOUCH</code></a>.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" target="_top">Frames</a></li>
+<li><a href="SubsamplingScaleImageView.DefaultOnStateChangedListener.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html
new file mode 100644
index 0000000..5e7ede3
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html
@@ -0,0 +1,265 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>SubsamplingScaleImageView.OnAnimationEventListener (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SubsamplingScaleImageView.OnAnimationEventListener (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6,"i1":6,"i2":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" target="_top">Frames</a></li>
+<li><a href="SubsamplingScaleImageView.OnAnimationEventListener.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview</div>
+<h2 title="Interface SubsamplingScaleImageView.OnAnimationEventListener" class="title">Interface SubsamplingScaleImageView.OnAnimationEventListener</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Known Implementing Classes:</dt>
+<dd><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnAnimationEventListener</a></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static interface <span class="typeNameLabel">SubsamplingScaleImageView.OnAnimationEventListener</span></pre>
+<div class="block">An event listener for animations, allows events to be triggered when an animation completes,
+ is aborted by another animation starting, or is aborted by a touch event. Note that none of
+ these events are triggered if the activity is paused, the image is swapped, or in other cases
+ where the view's internal state gets wiped or draw events stop.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html#onComplete--">onComplete</a></span>()</code>
+<div class="block">The animation has completed, having reached its endpoint.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html#onInterruptedByNewAnim--">onInterruptedByNewAnim</a></span>()</code>
+<div class="block">The animation has been aborted before reaching its endpoint because a new animation has been started.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html#onInterruptedByUser--">onInterruptedByUser</a></span>()</code>
+<div class="block">The animation has been aborted before reaching its endpoint because the user touched the screen.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="onComplete--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onComplete</h4>
+<pre>void&nbsp;onComplete()</pre>
+<div class="block">The animation has completed, having reached its endpoint.</div>
+</li>
+</ul>
+<a name="onInterruptedByUser--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onInterruptedByUser</h4>
+<pre>void&nbsp;onInterruptedByUser()</pre>
+<div class="block">The animation has been aborted before reaching its endpoint because the user touched the screen.</div>
+</li>
+</ul>
+<a name="onInterruptedByNewAnim--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>onInterruptedByNewAnim</h4>
+<pre>void&nbsp;onInterruptedByNewAnim()</pre>
+<div class="block">The animation has been aborted before reaching its endpoint because a new animation has been started.</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" target="_top">Frames</a></li>
+<li><a href="SubsamplingScaleImageView.OnAnimationEventListener.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html
new file mode 100644
index 0000000..dba187f
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html
@@ -0,0 +1,340 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>SubsamplingScaleImageView.OnImageEventListener (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SubsamplingScaleImageView.OnImageEventListener (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" target="_top">Frames</a></li>
+<li><a href="SubsamplingScaleImageView.OnImageEventListener.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview</div>
+<h2 title="Interface SubsamplingScaleImageView.OnImageEventListener" class="title">Interface SubsamplingScaleImageView.OnImageEventListener</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Known Implementing Classes:</dt>
+<dd><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnImageEventListener</a></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static interface <span class="typeNameLabel">SubsamplingScaleImageView.OnImageEventListener</span></pre>
+<div class="block">An event listener, allowing subclasses and activities to be notified of significant events.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onImageLoaded--">onImageLoaded</a></span>()</code>
+<div class="block">Called when the full size image is ready.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onImageLoadError-java.lang.Exception-">onImageLoadError</a></span>(<a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)</code>
+<div class="block">Indicates an error initiliasing the decoder when using a tiling, or when loading the full
+ size bitmap when tiling is disabled.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onPreviewLoadError-java.lang.Exception-">onPreviewLoadError</a></span>(<a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)</code>
+<div class="block">Called when a preview image could not be loaded.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onPreviewReleased--">onPreviewReleased</a></span>()</code>
+<div class="block">Called when a bitmap set using ImageSource.cachedBitmap is no longer being used by the View.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onReady--">onReady</a></span>()</code>
+<div class="block">Called when the dimensions of the image and view are known, and either a preview image,
+ the full size image, or base layer tiles are loaded.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onTileLoadError-java.lang.Exception-">onTileLoadError</a></span>(<a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)</code>
+<div class="block">Called when an image tile could not be loaded.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="onReady--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onReady</h4>
+<pre>void&nbsp;onReady()</pre>
+<div class="block">Called when the dimensions of the image and view are known, and either a preview image,
+ the full size image, or base layer tiles are loaded. This indicates the scale and translate
+ are known and the next draw will display an image. This event can be used to hide a loading
+ graphic, or inform a subclass that it is safe to draw overlays.</div>
+</li>
+</ul>
+<a name="onImageLoaded--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onImageLoaded</h4>
+<pre>void&nbsp;onImageLoaded()</pre>
+<div class="block">Called when the full size image is ready. When using tiling, this means the lowest resolution
+ base layer of tiles are loaded, and when tiling is disabled, the image bitmap is loaded.
+ This event could be used as a trigger to enable gestures if you wanted interaction disabled
+ while only a preview is displayed, otherwise for most cases <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onReady--"><code>onReady()</code></a> is the best
+ event to listen to.</div>
+</li>
+</ul>
+<a name="onPreviewLoadError-java.lang.Exception-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onPreviewLoadError</h4>
+<pre>void&nbsp;onPreviewLoadError(<a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)</pre>
+<div class="block">Called when a preview image could not be loaded. This method cannot be relied upon; certain
+ encoding types of supported image formats can result in corrupt or blank images being loaded
+ and displayed with no detectable error. The view will continue to load the full size image.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>e</code> - The exception thrown. This error is logged by the view.</dd>
+</dl>
+</li>
+</ul>
+<a name="onImageLoadError-java.lang.Exception-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onImageLoadError</h4>
+<pre>void&nbsp;onImageLoadError(<a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)</pre>
+<div class="block">Indicates an error initiliasing the decoder when using a tiling, or when loading the full
+ size bitmap when tiling is disabled. This method cannot be relied upon; certain encoding
+ types of supported image formats can result in corrupt or blank images being loaded and
+ displayed with no detectable error.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>e</code> - The exception thrown. This error is also logged by the view.</dd>
+</dl>
+</li>
+</ul>
+<a name="onTileLoadError-java.lang.Exception-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onTileLoadError</h4>
+<pre>void&nbsp;onTileLoadError(<a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)</pre>
+<div class="block">Called when an image tile could not be loaded. This method cannot be relied upon; certain
+ encoding types of supported image formats can result in corrupt or blank images being loaded
+ and displayed with no detectable error. Most cases where an unsupported file is used will
+ result in an error caught by <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onImageLoadError-java.lang.Exception-"><code>onImageLoadError(Exception)</code></a>.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>e</code> - The exception thrown. This error is logged by the view.</dd>
+</dl>
+</li>
+</ul>
+<a name="onPreviewReleased--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>onPreviewReleased</h4>
+<pre>void&nbsp;onPreviewReleased()</pre>
+<div class="block">Called when a bitmap set using ImageSource.cachedBitmap is no longer being used by the View.
+ This is useful if you wish to manage the bitmap after the preview is shown</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" target="_top">Frames</a></li>
+<li><a href="SubsamplingScaleImageView.OnImageEventListener.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html
new file mode 100644
index 0000000..65e9f10
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html
@@ -0,0 +1,264 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>SubsamplingScaleImageView.OnStateChangedListener (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SubsamplingScaleImageView.OnStateChangedListener (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6,"i1":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li>Next&nbsp;Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" target="_top">Frames</a></li>
+<li><a href="SubsamplingScaleImageView.OnStateChangedListener.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview</div>
+<h2 title="Interface SubsamplingScaleImageView.OnStateChangedListener" class="title">Interface SubsamplingScaleImageView.OnStateChangedListener</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Known Implementing Classes:</dt>
+<dd><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnStateChangedListener</a></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static interface <span class="typeNameLabel">SubsamplingScaleImageView.OnStateChangedListener</span></pre>
+<div class="block">An event listener, allowing activities to be notified of pan and zoom events. Initialisation
+ and calls made by your code do not trigger events; touch events and animations do. Methods in
+ this listener will be called on the UI thread and may be called very frequently - your
+ implementation should return quickly.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html#onCenterChanged-android.graphics.PointF-int-">onCenterChanged</a></span>(<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;newCenter,
+               int&nbsp;origin)</code>
+<div class="block">The source center has been changed.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html#onScaleChanged-float-int-">onScaleChanged</a></span>(float&nbsp;newScale,
+              int&nbsp;origin)</code>
+<div class="block">The scale has changed.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="onScaleChanged-float-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onScaleChanged</h4>
+<pre>void&nbsp;onScaleChanged(float&nbsp;newScale,
+                    int&nbsp;origin)</pre>
+<div class="block">The scale has changed. Use with <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getMaxScale--"><code>SubsamplingScaleImageView.getMaxScale()</code></a> and <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getMinScale--"><code>SubsamplingScaleImageView.getMinScale()</code></a> to determine
+ whether the image is fully zoomed in or out.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>newScale</code> - The new scale.</dd>
+<dd><code>origin</code> - Where the event originated from - one of <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_ANIM"><code>SubsamplingScaleImageView.ORIGIN_ANIM</code></a>, <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_TOUCH"><code>SubsamplingScaleImageView.ORIGIN_TOUCH</code></a>.</dd>
+</dl>
+</li>
+</ul>
+<a name="onCenterChanged-android.graphics.PointF-int-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>onCenterChanged</h4>
+<pre>void&nbsp;onCenterChanged(<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;newCenter,
+                     int&nbsp;origin)</pre>
+<div class="block">The source center has been changed. This can be a result of panning or zooming.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>newCenter</code> - The new source center point.</dd>
+<dd><code>origin</code> - Where the event originated from - one of <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_ANIM"><code>SubsamplingScaleImageView.ORIGIN_ANIM</code></a>, <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_TOUCH"><code>SubsamplingScaleImageView.ORIGIN_TOUCH</code></a>.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li>Next&nbsp;Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" target="_top">Frames</a></li>
+<li><a href="SubsamplingScaleImageView.OnStateChangedListener.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html
new file mode 100644
index 0000000..0a1ba3e
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html
@@ -0,0 +1,2438 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>SubsamplingScaleImageView (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SubsamplingScaleImageView (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":9,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":9,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" target="_top">Frames</a></li>
+<li><a href="SubsamplingScaleImageView.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview</div>
+<h2 title="Class SubsamplingScaleImageView" class="title">Class SubsamplingScaleImageView</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="https://developer.android.com/reference/android/view/View.html?is-external=true" title="class or interface in android.view">android.view.View</a></li>
+<li>
+<ul class="inheritance">
+<li>com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="https://developer.android.com/reference/android/graphics/drawable/Drawable.Callback.html?is-external=true" title="class or interface in android.graphics.drawable">Drawable.Callback</a>, <a href="https://developer.android.com/reference/android/view/accessibility/AccessibilityEventSource.html?is-external=true" title="class or interface in android.view.accessibility">AccessibilityEventSource</a>, <a href="https://developer.android.com/reference/android/view/KeyEvent.Callback.html?is-external=true" title="class or interface in android.view">KeyEvent.Callback</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public class <span class="typeNameLabel">SubsamplingScaleImageView</span>
+extends <a href="https://developer.android.com/reference/android/view/View.html?is-external=true" title="class or interface in android.view">View</a></pre>
+<div class="block"><p>
+ Displays an image subsampled as necessary to avoid loading too much image data into memory. After zooming in,
+ a set of image tiles subsampled at higher resolution are loaded and displayed over the base layer. During pan and
+ zoom, tiles off screen or higher/lower resolution than required are discarded from memory.
+ </p><p>
+ Tiles are no larger than the max supported bitmap size, so with large images tiling may be used even when zoomed out.
+ </p><p>
+ v prefixes - coordinates, translations and distances measured in screen (view) pixels
+ <br>
+ s prefixes - coordinates, translations and distances measured in rotated and cropped source image pixels (scaled)
+ <br>
+ f prefixes - coordinates, translations and distances measured in original unrotated, uncropped source file pixels
+ </p><p>
+ <a href="https://github.com/davemorrissey/subsampling-scale-image-view">View project on GitHub</a>
+ </p></div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a></span></code>
+<div class="block">Builder class used to set additional options for a scale animation.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnAnimationEventListener</a></span></code>
+<div class="block">Default implementation of <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.OnAnimationEventListener</code></a> for extension.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnImageEventListener</a></span></code>
+<div class="block">Default implementation of <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.OnImageEventListener</code></a> for extension.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnStateChangedListener</a></span></code>
+<div class="block">Default implementation of <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.OnStateChangedListener</code></a>.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static interface&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnAnimationEventListener</a></span></code>
+<div class="block">An event listener for animations, allows events to be triggered when an animation completes,
+ is aborted by another animation starting, or is aborted by a touch event.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static interface&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a></span></code>
+<div class="block">An event listener, allowing subclasses and activities to be notified of significant events.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static interface&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnStateChangedListener</a></span></code>
+<div class="block">An event listener, allowing activities to be notified of pan and zoom events.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.android.view.View">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;android.view.<a href="https://developer.android.com/reference/android/view/View.html?is-external=true" title="class or interface in android.view">View</a></h3>
+<code><a href="https://developer.android.com/reference/android/view/View.AccessibilityDelegate.html?is-external=true" title="class or interface in android.view">View.AccessibilityDelegate</a>, <a href="https://developer.android.com/reference/android/view/View.BaseSavedState.html?is-external=true" title="class or interface in android.view">View.BaseSavedState</a>, <a href="https://developer.android.com/reference/android/view/View.DragShadowBuilder.html?is-external=true" title="class or interface in android.view">View.DragShadowBuilder</a>, <a href="https://developer.android.com/reference/android/view/View.MeasureSpec.html?is-external=true" title="class or interface in android.view">View.MeasureSpec</a>, <a href="https://developer.android.com/reference/android/view/View.OnApplyWindowInsetsListener.html?is-external=true" title="class or interface in android.view">View.OnApplyWindowInsetsListener</a>, <a href="https://developer.android.com/reference/android/view/View.OnAttachStateChangeListener.html?is-external=true" title="class or interface in android.view">View.OnAttachStateChangeListener</a>, <a href="https://developer.android.com/reference/android/view/View.OnCapturedPointerListener.html?is-external=true" title="class or interface in android.view">View.OnCapturedPointerListener</a>, <a href="https://developer.android.com/reference/android/view/View.OnClickListener.html?is-external=true" title="class or interface in android.view">View.OnClickListener</a>, <a href="https://developer.android.com/reference/android/view/View.OnContextClickListener.html?is-external=true" title="class or interface in android.view">View.OnContextClickListener</a>, <a href="https://developer.android.com/reference/android/view/View.OnCreateContextMenuListener.html?is-external=true" title="class or interface in android.view">View.OnCreateContextMenuListener</a>, <a href="https://developer.android.com/reference/android/view/View.OnDragListener.html?is-external=true" title="class or interface in android.view">View.OnDragListener</a>, <a href="https://developer.android.com/reference/android/view/View.OnFocusChangeListener.html?is-external=true" title="class or interface in android.view">View.OnFocusChangeListener</a>, <a href="https://developer.android.com/reference/android/view/View.OnGenericMotionListener.html?is-external=true" title="class or interface in android.view">View.OnGenericMotionListener</a>, <a href="https://developer.android.com/reference/android/view/View.OnHoverListener.html?is-external=true" title="class or interface in android.view">View.OnHoverListener</a>, <a href="https://developer.android.com/reference/android/view/View.OnKeyListener.html?is-external=true" title="class or interface in android.view">View.OnKeyListener</a>, <a href="https://developer.android.com/reference/android/view/View.OnLayoutChangeListener.html?is-external=true" title="class or interface in android.view">View.OnLayoutChangeListener</a>, <a href="https://developer.android.com/reference/android/view/View.OnLongClickListener.html?is-external=true" title="class or interface in android.view">View.OnLongClickListener</a>, <a href="https://developer.android.com/reference/android/view/View.OnScrollChangeListener.html?is-external=true" title="class or interface in android.view">View.OnScrollChangeListener</a>, <a href="https://developer.android.com/reference/android/view/View.OnSystemUiVisibilityChangeListener.html?is-external=true" title="class or interface in android.view">View.OnSystemUiVisibilityChangeListener</a>, <a href="https://developer.android.com/reference/android/view/View.OnTouchListener.html?is-external=true" title="class or interface in android.view">View.OnTouchListener</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#EASE_IN_OUT_QUAD">EASE_IN_OUT_QUAD</a></span></code>
+<div class="block">Quadratic ease in and out.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#EASE_OUT_QUAD">EASE_OUT_QUAD</a></span></code>
+<div class="block">Quadratic ease out.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIENTATION_0">ORIENTATION_0</a></span></code>
+<div class="block">Display the image file in its native orientation.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIENTATION_180">ORIENTATION_180</a></span></code>
+<div class="block">Rotate the image 180 degrees.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIENTATION_270">ORIENTATION_270</a></span></code>
+<div class="block">Rotate the image 270 degrees clockwise.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIENTATION_90">ORIENTATION_90</a></span></code>
+<div class="block">Rotate the image 90 degrees clockwise.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIENTATION_USE_EXIF">ORIENTATION_USE_EXIF</a></span></code>
+<div class="block">Attempt to use EXIF information on the image to rotate it.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_ANIM">ORIGIN_ANIM</a></span></code>
+<div class="block">State change originated from animation.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_DOUBLE_TAP_ZOOM">ORIGIN_DOUBLE_TAP_ZOOM</a></span></code>
+<div class="block">State change originated from a double tap zoom anim.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_FLING">ORIGIN_FLING</a></span></code>
+<div class="block">State change originated from a fling momentum anim.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_TOUCH">ORIGIN_TOUCH</a></span></code>
+<div class="block">State change originated from touch gesture.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#PAN_LIMIT_CENTER">PAN_LIMIT_CENTER</a></span></code>
+<div class="block">Allows the image to be panned until a corner reaches the center of the screen but no further.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#PAN_LIMIT_INSIDE">PAN_LIMIT_INSIDE</a></span></code>
+<div class="block">Don't allow the image to be panned off screen.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#PAN_LIMIT_OUTSIDE">PAN_LIMIT_OUTSIDE</a></span></code>
+<div class="block">Allows the image to be panned until it is just off screen, but no further.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SCALE_TYPE_CENTER_CROP">SCALE_TYPE_CENTER_CROP</a></span></code>
+<div class="block">Scale the image uniformly so that both dimensions of the image will be equal to or larger than the corresponding dimension of the view.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SCALE_TYPE_CENTER_INSIDE">SCALE_TYPE_CENTER_INSIDE</a></span></code>
+<div class="block">Scale the image so that both dimensions of the image will be equal to or less than the corresponding dimension of the view.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SCALE_TYPE_CUSTOM">SCALE_TYPE_CUSTOM</a></span></code>
+<div class="block">Scale the image so that both dimensions of the image will be equal to or less than the maxScale and equal to or larger than minScale.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SCALE_TYPE_START">SCALE_TYPE_START</a></span></code>
+<div class="block">Scale the image so that both dimensions of the image will be equal to or larger than the corresponding dimension of the view.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#TILE_SIZE_AUTO">TILE_SIZE_AUTO</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ZOOM_FOCUS_CENTER">ZOOM_FOCUS_CENTER</a></span></code>
+<div class="block">During zoom animation, move the point of the image that was tapped to the center of the screen.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ZOOM_FOCUS_CENTER_IMMEDIATE">ZOOM_FOCUS_CENTER_IMMEDIATE</a></span></code>
+<div class="block">Zoom in to and center the tapped point immediately without animating.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ZOOM_FOCUS_FIXED">ZOOM_FOCUS_FIXED</a></span></code>
+<div class="block">During zoom animation, keep the point of the image that was tapped in the same place, and scale the image around it.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.android.view.View">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;android.view.<a href="https://developer.android.com/reference/android/view/View.html?is-external=true" title="class or interface in android.view">View</a></h3>
+<code><a href="https://developer.android.com/reference/android/view/View.html?is-external=true#ACCESSIBILITY_LIVE_REGION_ASSERTIVE" title="class or interface in android.view">ACCESSIBILITY_LIVE_REGION_ASSERTIVE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#ACCESSIBILITY_LIVE_REGION_NONE" title="class or interface in android.view">ACCESSIBILITY_LIVE_REGION_NONE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#ACCESSIBILITY_LIVE_REGION_POLITE" title="class or interface in android.view">ACCESSIBILITY_LIVE_REGION_POLITE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#ALPHA" title="class or interface in android.view">ALPHA</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS" title="class or interface in android.view">AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE" title="class or interface in android.view">AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY" title="class or interface in android.view">AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH" title="class or interface in android.view">AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR" title="class or interface in android.view">AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_HINT_CREDIT_CARD_NUMBER" title="class or interface in android.view">AUTOFILL_HINT_CREDIT_CARD_NUMBER</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE" title="class or interface in android.view">AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_HINT_EMAIL_ADDRESS" title="class or interface in android.view">AUTOFILL_HINT_EMAIL_ADDRESS</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_HINT_NAME" title="class or interface in android.view">AUTOFILL_HINT_NAME</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_HINT_PASSWORD" title="class or interface in android.view">AUTOFILL_HINT_PASSWORD</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_HINT_PHONE" title="class or interface in android.view">AUTOFILL_HINT_PHONE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_HINT_POSTAL_ADDRESS" title="class or interface in android.view">AUTOFILL_HINT_POSTAL_ADDRESS</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_HINT_POSTAL_CODE" title="class or interface in android.view">AUTOFILL_HINT_POSTAL_CODE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_HINT_USERNAME" title="class or interface in android.view">AUTOFILL_HINT_USERNAME</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_TYPE_DATE" title="class or interface in android.view">AUTOFILL_TYPE_DATE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_TYPE_LIST" title="class or interface in android.view">AUTOFILL_TYPE_LIST</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_TYPE_NONE" title="class or interface in android.view">AUTOFILL_TYPE_NONE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_TYPE_TEXT" title="class or interface in android.view">AUTOFILL_TYPE_TEXT</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#AUTOFILL_TYPE_TOGGLE" title="class or interface in android.view">AUTOFILL_TYPE_TOGGLE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#DRAG_FLAG_GLOBAL" title="class or interface in android.view">DRAG_FLAG_GLOBAL</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION" title="class or interface in android.view">DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION" title="class or interface in android.view">DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#DRAG_FLAG_GLOBAL_URI_READ" title="class or interface in android.view">DRAG_FLAG_GLOBAL_URI_READ</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#DRAG_FLAG_GLOBAL_URI_WRITE" title="class or interface in android.view">DRAG_FLAG_GLOBAL_URI_WRITE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#DRAG_FLAG_OPAQUE" title="class or interface in android.view">DRAG_FLAG_OPAQUE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#DRAWING_CACHE_QUALITY_AUTO" title="class or interface in android.view">DRAWING_CACHE_QUALITY_AUTO</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#DRAWING_CACHE_QUALITY_HIGH" title="class or interface in android.view">DRAWING_CACHE_QUALITY_HIGH</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#DRAWING_CACHE_QUALITY_LOW" title="class or interface in android.view">DRAWING_CACHE_QUALITY_LOW</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#EMPTY_STATE_SET" title="class or interface in android.view">EMPTY_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#ENABLED_FOCUSED_SELECTED_STATE_SET" title="class or interface in android.view">ENABLED_FOCUSED_SELECTED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET" title="class or interface in android.view">ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#ENABLED_FOCUSED_STATE_SET" title="class or interface in android.view">ENABLED_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET" title="class or interface in android.view">ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#ENABLED_SELECTED_STATE_SET" title="class or interface in android.view">ENABLED_SELECTED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET" title="class or interface in android.view">ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#ENABLED_STATE_SET" title="class or interface in android.view">ENABLED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#ENABLED_WINDOW_FOCUSED_STATE_SET" title="class or interface in android.view">ENABLED_WINDOW_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#FIND_VIEWS_WITH_CONTENT_DESCRIPTION" title="class or interface in android.view">FIND_VIEWS_WITH_CONTENT_DESCRIPTION</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#FIND_VIEWS_WITH_TEXT" title="class or interface in android.view">FIND_VIEWS_WITH_TEXT</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#FOCUS_BACKWARD" title="class or interface in android.view">FOCUS_BACKWARD</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#FOCUS_DOWN" title="class or interface in android.view">FOCUS_DOWN</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#FOCUS_FORWARD" title="class or interface in android.view">FOCUS_FORWARD</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#FOCUS_LEFT" title="class or interface in android.view">FOCUS_LEFT</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#FOCUS_RIGHT" title="class or interface in android.view">FOCUS_RIGHT</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#FOCUS_UP" title="class or interface in android.view">FOCUS_UP</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#FOCUSABLE" title="class or interface in android.view">FOCUSABLE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#FOCUSABLE_AUTO" title="class or interface in android.view">FOCUSABLE_AUTO</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#FOCUSABLES_ALL" title="class or interface in android.view">FOCUSABLES_ALL</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#FOCUSABLES_TOUCH_MODE" title="class or interface in android.view">FOCUSABLES_TOUCH_MODE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#FOCUSED_SELECTED_STATE_SET" title="class or interface in android.view">FOCUSED_SELECTED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET" title="class or interface in android.view">FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#FOCUSED_STATE_SET" title="class or interface in android.view">FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#FOCUSED_WINDOW_FOCUSED_STATE_SET" title="class or interface in android.view">FOCUSED_WINDOW_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#GONE" title="class or interface in android.view">GONE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#HAPTIC_FEEDBACK_ENABLED" title="class or interface in android.view">HAPTIC_FEEDBACK_ENABLED</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#IMPORTANT_FOR_ACCESSIBILITY_AUTO" title="class or interface in android.view">IMPORTANT_FOR_ACCESSIBILITY_AUTO</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#IMPORTANT_FOR_ACCESSIBILITY_NO" title="class or interface in android.view">IMPORTANT_FOR_ACCESSIBILITY_NO</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS" title="class or interface in android.view">IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#IMPORTANT_FOR_ACCESSIBILITY_YES" title="class or interface in android.view">IMPORTANT_FOR_ACCESSIBILITY_YES</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#IMPORTANT_FOR_AUTOFILL_AUTO" title="class or interface in android.view">IMPORTANT_FOR_AUTOFILL_AUTO</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#IMPORTANT_FOR_AUTOFILL_NO" title="class or interface in android.view">IMPORTANT_FOR_AUTOFILL_NO</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS" title="class or interface in android.view">IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#IMPORTANT_FOR_AUTOFILL_YES" title="class or interface in android.view">IMPORTANT_FOR_AUTOFILL_YES</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS" title="class or interface in android.view">IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#INVISIBLE" title="class or interface in android.view">INVISIBLE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#KEEP_SCREEN_ON" title="class or interface in android.view">KEEP_SCREEN_ON</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#LAYER_TYPE_HARDWARE" title="class or interface in android.view">LAYER_TYPE_HARDWARE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#LAYER_TYPE_NONE" title="class or interface in android.view">LAYER_TYPE_NONE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#LAYER_TYPE_SOFTWARE" title="class or interface in android.view">LAYER_TYPE_SOFTWARE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#LAYOUT_DIRECTION_INHERIT" title="class or interface in android.view">LAYOUT_DIRECTION_INHERIT</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#LAYOUT_DIRECTION_LOCALE" title="class or interface in android.view">LAYOUT_DIRECTION_LOCALE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#LAYOUT_DIRECTION_LTR" title="class or interface in android.view">LAYOUT_DIRECTION_LTR</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#LAYOUT_DIRECTION_RTL" title="class or interface in android.view">LAYOUT_DIRECTION_RTL</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#MEASURED_HEIGHT_STATE_SHIFT" title="class or interface in android.view">MEASURED_HEIGHT_STATE_SHIFT</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#MEASURED_SIZE_MASK" title="class or interface in android.view">MEASURED_SIZE_MASK</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#MEASURED_STATE_MASK" title="class or interface in android.view">MEASURED_STATE_MASK</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#MEASURED_STATE_TOO_SMALL" title="class or interface in android.view">MEASURED_STATE_TOO_SMALL</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#NO_ID" title="class or interface in android.view">NO_ID</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#NOT_FOCUSABLE" title="class or interface in android.view">NOT_FOCUSABLE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#OVER_SCROLL_ALWAYS" title="class or interface in android.view">OVER_SCROLL_ALWAYS</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#OVER_SCROLL_IF_CONTENT_SCROLLS" title="class or interface in android.view">OVER_SCROLL_IF_CONTENT_SCROLLS</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#OVER_SCROLL_NEVER" title="class or interface in android.view">OVER_SCROLL_NEVER</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET" title="class or interface in android.view">PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET" title="class or interface in android.view">PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#PRESSED_ENABLED_FOCUSED_STATE_SET" title="class or interface in android.view">PRESSED_ENABLED_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET" title="class or interface in android.view">PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#PRESSED_ENABLED_SELECTED_STATE_SET" title="class or interface in android.view">PRESSED_ENABLED_SELECTED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET" title="class or interface in android.view">PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#PRESSED_ENABLED_STATE_SET" title="class or interface in android.view">PRESSED_ENABLED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET" title="class or interface in android.view">PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#PRESSED_FOCUSED_SELECTED_STATE_SET" title="class or interface in android.view">PRESSED_FOCUSED_SELECTED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET" title="class or interface in android.view">PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#PRESSED_FOCUSED_STATE_SET" title="class or interface in android.view">PRESSED_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET" title="class or interface in android.view">PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#PRESSED_SELECTED_STATE_SET" title="class or interface in android.view">PRESSED_SELECTED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET" title="class or interface in android.view">PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#PRESSED_STATE_SET" title="class or interface in android.view">PRESSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#PRESSED_WINDOW_FOCUSED_STATE_SET" title="class or interface in android.view">PRESSED_WINDOW_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#ROTATION" title="class or interface in android.view">ROTATION</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#ROTATION_X" title="class or interface in android.view">ROTATION_X</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#ROTATION_Y" title="class or interface in android.view">ROTATION_Y</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCALE_X" title="class or interface in android.view">SCALE_X</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCALE_Y" title="class or interface in android.view">SCALE_Y</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCREEN_STATE_OFF" title="class or interface in android.view">SCREEN_STATE_OFF</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCREEN_STATE_ON" title="class or interface in android.view">SCREEN_STATE_ON</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCROLL_AXIS_HORIZONTAL" title="class or interface in android.view">SCROLL_AXIS_HORIZONTAL</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCROLL_AXIS_NONE" title="class or interface in android.view">SCROLL_AXIS_NONE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCROLL_AXIS_VERTICAL" title="class or interface in android.view">SCROLL_AXIS_VERTICAL</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCROLL_INDICATOR_BOTTOM" title="class or interface in android.view">SCROLL_INDICATOR_BOTTOM</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCROLL_INDICATOR_END" title="class or interface in android.view">SCROLL_INDICATOR_END</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCROLL_INDICATOR_LEFT" title="class or interface in android.view">SCROLL_INDICATOR_LEFT</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCROLL_INDICATOR_RIGHT" title="class or interface in android.view">SCROLL_INDICATOR_RIGHT</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCROLL_INDICATOR_START" title="class or interface in android.view">SCROLL_INDICATOR_START</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCROLL_INDICATOR_TOP" title="class or interface in android.view">SCROLL_INDICATOR_TOP</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCROLLBAR_POSITION_DEFAULT" title="class or interface in android.view">SCROLLBAR_POSITION_DEFAULT</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCROLLBAR_POSITION_LEFT" title="class or interface in android.view">SCROLLBAR_POSITION_LEFT</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCROLLBAR_POSITION_RIGHT" title="class or interface in android.view">SCROLLBAR_POSITION_RIGHT</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCROLLBARS_INSIDE_INSET" title="class or interface in android.view">SCROLLBARS_INSIDE_INSET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCROLLBARS_INSIDE_OVERLAY" title="class or interface in android.view">SCROLLBARS_INSIDE_OVERLAY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCROLLBARS_OUTSIDE_INSET" title="class or interface in android.view">SCROLLBARS_OUTSIDE_INSET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SCROLLBARS_OUTSIDE_OVERLAY" title="class or interface in android.view">SCROLLBARS_OUTSIDE_OVERLAY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SELECTED_STATE_SET" title="class or interface in android.view">SELECTED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SELECTED_WINDOW_FOCUSED_STATE_SET" title="class or interface in android.view">SELECTED_WINDOW_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SOUND_EFFECTS_ENABLED" title="class or interface in android.view">SOUND_EFFECTS_ENABLED</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#STATUS_BAR_HIDDEN" title="class or interface in android.view">STATUS_BAR_HIDDEN</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#STATUS_BAR_VISIBLE" title="class or interface in android.view">STATUS_BAR_VISIBLE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SYSTEM_UI_FLAG_FULLSCREEN" title="class or interface in android.view">SYSTEM_UI_FLAG_FULLSCREEN</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SYSTEM_UI_FLAG_HIDE_NAVIGATION" title="class or interface in android.view">SYSTEM_UI_FLAG_HIDE_NAVIGATION</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SYSTEM_UI_FLAG_IMMERSIVE" title="class or interface in android.view">SYSTEM_UI_FLAG_IMMERSIVE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SYSTEM_UI_FLAG_IMMERSIVE_STICKY" title="class or interface in android.view">SYSTEM_UI_FLAG_IMMERSIVE_STICKY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN" title="class or interface in android.view">SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION" title="class or interface in android.view">SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SYSTEM_UI_FLAG_LAYOUT_STABLE" title="class or interface in android.view">SYSTEM_UI_FLAG_LAYOUT_STABLE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR" title="class or interface in android.view">SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SYSTEM_UI_FLAG_LIGHT_STATUS_BAR" title="class or interface in android.view">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SYSTEM_UI_FLAG_LOW_PROFILE" title="class or interface in android.view">SYSTEM_UI_FLAG_LOW_PROFILE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SYSTEM_UI_FLAG_VISIBLE" title="class or interface in android.view">SYSTEM_UI_FLAG_VISIBLE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#SYSTEM_UI_LAYOUT_FLAGS" title="class or interface in android.view">SYSTEM_UI_LAYOUT_FLAGS</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TEXT_ALIGNMENT_CENTER" title="class or interface in android.view">TEXT_ALIGNMENT_CENTER</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TEXT_ALIGNMENT_GRAVITY" title="class or interface in android.view">TEXT_ALIGNMENT_GRAVITY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TEXT_ALIGNMENT_INHERIT" title="class or interface in android.view">TEXT_ALIGNMENT_INHERIT</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TEXT_ALIGNMENT_TEXT_END" title="class or interface in android.view">TEXT_ALIGNMENT_TEXT_END</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TEXT_ALIGNMENT_TEXT_START" title="class or interface in android.view">TEXT_ALIGNMENT_TEXT_START</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TEXT_ALIGNMENT_VIEW_END" title="class or interface in android.view">TEXT_ALIGNMENT_VIEW_END</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TEXT_ALIGNMENT_VIEW_START" title="class or interface in android.view">TEXT_ALIGNMENT_VIEW_START</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TEXT_DIRECTION_ANY_RTL" title="class or interface in android.view">TEXT_DIRECTION_ANY_RTL</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TEXT_DIRECTION_FIRST_STRONG" title="class or interface in android.view">TEXT_DIRECTION_FIRST_STRONG</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TEXT_DIRECTION_FIRST_STRONG_LTR" title="class or interface in android.view">TEXT_DIRECTION_FIRST_STRONG_LTR</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TEXT_DIRECTION_FIRST_STRONG_RTL" title="class or interface in android.view">TEXT_DIRECTION_FIRST_STRONG_RTL</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TEXT_DIRECTION_INHERIT" title="class or interface in android.view">TEXT_DIRECTION_INHERIT</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TEXT_DIRECTION_LOCALE" title="class or interface in android.view">TEXT_DIRECTION_LOCALE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TEXT_DIRECTION_LTR" title="class or interface in android.view">TEXT_DIRECTION_LTR</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TEXT_DIRECTION_RTL" title="class or interface in android.view">TEXT_DIRECTION_RTL</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TRANSLATION_X" title="class or interface in android.view">TRANSLATION_X</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TRANSLATION_Y" title="class or interface in android.view">TRANSLATION_Y</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#TRANSLATION_Z" title="class or interface in android.view">TRANSLATION_Z</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#VIEW_LOG_TAG" title="class or interface in android.view">VIEW_LOG_TAG</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#VISIBLE" title="class or interface in android.view">VISIBLE</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#WINDOW_FOCUSED_STATE_SET" title="class or interface in android.view">WINDOW_FOCUSED_STATE_SET</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#X" title="class or interface in android.view">X</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#Y" title="class or interface in android.view">Y</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#Z" title="class or interface in android.view">Z</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SubsamplingScaleImageView-android.content.Context-">SubsamplingScaleImageView</a></span>(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SubsamplingScaleImageView-android.content.Context-android.util.AttributeSet-">SubsamplingScaleImageView</a></span>(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
+                         <a href="https://developer.android.com/reference/android/util/AttributeSet.html?is-external=true" title="class or interface in android.util">AttributeSet</a>&nbsp;attr)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#animateCenter-android.graphics.PointF-">animateCenter</a></span>(<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sCenter)</code>
+<div class="block">Creates a panning animation builder, that when started will animate the image to place the given coordinates of
+ the image in the center of the screen.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#animateScale-float-">animateScale</a></span>(float&nbsp;scale)</code>
+<div class="block">Creates a scale animation builder, that when started will animate a zoom in or out.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#animateScaleAndCenter-float-android.graphics.PointF-">animateScaleAndCenter</a></span>(float&nbsp;scale,
+                     <a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sCenter)</code>
+<div class="block">Creates a scale animation builder, that when started will animate a zoom in or out.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getAppliedOrientation--">getAppliedOrientation</a></span>()</code>
+<div class="block">Returns the actual orientation of the image relative to the source file.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getCenter--">getCenter</a></span>()</code>
+<div class="block">Returns the source point at the center of the view.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>float</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getMaxScale--">getMaxScale</a></span>()</code>
+<div class="block">Returns the maximum allowed scale.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>float</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getMinScale--">getMinScale</a></span>()</code>
+<div class="block">Returns the minimum allowed scale.</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getOrientation--">getOrientation</a></span>()</code>
+<div class="block">Returns the orientation setting.</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getPanRemaining-android.graphics.RectF-">getPanRemaining</a></span>(<a href="https://developer.android.com/reference/android/graphics/RectF.html?is-external=true" title="class or interface in android.graphics">RectF</a>&nbsp;vTarget)</code>
+<div class="block">Calculate how much further the image can be panned in each direction.</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>static <a href="https://developer.android.com/reference/android/graphics/Bitmap.Config.html?is-external=true" title="class or interface in android.graphics">Bitmap.Config</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getPreferredBitmapConfig--">getPreferredBitmapConfig</a></span>()</code>
+<div class="block">Get the current preferred configuration for decoding bitmaps.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>float</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getScale--">getScale</a></span>()</code>
+<div class="block">Returns the current scale value.</div>
+</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getSHeight--">getSHeight</a></span>()</code>
+<div class="block">Get source height, ignoring orientation.</div>
+</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code><a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview">ImageViewState</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getState--">getState</a></span>()</code>
+<div class="block">Get the current state of the view (scale, center, orientation) for restoration after rotate.</div>
+</td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getSWidth--">getSWidth</a></span>()</code>
+<div class="block">Get source width, ignoring orientation.</div>
+</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#hasImage--">hasImage</a></span>()</code>
+<div class="block">Check if an image has been set.</div>
+</td>
+</tr>
+<tr id="i15" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#isImageLoaded--">isImageLoaded</a></span>()</code>
+<div class="block">Call to find whether the main image (base layer tiles where relevant) have been loaded.</div>
+</td>
+</tr>
+<tr id="i16" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#isPanEnabled--">isPanEnabled</a></span>()</code>
+<div class="block">Returns true if pan gesture detection is enabled.</div>
+</td>
+</tr>
+<tr id="i17" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#isQuickScaleEnabled--">isQuickScaleEnabled</a></span>()</code>
+<div class="block">Returns true if double tap &amp; swipe to zoom is enabled.</div>
+</td>
+</tr>
+<tr id="i18" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#isReady--">isReady</a></span>()</code>
+<div class="block">Call to find whether the view is initialised, has dimensions, and will display an image on
+ the next draw.</div>
+</td>
+</tr>
+<tr id="i19" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#isZoomEnabled--">isZoomEnabled</a></span>()</code>
+<div class="block">Returns true if zoom gesture detection is enabled.</div>
+</td>
+</tr>
+<tr id="i20" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#onDraw-android.graphics.Canvas-">onDraw</a></span>(<a href="https://developer.android.com/reference/android/graphics/Canvas.html?is-external=true" title="class or interface in android.graphics">Canvas</a>&nbsp;canvas)</code>
+<div class="block">Draw method should not be called until the view has dimensions so the first calls are used as triggers to calculate
+ the scaling and tiling required.</div>
+</td>
+</tr>
+<tr id="i21" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#onImageLoaded--">onImageLoaded</a></span>()</code>
+<div class="block">Called once when the full size image or its base layer tiles have been loaded.</div>
+</td>
+</tr>
+<tr id="i22" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#onMeasure-int-int-">onMeasure</a></span>(int&nbsp;widthMeasureSpec,
+         int&nbsp;heightMeasureSpec)</code>
+<div class="block">Measures the width and height of the view, preserving the aspect ratio of the image displayed if wrap_content is
+ used.</div>
+</td>
+</tr>
+<tr id="i23" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#onReady--">onReady</a></span>()</code>
+<div class="block">Called once when the view is initialised, has dimensions, and will display an image on the
+ next draw.</div>
+</td>
+</tr>
+<tr id="i24" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#onSizeChanged-int-int-int-int-">onSizeChanged</a></span>(int&nbsp;w,
+             int&nbsp;h,
+             int&nbsp;oldw,
+             int&nbsp;oldh)</code>
+<div class="block">On resize, preserve center and scale.</div>
+</td>
+</tr>
+<tr id="i25" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#onTouchEvent-android.view.MotionEvent-">onTouchEvent</a></span>(<a href="https://developer.android.com/reference/android/view/MotionEvent.html?is-external=true" title="class or interface in android.view">MotionEvent</a>&nbsp;event)</code>
+<div class="block">Handle touch events.</div>
+</td>
+</tr>
+<tr id="i26" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#recycle--">recycle</a></span>()</code>
+<div class="block">Releases all resources the view is using and resets the state, nulling any fields that use significant memory.</div>
+</td>
+</tr>
+<tr id="i27" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#resetScaleAndCenter--">resetScaleAndCenter</a></span>()</code>
+<div class="block">Fully zoom out and return the image to the middle of the screen.</div>
+</td>
+</tr>
+<tr id="i28" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setBitmapDecoderClass-java.lang.Class-">setBitmapDecoderClass</a></span>(<a href="https://developer.android.com/reference/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageDecoder</a>&gt;&nbsp;bitmapDecoderClass)</code>
+<div class="block">Swap the default bitmap decoder implementation for one of your own.</div>
+</td>
+</tr>
+<tr id="i29" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setBitmapDecoderFactory-com.davemorrissey.labs.subscaleview.decoder.DecoderFactory-">setBitmapDecoderFactory</a></span>(<a href="../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">DecoderFactory</a>&lt;? extends <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageDecoder</a>&gt;&nbsp;bitmapDecoderFactory)</code>
+<div class="block">Swap the default bitmap decoder implementation for one of your own.</div>
+</td>
+</tr>
+<tr id="i30" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setDebug-boolean-">setDebug</a></span>(boolean&nbsp;debug)</code>
+<div class="block">Enables visual debugging, showing tile boundaries and sizes.</div>
+</td>
+</tr>
+<tr id="i31" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setDoubleTapZoomDpi-int-">setDoubleTapZoomDpi</a></span>(int&nbsp;dpi)</code>
+<div class="block">A density aware alternative to <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setDoubleTapZoomScale-float-"><code>setDoubleTapZoomScale(float)</code></a>; this allows you to express the scale the
+ image will zoom in to when double tapped in terms of the image pixel density.</div>
+</td>
+</tr>
+<tr id="i32" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setDoubleTapZoomDuration-int-">setDoubleTapZoomDuration</a></span>(int&nbsp;durationMs)</code>
+<div class="block">Set the duration of the double tap zoom animation.</div>
+</td>
+</tr>
+<tr id="i33" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setDoubleTapZoomScale-float-">setDoubleTapZoomScale</a></span>(float&nbsp;doubleTapZoomScale)</code>
+<div class="block">Set the scale the image will zoom in to when double tapped.</div>
+</td>
+</tr>
+<tr id="i34" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setDoubleTapZoomStyle-int-">setDoubleTapZoomStyle</a></span>(int&nbsp;doubleTapZoomStyle)</code>
+<div class="block">Set the type of zoom animation to be used for double taps.</div>
+</td>
+</tr>
+<tr id="i35" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setEagerLoadingEnabled-boolean-">setEagerLoadingEnabled</a></span>(boolean&nbsp;eagerLoadingEnabled)</code>
+<div class="block">Enable or disable eager loading of tiles that appear on screen during gestures or animations,
+ while the gesture or animation is still in progress.</div>
+</td>
+</tr>
+<tr id="i36" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setExecutor-java.util.concurrent.Executor-">setExecutor</a></span>(<a href="https://developer.android.com/reference/java/util/concurrent/Executor.html?is-external=true" title="class or interface in java.util.concurrent">Executor</a>&nbsp;executor)</code>
+<div class="block">
+ Provide an <a href="https://developer.android.com/reference/java/util/concurrent/Executor.html?is-external=true" title="class or interface in java.util.concurrent"><code>Executor</code></a> to be used for loading images.</div>
+</td>
+</tr>
+<tr id="i37" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setImage-com.davemorrissey.labs.subscaleview.ImageSource-">setImage</a></span>(<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;imageSource)</code>
+<div class="block">Set the image source from a bitmap, resource, asset, file or other URI.</div>
+</td>
+</tr>
+<tr id="i38" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setImage-com.davemorrissey.labs.subscaleview.ImageSource-com.davemorrissey.labs.subscaleview.ImageSource-">setImage</a></span>(<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;imageSource,
+        <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;previewSource)</code>
+<div class="block">Set the image source from a bitmap, resource, asset, file or other URI, providing a preview image to be
+ displayed until the full size image is loaded.</div>
+</td>
+</tr>
+<tr id="i39" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setImage-com.davemorrissey.labs.subscaleview.ImageSource-com.davemorrissey.labs.subscaleview.ImageSource-com.davemorrissey.labs.subscaleview.ImageViewState-">setImage</a></span>(<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;imageSource,
+        <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;previewSource,
+        <a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview">ImageViewState</a>&nbsp;state)</code>
+<div class="block">Set the image source from a bitmap, resource, asset, file or other URI, providing a preview image to be
+ displayed until the full size image is loaded, starting with a given orientation setting, scale and center.</div>
+</td>
+</tr>
+<tr id="i40" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setImage-com.davemorrissey.labs.subscaleview.ImageSource-com.davemorrissey.labs.subscaleview.ImageViewState-">setImage</a></span>(<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;imageSource,
+        <a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview">ImageViewState</a>&nbsp;state)</code>
+<div class="block">Set the image source from a bitmap, resource, asset, file or other URI, starting with a given orientation
+ setting, scale and center.</div>
+</td>
+</tr>
+<tr id="i41" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMaximumDpi-int-">setMaximumDpi</a></span>(int&nbsp;dpi)</code>
+<div class="block">This is a screen density aware alternative to <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMinScale-float-"><code>setMinScale(float)</code></a>; it allows you to express the minimum
+ allowed scale in terms of the maximum pixel density.</div>
+</td>
+</tr>
+<tr id="i42" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMaxScale-float-">setMaxScale</a></span>(float&nbsp;maxScale)</code>
+<div class="block">Set the maximum scale allowed.</div>
+</td>
+</tr>
+<tr id="i43" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMaxTileSize-int-">setMaxTileSize</a></span>(int&nbsp;maxPixels)</code>
+<div class="block">By default the View automatically calculates the optimal tile size.</div>
+</td>
+</tr>
+<tr id="i44" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMaxTileSize-int-int-">setMaxTileSize</a></span>(int&nbsp;maxPixelsX,
+              int&nbsp;maxPixelsY)</code>
+<div class="block">By default the View automatically calculates the optimal tile size.</div>
+</td>
+</tr>
+<tr id="i45" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMinimumDpi-int-">setMinimumDpi</a></span>(int&nbsp;dpi)</code>
+<div class="block">This is a screen density aware alternative to <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMaxScale-float-"><code>setMaxScale(float)</code></a>; it allows you to express the maximum
+ allowed scale in terms of the minimum pixel density.</div>
+</td>
+</tr>
+<tr id="i46" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMinimumScaleType-int-">setMinimumScaleType</a></span>(int&nbsp;scaleType)</code>
+<div class="block">Set the minimum scale type.</div>
+</td>
+</tr>
+<tr id="i47" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMinimumTileDpi-int-">setMinimumTileDpi</a></span>(int&nbsp;minimumTileDpi)</code>
+<div class="block">By default, image tiles are at least as high resolution as the screen.</div>
+</td>
+</tr>
+<tr id="i48" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMinScale-float-">setMinScale</a></span>(float&nbsp;minScale)</code>
+<div class="block">Set the minimum scale allowed.</div>
+</td>
+</tr>
+<tr id="i49" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setOnImageEventListener-com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.OnImageEventListener-">setOnImageEventListener</a></span>(<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a>&nbsp;onImageEventListener)</code>
+<div class="block">Add a listener allowing notification of load and error events.</div>
+</td>
+</tr>
+<tr id="i50" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setOnLongClickListener-android.view.View.OnLongClickListener-">setOnLongClickListener</a></span>(<a href="https://developer.android.com/reference/android/view/View.OnLongClickListener.html?is-external=true" title="class or interface in android.view">View.OnLongClickListener</a>&nbsp;onLongClickListener)</code></td>
+</tr>
+<tr id="i51" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setOnStateChangedListener-com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.OnStateChangedListener-">setOnStateChangedListener</a></span>(<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnStateChangedListener</a>&nbsp;onStateChangedListener)</code>
+<div class="block">Add a listener for pan and zoom events.</div>
+</td>
+</tr>
+<tr id="i52" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setOrientation-int-">setOrientation</a></span>(int&nbsp;orientation)</code>
+<div class="block">Sets the image orientation.</div>
+</td>
+</tr>
+<tr id="i53" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setPanEnabled-boolean-">setPanEnabled</a></span>(boolean&nbsp;panEnabled)</code>
+<div class="block">Enable or disable pan gesture detection.</div>
+</td>
+</tr>
+<tr id="i54" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setPanLimit-int-">setPanLimit</a></span>(int&nbsp;panLimit)</code>
+<div class="block">Set the pan limiting style.</div>
+</td>
+</tr>
+<tr id="i55" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setPreferredBitmapConfig-android.graphics.Bitmap.Config-">setPreferredBitmapConfig</a></span>(<a href="https://developer.android.com/reference/android/graphics/Bitmap.Config.html?is-external=true" title="class or interface in android.graphics">Bitmap.Config</a>&nbsp;preferredBitmapConfig)</code>
+<div class="block">Set a global preferred bitmap config shared by all view instances and applied to new instances
+ initialised after the call is made.</div>
+</td>
+</tr>
+<tr id="i56" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setQuickScaleEnabled-boolean-">setQuickScaleEnabled</a></span>(boolean&nbsp;quickScaleEnabled)</code>
+<div class="block">Enable or disable double tap &amp; swipe to zoom.</div>
+</td>
+</tr>
+<tr id="i57" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setRegionDecoderClass-java.lang.Class-">setRegionDecoderClass</a></span>(<a href="https://developer.android.com/reference/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a>&gt;&nbsp;regionDecoderClass)</code>
+<div class="block">Swap the default region decoder implementation for one of your own.</div>
+</td>
+</tr>
+<tr id="i58" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setRegionDecoderFactory-com.davemorrissey.labs.subscaleview.decoder.DecoderFactory-">setRegionDecoderFactory</a></span>(<a href="../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">DecoderFactory</a>&lt;? extends <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a>&gt;&nbsp;regionDecoderFactory)</code>
+<div class="block">Swap the default region decoder implementation for one of your own.</div>
+</td>
+</tr>
+<tr id="i59" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setScaleAndCenter-float-android.graphics.PointF-">setScaleAndCenter</a></span>(float&nbsp;scale,
+                 <a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sCenter)</code>
+<div class="block">Externally change the scale and translation of the source image.</div>
+</td>
+</tr>
+<tr id="i60" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setTileBackgroundColor-int-">setTileBackgroundColor</a></span>(int&nbsp;tileBgColor)</code>
+<div class="block">Set a solid color to render behind tiles, useful for displaying transparent PNGs.</div>
+</td>
+</tr>
+<tr id="i61" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setZoomEnabled-boolean-">setZoomEnabled</a></span>(boolean&nbsp;zoomEnabled)</code>
+<div class="block">Enable or disable zoom gesture detection.</div>
+</td>
+</tr>
+<tr id="i62" class="altColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#sourceToViewCoord-float-float-">sourceToViewCoord</a></span>(float&nbsp;sx,
+                 float&nbsp;sy)</code>
+<div class="block">Convert source coordinate to view coordinate.</div>
+</td>
+</tr>
+<tr id="i63" class="rowColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#sourceToViewCoord-float-float-android.graphics.PointF-">sourceToViewCoord</a></span>(float&nbsp;sx,
+                 float&nbsp;sy,
+                 <a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;vTarget)</code>
+<div class="block">Convert source coordinate to view coordinate.</div>
+</td>
+</tr>
+<tr id="i64" class="altColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#sourceToViewCoord-android.graphics.PointF-">sourceToViewCoord</a></span>(<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sxy)</code>
+<div class="block">Convert source coordinate to view coordinate.</div>
+</td>
+</tr>
+<tr id="i65" class="rowColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#sourceToViewCoord-android.graphics.PointF-android.graphics.PointF-">sourceToViewCoord</a></span>(<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sxy,
+                 <a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;vTarget)</code>
+<div class="block">Convert source coordinate to view coordinate.</div>
+</td>
+</tr>
+<tr id="i66" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#viewToFileRect-android.graphics.Rect-android.graphics.Rect-">viewToFileRect</a></span>(<a href="https://developer.android.com/reference/android/graphics/Rect.html?is-external=true" title="class or interface in android.graphics">Rect</a>&nbsp;vRect,
+              <a href="https://developer.android.com/reference/android/graphics/Rect.html?is-external=true" title="class or interface in android.graphics">Rect</a>&nbsp;fRect)</code>
+<div class="block">Converts a rectangle within the view to the corresponding rectangle from the source file, taking
+ into account the current scale, translation, orientation and clipped region.</div>
+</td>
+</tr>
+<tr id="i67" class="rowColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#viewToSourceCoord-float-float-">viewToSourceCoord</a></span>(float&nbsp;vx,
+                 float&nbsp;vy)</code>
+<div class="block">Convert screen coordinate to source coordinate.</div>
+</td>
+</tr>
+<tr id="i68" class="altColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#viewToSourceCoord-float-float-android.graphics.PointF-">viewToSourceCoord</a></span>(float&nbsp;vx,
+                 float&nbsp;vy,
+                 <a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sTarget)</code>
+<div class="block">Convert screen coordinate to source coordinate.</div>
+</td>
+</tr>
+<tr id="i69" class="rowColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#viewToSourceCoord-android.graphics.PointF-">viewToSourceCoord</a></span>(<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;vxy)</code>
+<div class="block">Convert screen coordinate to source coordinate.</div>
+</td>
+</tr>
+<tr id="i70" class="altColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#viewToSourceCoord-android.graphics.PointF-android.graphics.PointF-">viewToSourceCoord</a></span>(<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;vxy,
+                 <a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sTarget)</code>
+<div class="block">Convert screen coordinate to source coordinate.</div>
+</td>
+</tr>
+<tr id="i71" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#visibleFileRect-android.graphics.Rect-">visibleFileRect</a></span>(<a href="https://developer.android.com/reference/android/graphics/Rect.html?is-external=true" title="class or interface in android.graphics">Rect</a>&nbsp;fRect)</code>
+<div class="block">Find the area of the source file that is currently visible on screen, taking into account the
+ current scale, translation, orientation and clipped region.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.android.view.View">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;android.view.<a href="https://developer.android.com/reference/android/view/View.html?is-external=true" title="class or interface in android.view">View</a></h3>
+<code><a href="https://developer.android.com/reference/android/view/View.html?is-external=true#addChildrenForAccessibility-java.util.ArrayList-" title="class or interface in android.view">addChildrenForAccessibility</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#addExtraDataToAccessibilityNodeInfo-android.view.accessibility.AccessibilityNodeInfo-java.lang.String-android.os.Bundle-" title="class or interface in android.view">addExtraDataToAccessibilityNodeInfo</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#addFocusables-java.util.ArrayList-int-" title="class or interface in android.view">addFocusables</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#addFocusables-java.util.ArrayList-int-int-" title="class or interface in android.view">addFocusables</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#addKeyboardNavigationClusters-java.util.Collection-int-" title="class or interface in android.view">addKeyboardNavigationClusters</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#addOnAttachStateChangeListener-android.view.View.OnAttachStateChangeListener-" title="class or interface in android.view">addOnAttachStateChangeListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#addOnLayoutChangeListener-android.view.View.OnLayoutChangeListener-" title="class or interface in android.view">addOnLayoutChangeListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#addTouchables-java.util.ArrayList-" title="class or interface in android.view">addTouchables</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#animate--" title="class or interface in android.view">animate</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#announceForAccessibility-java.lang.CharSequence-" title="class or interface in android.view">announceForAccessibility</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#autofill-android.view.autofill.AutofillValue-" title="class or interface in android.view">autofill</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#autofill-android.util.SparseArray-" title="class or interface in android.view">autofill</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#awakenScrollBars--" title="class or interface in android.view">awakenScrollBars</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#awakenScrollBars-int-" title="class or interface in android.view">awakenScrollBars</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#awakenScrollBars-int-boolean-" title="class or interface in android.view">awakenScrollBars</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#bringToFront--" title="class or interface in android.view">bringToFront</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#buildDrawingCache--" title="class or interface in android.view">buildDrawingCache</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#buildDrawingCache-boolean-" title="class or interface in android.view">buildDrawingCache</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#buildLayer--" title="class or interface in android.view">buildLayer</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#callOnClick--" title="class or interface in android.view">callOnClick</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#cancelDragAndDrop--" title="class or interface in android.view">cancelDragAndDrop</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#cancelLongPress--" title="class or interface in android.view">cancelLongPress</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#cancelPendingInputEvents--" title="class or interface in android.view">cancelPendingInputEvents</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#canResolveLayoutDirection--" title="class or interface in android.view">canResolveLayoutDirection</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#canResolveTextAlignment--" title="class or interface in android.view">canResolveTextAlignment</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#canResolveTextDirection--" title="class or interface in android.view">canResolveTextDirection</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#canScrollHorizontally-int-" title="class or interface in android.view">canScrollHorizontally</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#canScrollVertically-int-" title="class or interface in android.view">canScrollVertically</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#checkInputConnectionProxy-android.view.View-" title="class or interface in android.view">checkInputConnectionProxy</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#clearAnimation--" title="class or interface in android.view">clearAnimation</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#clearFocus--" title="class or interface in android.view">clearFocus</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#combineMeasuredStates-int-int-" title="class or interface in android.view">combineMeasuredStates</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#computeHorizontalScrollExtent--" title="class or interface in android.view">computeHorizontalScrollExtent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#computeHorizontalScrollOffset--" title="class or interface in android.view">computeHorizontalScrollOffset</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#computeHorizontalScrollRange--" title="class or interface in android.view">computeHorizontalScrollRange</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#computeScroll--" title="class or interface in android.view">computeScroll</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#computeSystemWindowInsets-android.view.WindowInsets-android.graphics.Rect-" title="class or interface in android.view">computeSystemWindowInsets</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#computeVerticalScrollExtent--" title="class or interface in android.view">computeVerticalScrollExtent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#computeVerticalScrollOffset--" title="class or interface in android.view">computeVerticalScrollOffset</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#computeVerticalScrollRange--" title="class or interface in android.view">computeVerticalScrollRange</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#createAccessibilityNodeInfo--" title="class or interface in android.view">createAccessibilityNodeInfo</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#createContextMenu-android.view.ContextMenu-" title="class or interface in android.view">createContextMenu</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#destroyDrawingCache--" title="class or interface in android.view">destroyDrawingCache</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchApplyWindowInsets-android.view.WindowInsets-" title="class or interface in android.view">dispatchApplyWindowInsets</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchCapturedPointerEvent-android.view.MotionEvent-" title="class or interface in android.view">dispatchCapturedPointerEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchConfigurationChanged-android.content.res.Configuration-" title="class or interface in android.view">dispatchConfigurationChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchDisplayHint-int-" title="class or interface in android.view">dispatchDisplayHint</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchDragEvent-android.view.DragEvent-" title="class or interface in android.view">dispatchDragEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchDraw-android.graphics.Canvas-" title="class or interface in android.view">dispatchDraw</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchDrawableHotspotChanged-float-float-" title="class or interface in android.view">dispatchDrawableHotspotChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchFinishTemporaryDetach--" title="class or interface in android.view">dispatchFinishTemporaryDetach</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchGenericFocusedEvent-android.view.MotionEvent-" title="class or interface in android.view">dispatchGenericFocusedEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchGenericMotionEvent-android.view.MotionEvent-" title="class or interface in android.view">dispatchGenericMotionEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchGenericPointerEvent-android.view.MotionEvent-" title="class or interface in android.view">dispatchGenericPointerEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchHoverEvent-android.view.MotionEvent-" title="class or interface in android.view">dispatchHoverEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchKeyEvent-android.view.KeyEvent-" title="class or interface in android.view">dispatchKeyEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchKeyEventPreIme-android.view.KeyEvent-" title="class or interface in android.view">dispatchKeyEventPreIme</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchKeyShortcutEvent-android.view.KeyEvent-" title="class or interface in android.view">dispatchKeyShortcutEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchNestedFling-float-float-boolean-" title="class or interface in android.view">dispatchNestedFling</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchNestedPreFling-float-float-" title="class or interface in android.view">dispatchNestedPreFling</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchNestedPrePerformAccessibilityAction-int-android.os.Bundle-" title="class or interface in android.view">dispatchNestedPrePerformAccessibilityAction</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchNestedPreScroll-int-int-int:A-int:A-" title="class or interface in android.view">dispatchNestedPreScroll</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchNestedScroll-int-int-int-int-int:A-" title="class or interface in android.view">dispatchNestedScroll</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchPointerCaptureChanged-boolean-" title="class or interface in android.view">dispatchPointerCaptureChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchPopulateAccessibilityEvent-android.view.accessibility.AccessibilityEvent-" title="class or interface in android.view">dispatchPopulateAccessibilityEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchProvideAutofillStructure-android.view.ViewStructure-int-" title="class or interface in android.view">dispatchProvideAutofillStructure</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchProvideStructure-android.view.ViewStructure-" title="class or interface in android.view">dispatchProvideStructure</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchRestoreInstanceState-android.util.SparseArray-" title="class or interface in android.view">dispatchRestoreInstanceState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchSaveInstanceState-android.util.SparseArray-" title="class or interface in android.view">dispatchSaveInstanceState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchSetActivated-boolean-" title="class or interface in android.view">dispatchSetActivated</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchSetPressed-boolean-" title="class or interface in android.view">dispatchSetPressed</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchSetSelected-boolean-" title="class or interface in android.view">dispatchSetSelected</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchStartTemporaryDetach--" title="class or interface in android.view">dispatchStartTemporaryDetach</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchSystemUiVisibilityChanged-int-" title="class or interface in android.view">dispatchSystemUiVisibilityChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchTouchEvent-android.view.MotionEvent-" title="class or interface in android.view">dispatchTouchEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchTrackballEvent-android.view.MotionEvent-" title="class or interface in android.view">dispatchTrackballEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchUnhandledMove-android.view.View-int-" title="class or interface in android.view">dispatchUnhandledMove</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchVisibilityChanged-android.view.View-int-" title="class or interface in android.view">dispatchVisibilityChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchWindowFocusChanged-boolean-" title="class or interface in android.view">dispatchWindowFocusChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchWindowSystemUiVisiblityChanged-int-" title="class or interface in android.view">dispatchWindowSystemUiVisiblityChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#dispatchWindowVisibilityChanged-int-" title="class or interface in android.view">dispatchWindowVisibilityChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#draw-android.graphics.Canvas-" title="class or interface in android.view">draw</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#drawableHotspotChanged-float-float-" title="class or interface in android.view">drawableHotspotChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#drawableStateChanged--" title="class or interface in android.view">drawableStateChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#findFocus--" title="class or interface in android.view">findFocus</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#findViewById-int-" title="class or interface in android.view">findViewById</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#findViewsWithText-java.util.ArrayList-java.lang.CharSequence-int-" title="class or interface in android.view">findViewsWithText</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#findViewWithTag-java.lang.Object-" title="class or interface in android.view">findViewWithTag</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#fitSystemWindows-android.graphics.Rect-" title="class or interface in android.view">fitSystemWindows</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#focusSearch-int-" title="class or interface in android.view">focusSearch</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#forceHasOverlappingRendering-boolean-" title="class or interface in android.view">forceHasOverlappingRendering</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#forceLayout--" title="class or interface in android.view">forceLayout</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#generateViewId--" title="class or interface in android.view">generateViewId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getAccessibilityClassName--" title="class or interface in android.view">getAccessibilityClassName</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getAccessibilityLiveRegion--" title="class or interface in android.view">getAccessibilityLiveRegion</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getAccessibilityNodeProvider--" title="class or interface in android.view">getAccessibilityNodeProvider</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getAccessibilityTraversalAfter--" title="class or interface in android.view">getAccessibilityTraversalAfter</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getAccessibilityTraversalBefore--" title="class or interface in android.view">getAccessibilityTraversalBefore</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getAlpha--" title="class or interface in android.view">getAlpha</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getAnimation--" title="class or interface in android.view">getAnimation</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getApplicationWindowToken--" title="class or interface in android.view">getApplicationWindowToken</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getAutofillHints--" title="class or interface in android.view">getAutofillHints</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getAutofillId--" title="class or interface in android.view">getAutofillId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getAutofillType--" title="class or interface in android.view">getAutofillType</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getAutofillValue--" title="class or interface in android.view">getAutofillValue</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getBackground--" title="class or interface in android.view">getBackground</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getBackgroundTintList--" title="class or interface in android.view">getBackgroundTintList</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getBackgroundTintMode--" title="class or interface in android.view">getBackgroundTintMode</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getBaseline--" title="class or interface in android.view">getBaseline</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getBottom--" title="class or interface in android.view">getBottom</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getBottomFadingEdgeStrength--" title="class or interface in android.view">getBottomFadingEdgeStrength</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getBottomPaddingOffset--" title="class or interface in android.view">getBottomPaddingOffset</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getCameraDistance--" title="class or interface in android.view">getCameraDistance</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getClipBounds--" title="class or interface in android.view">getClipBounds</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getClipBounds-android.graphics.Rect-" title="class or interface in android.view">getClipBounds</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getClipToOutline--" title="class or interface in android.view">getClipToOutline</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getContentDescription--" title="class or interface in android.view">getContentDescription</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getContext--" title="class or interface in android.view">getContext</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getContextMenuInfo--" title="class or interface in android.view">getContextMenuInfo</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getDefaultFocusHighlightEnabled--" title="class or interface in android.view">getDefaultFocusHighlightEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getDefaultSize-int-int-" title="class or interface in android.view">getDefaultSize</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getDisplay--" title="class or interface in android.view">getDisplay</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getDrawableState--" title="class or interface in android.view">getDrawableState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getDrawingCache--" title="class or interface in android.view">getDrawingCache</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getDrawingCache-boolean-" title="class or interface in android.view">getDrawingCache</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getDrawingCacheBackgroundColor--" title="class or interface in android.view">getDrawingCacheBackgroundColor</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getDrawingCacheQuality--" title="class or interface in android.view">getDrawingCacheQuality</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getDrawingRect-android.graphics.Rect-" title="class or interface in android.view">getDrawingRect</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getDrawingTime--" title="class or interface in android.view">getDrawingTime</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getElevation--" title="class or interface in android.view">getElevation</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getFilterTouchesWhenObscured--" title="class or interface in android.view">getFilterTouchesWhenObscured</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getFitsSystemWindows--" title="class or interface in android.view">getFitsSystemWindows</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getFocusable--" title="class or interface in android.view">getFocusable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getFocusables-int-" title="class or interface in android.view">getFocusables</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getFocusedRect-android.graphics.Rect-" title="class or interface in android.view">getFocusedRect</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getForeground--" title="class or interface in android.view">getForeground</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getForegroundGravity--" title="class or interface in android.view">getForegroundGravity</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getForegroundTintList--" title="class or interface in android.view">getForegroundTintList</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getForegroundTintMode--" title="class or interface in android.view">getForegroundTintMode</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getGlobalVisibleRect-android.graphics.Rect-" title="class or interface in android.view">getGlobalVisibleRect</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getGlobalVisibleRect-android.graphics.Rect-android.graphics.Point-" title="class or interface in android.view">getGlobalVisibleRect</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getHandler--" title="class or interface in android.view">getHandler</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getHasOverlappingRendering--" title="class or interface in android.view">getHasOverlappingRendering</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getHeight--" title="class or interface in android.view">getHeight</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getHitRect-android.graphics.Rect-" title="class or interface in android.view">getHitRect</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getHorizontalFadingEdgeLength--" title="class or interface in android.view">getHorizontalFadingEdgeLength</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getHorizontalScrollbarHeight--" title="class or interface in android.view">getHorizontalScrollbarHeight</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getId--" title="class or interface in android.view">getId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getImportantForAccessibility--" title="class or interface in android.view">getImportantForAccessibility</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getImportantForAutofill--" title="class or interface in android.view">getImportantForAutofill</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getKeepScreenOn--" title="class or interface in android.view">getKeepScreenOn</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getKeyDispatcherState--" title="class or interface in android.view">getKeyDispatcherState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getLabelFor--" title="class or interface in android.view">getLabelFor</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getLayerType--" title="class or interface in android.view">getLayerType</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getLayoutDirection--" title="class or interface in android.view">getLayoutDirection</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getLayoutParams--" title="class or interface in android.view">getLayoutParams</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getLeft--" title="class or interface in android.view">getLeft</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getLeftFadingEdgeStrength--" title="class or interface in android.view">getLeftFadingEdgeStrength</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getLeftPaddingOffset--" title="class or interface in android.view">getLeftPaddingOffset</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getLocalVisibleRect-android.graphics.Rect-" title="class or interface in android.view">getLocalVisibleRect</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getLocationInWindow-int:A-" title="class or interface in android.view">getLocationInWindow</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getLocationOnScreen-int:A-" title="class or interface in android.view">getLocationOnScreen</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getMatrix--" title="class or interface in android.view">getMatrix</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getMeasuredHeight--" title="class or interface in android.view">getMeasuredHeight</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getMeasuredHeightAndState--" title="class or interface in android.view">getMeasuredHeightAndState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getMeasuredState--" title="class or interface in android.view">getMeasuredState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getMeasuredWidth--" title="class or interface in android.view">getMeasuredWidth</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getMeasuredWidthAndState--" title="class or interface in android.view">getMeasuredWidthAndState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getMinimumHeight--" title="class or interface in android.view">getMinimumHeight</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getMinimumWidth--" title="class or interface in android.view">getMinimumWidth</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getNextClusterForwardId--" title="class or interface in android.view">getNextClusterForwardId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getNextFocusDownId--" title="class or interface in android.view">getNextFocusDownId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getNextFocusForwardId--" title="class or interface in android.view">getNextFocusForwardId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getNextFocusLeftId--" title="class or interface in android.view">getNextFocusLeftId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getNextFocusRightId--" title="class or interface in android.view">getNextFocusRightId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getNextFocusUpId--" title="class or interface in android.view">getNextFocusUpId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getOnFocusChangeListener--" title="class or interface in android.view">getOnFocusChangeListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getOutlineProvider--" title="class or interface in android.view">getOutlineProvider</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getOverlay--" title="class or interface in android.view">getOverlay</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getOverScrollMode--" title="class or interface in android.view">getOverScrollMode</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getPaddingBottom--" title="class or interface in android.view">getPaddingBottom</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getPaddingEnd--" title="class or interface in android.view">getPaddingEnd</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getPaddingLeft--" title="class or interface in android.view">getPaddingLeft</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getPaddingRight--" title="class or interface in android.view">getPaddingRight</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getPaddingStart--" title="class or interface in android.view">getPaddingStart</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getPaddingTop--" title="class or interface in android.view">getPaddingTop</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getParent--" title="class or interface in android.view">getParent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getParentForAccessibility--" title="class or interface in android.view">getParentForAccessibility</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getPivotX--" title="class or interface in android.view">getPivotX</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getPivotY--" title="class or interface in android.view">getPivotY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getPointerIcon--" title="class or interface in android.view">getPointerIcon</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getResources--" title="class or interface in android.view">getResources</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getRevealOnFocusHint--" title="class or interface in android.view">getRevealOnFocusHint</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getRight--" title="class or interface in android.view">getRight</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getRightFadingEdgeStrength--" title="class or interface in android.view">getRightFadingEdgeStrength</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getRightPaddingOffset--" title="class or interface in android.view">getRightPaddingOffset</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getRootView--" title="class or interface in android.view">getRootView</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getRootWindowInsets--" title="class or interface in android.view">getRootWindowInsets</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getRotation--" title="class or interface in android.view">getRotation</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getRotationX--" title="class or interface in android.view">getRotationX</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getRotationY--" title="class or interface in android.view">getRotationY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getScaleX--" title="class or interface in android.view">getScaleX</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getScaleY--" title="class or interface in android.view">getScaleY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getScrollBarDefaultDelayBeforeFade--" title="class or interface in android.view">getScrollBarDefaultDelayBeforeFade</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getScrollBarFadeDuration--" title="class or interface in android.view">getScrollBarFadeDuration</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getScrollBarSize--" title="class or interface in android.view">getScrollBarSize</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getScrollBarStyle--" title="class or interface in android.view">getScrollBarStyle</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getScrollIndicators--" title="class or interface in android.view">getScrollIndicators</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getScrollX--" title="class or interface in android.view">getScrollX</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getScrollY--" title="class or interface in android.view">getScrollY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getSolidColor--" title="class or interface in android.view">getSolidColor</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getStateListAnimator--" title="class or interface in android.view">getStateListAnimator</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getSuggestedMinimumHeight--" title="class or interface in android.view">getSuggestedMinimumHeight</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getSuggestedMinimumWidth--" title="class or interface in android.view">getSuggestedMinimumWidth</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getSystemUiVisibility--" title="class or interface in android.view">getSystemUiVisibility</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getTag--" title="class or interface in android.view">getTag</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getTag-int-" title="class or interface in android.view">getTag</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getTextAlignment--" title="class or interface in android.view">getTextAlignment</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getTextDirection--" title="class or interface in android.view">getTextDirection</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getTooltipText--" title="class or interface in android.view">getTooltipText</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getTop--" title="class or interface in android.view">getTop</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getTopFadingEdgeStrength--" title="class or interface in android.view">getTopFadingEdgeStrength</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getTopPaddingOffset--" title="class or interface in android.view">getTopPaddingOffset</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getTouchables--" title="class or interface in android.view">getTouchables</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getTouchDelegate--" title="class or interface in android.view">getTouchDelegate</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getTransitionName--" title="class or interface in android.view">getTransitionName</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getTranslationX--" title="class or interface in android.view">getTranslationX</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getTranslationY--" title="class or interface in android.view">getTranslationY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getTranslationZ--" title="class or interface in android.view">getTranslationZ</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getVerticalFadingEdgeLength--" title="class or interface in android.view">getVerticalFadingEdgeLength</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getVerticalScrollbarPosition--" title="class or interface in android.view">getVerticalScrollbarPosition</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getVerticalScrollbarWidth--" title="class or interface in android.view">getVerticalScrollbarWidth</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getViewTreeObserver--" title="class or interface in android.view">getViewTreeObserver</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getVisibility--" title="class or interface in android.view">getVisibility</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getWidth--" title="class or interface in android.view">getWidth</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getWindowAttachCount--" title="class or interface in android.view">getWindowAttachCount</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getWindowId--" title="class or interface in android.view">getWindowId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getWindowSystemUiVisibility--" title="class or interface in android.view">getWindowSystemUiVisibility</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getWindowToken--" title="class or interface in android.view">getWindowToken</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getWindowVisibility--" title="class or interface in android.view">getWindowVisibility</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getWindowVisibleDisplayFrame-android.graphics.Rect-" title="class or interface in android.view">getWindowVisibleDisplayFrame</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getX--" title="class or interface in android.view">getX</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getY--" title="class or interface in android.view">getY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#getZ--" title="class or interface in android.view">getZ</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#hasExplicitFocusable--" title="class or interface in android.view">hasExplicitFocusable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#hasFocus--" title="class or interface in android.view">hasFocus</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#hasFocusable--" title="class or interface in android.view">hasFocusable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#hasNestedScrollingParent--" title="class or interface in android.view">hasNestedScrollingParent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#hasOnClickListeners--" title="class or interface in android.view">hasOnClickListeners</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#hasOverlappingRendering--" title="class or interface in android.view">hasOverlappingRendering</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#hasPointerCapture--" title="class or interface in android.view">hasPointerCapture</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#hasTransientState--" title="class or interface in android.view">hasTransientState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#hasWindowFocus--" title="class or interface in android.view">hasWindowFocus</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#inflate-android.content.Context-int-android.view.ViewGroup-" title="class or interface in android.view">inflate</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#invalidate--" title="class or interface in android.view">invalidate</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#invalidate-int-int-int-int-" title="class or interface in android.view">invalidate</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#invalidate-android.graphics.Rect-" title="class or interface in android.view">invalidate</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#invalidateDrawable-android.graphics.drawable.Drawable-" title="class or interface in android.view">invalidateDrawable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#invalidateOutline--" title="class or interface in android.view">invalidateOutline</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isAccessibilityFocused--" title="class or interface in android.view">isAccessibilityFocused</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isActivated--" title="class or interface in android.view">isActivated</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isAttachedToWindow--" title="class or interface in android.view">isAttachedToWindow</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isClickable--" title="class or interface in android.view">isClickable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isContextClickable--" title="class or interface in android.view">isContextClickable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isDirty--" title="class or interface in android.view">isDirty</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isDrawingCacheEnabled--" title="class or interface in android.view">isDrawingCacheEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isDuplicateParentStateEnabled--" title="class or interface in android.view">isDuplicateParentStateEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isEnabled--" title="class or interface in android.view">isEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isFocusable--" title="class or interface in android.view">isFocusable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isFocusableInTouchMode--" title="class or interface in android.view">isFocusableInTouchMode</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isFocused--" title="class or interface in android.view">isFocused</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isFocusedByDefault--" title="class or interface in android.view">isFocusedByDefault</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isHapticFeedbackEnabled--" title="class or interface in android.view">isHapticFeedbackEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isHardwareAccelerated--" title="class or interface in android.view">isHardwareAccelerated</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isHorizontalFadingEdgeEnabled--" title="class or interface in android.view">isHorizontalFadingEdgeEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isHorizontalScrollBarEnabled--" title="class or interface in android.view">isHorizontalScrollBarEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isHovered--" title="class or interface in android.view">isHovered</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isImportantForAccessibility--" title="class or interface in android.view">isImportantForAccessibility</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isImportantForAutofill--" title="class or interface in android.view">isImportantForAutofill</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isInEditMode--" title="class or interface in android.view">isInEditMode</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isInLayout--" title="class or interface in android.view">isInLayout</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isInTouchMode--" title="class or interface in android.view">isInTouchMode</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isKeyboardNavigationCluster--" title="class or interface in android.view">isKeyboardNavigationCluster</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isLaidOut--" title="class or interface in android.view">isLaidOut</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isLayoutDirectionResolved--" title="class or interface in android.view">isLayoutDirectionResolved</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isLayoutRequested--" title="class or interface in android.view">isLayoutRequested</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isLongClickable--" title="class or interface in android.view">isLongClickable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isNestedScrollingEnabled--" title="class or interface in android.view">isNestedScrollingEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isOpaque--" title="class or interface in android.view">isOpaque</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isPaddingOffsetRequired--" title="class or interface in android.view">isPaddingOffsetRequired</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isPaddingRelative--" title="class or interface in android.view">isPaddingRelative</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isPressed--" title="class or interface in android.view">isPressed</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isSaveEnabled--" title="class or interface in android.view">isSaveEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isSaveFromParentEnabled--" title="class or interface in android.view">isSaveFromParentEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isScrollbarFadingEnabled--" title="class or interface in android.view">isScrollbarFadingEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isScrollContainer--" title="class or interface in android.view">isScrollContainer</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isSelected--" title="class or interface in android.view">isSelected</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isShown--" title="class or interface in android.view">isShown</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isSoundEffectsEnabled--" title="class or interface in android.view">isSoundEffectsEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isTemporarilyDetached--" title="class or interface in android.view">isTemporarilyDetached</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isTextAlignmentResolved--" title="class or interface in android.view">isTextAlignmentResolved</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isTextDirectionResolved--" title="class or interface in android.view">isTextDirectionResolved</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isVerticalFadingEdgeEnabled--" title="class or interface in android.view">isVerticalFadingEdgeEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#isVerticalScrollBarEnabled--" title="class or interface in android.view">isVerticalScrollBarEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#jumpDrawablesToCurrentState--" title="class or interface in android.view">jumpDrawablesToCurrentState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#keyboardNavigationClusterSearch-android.view.View-int-" title="class or interface in android.view">keyboardNavigationClusterSearch</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#layout-int-int-int-int-" title="class or interface in android.view">layout</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#measure-int-int-" title="class or interface in android.view">measure</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#mergeDrawableStates-int:A-int:A-" title="class or interface in android.view">mergeDrawableStates</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#offsetLeftAndRight-int-" title="class or interface in android.view">offsetLeftAndRight</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#offsetTopAndBottom-int-" title="class or interface in android.view">offsetTopAndBottom</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onAnimationEnd--" title="class or interface in android.view">onAnimationEnd</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onAnimationStart--" title="class or interface in android.view">onAnimationStart</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onApplyWindowInsets-android.view.WindowInsets-" title="class or interface in android.view">onApplyWindowInsets</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onAttachedToWindow--" title="class or interface in android.view">onAttachedToWindow</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onCancelPendingInputEvents--" title="class or interface in android.view">onCancelPendingInputEvents</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onCapturedPointerEvent-android.view.MotionEvent-" title="class or interface in android.view">onCapturedPointerEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onCheckIsTextEditor--" title="class or interface in android.view">onCheckIsTextEditor</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onConfigurationChanged-android.content.res.Configuration-" title="class or interface in android.view">onConfigurationChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onCreateContextMenu-android.view.ContextMenu-" title="class or interface in android.view">onCreateContextMenu</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onCreateDrawableState-int-" title="class or interface in android.view">onCreateDrawableState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onCreateInputConnection-android.view.inputmethod.EditorInfo-" title="class or interface in android.view">onCreateInputConnection</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onDetachedFromWindow--" title="class or interface in android.view">onDetachedFromWindow</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onDisplayHint-int-" title="class or interface in android.view">onDisplayHint</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onDragEvent-android.view.DragEvent-" title="class or interface in android.view">onDragEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onDrawForeground-android.graphics.Canvas-" title="class or interface in android.view">onDrawForeground</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onDrawScrollBars-android.graphics.Canvas-" title="class or interface in android.view">onDrawScrollBars</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onFilterTouchEventForSecurity-android.view.MotionEvent-" title="class or interface in android.view">onFilterTouchEventForSecurity</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onFinishInflate--" title="class or interface in android.view">onFinishInflate</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onFinishTemporaryDetach--" title="class or interface in android.view">onFinishTemporaryDetach</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onFocusChanged-boolean-int-android.graphics.Rect-" title="class or interface in android.view">onFocusChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onGenericMotionEvent-android.view.MotionEvent-" title="class or interface in android.view">onGenericMotionEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onHoverChanged-boolean-" title="class or interface in android.view">onHoverChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onHoverEvent-android.view.MotionEvent-" title="class or interface in android.view">onHoverEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onInitializeAccessibilityEvent-android.view.accessibility.AccessibilityEvent-" title="class or interface in android.view">onInitializeAccessibilityEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onInitializeAccessibilityNodeInfo-android.view.accessibility.AccessibilityNodeInfo-" title="class or interface in android.view">onInitializeAccessibilityNodeInfo</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onKeyDown-int-android.view.KeyEvent-" title="class or interface in android.view">onKeyDown</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onKeyLongPress-int-android.view.KeyEvent-" title="class or interface in android.view">onKeyLongPress</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onKeyMultiple-int-int-android.view.KeyEvent-" title="class or interface in android.view">onKeyMultiple</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onKeyPreIme-int-android.view.KeyEvent-" title="class or interface in android.view">onKeyPreIme</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onKeyShortcut-int-android.view.KeyEvent-" title="class or interface in android.view">onKeyShortcut</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onKeyUp-int-android.view.KeyEvent-" title="class or interface in android.view">onKeyUp</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onLayout-boolean-int-int-int-int-" title="class or interface in android.view">onLayout</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onOverScrolled-int-int-boolean-boolean-" title="class or interface in android.view">onOverScrolled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onPointerCaptureChange-boolean-" title="class or interface in android.view">onPointerCaptureChange</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onPopulateAccessibilityEvent-android.view.accessibility.AccessibilityEvent-" title="class or interface in android.view">onPopulateAccessibilityEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onProvideAutofillStructure-android.view.ViewStructure-int-" title="class or interface in android.view">onProvideAutofillStructure</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onProvideAutofillVirtualStructure-android.view.ViewStructure-int-" title="class or interface in android.view">onProvideAutofillVirtualStructure</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onProvideStructure-android.view.ViewStructure-" title="class or interface in android.view">onProvideStructure</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onProvideVirtualStructure-android.view.ViewStructure-" title="class or interface in android.view">onProvideVirtualStructure</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onResolvePointerIcon-android.view.MotionEvent-int-" title="class or interface in android.view">onResolvePointerIcon</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onRestoreInstanceState-android.os.Parcelable-" title="class or interface in android.view">onRestoreInstanceState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onRtlPropertiesChanged-int-" title="class or interface in android.view">onRtlPropertiesChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onSaveInstanceState--" title="class or interface in android.view">onSaveInstanceState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onScreenStateChanged-int-" title="class or interface in android.view">onScreenStateChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onScrollChanged-int-int-int-int-" title="class or interface in android.view">onScrollChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onSetAlpha-int-" title="class or interface in android.view">onSetAlpha</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onStartTemporaryDetach--" title="class or interface in android.view">onStartTemporaryDetach</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onTrackballEvent-android.view.MotionEvent-" title="class or interface in android.view">onTrackballEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onVisibilityAggregated-boolean-" title="class or interface in android.view">onVisibilityAggregated</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onVisibilityChanged-android.view.View-int-" title="class or interface in android.view">onVisibilityChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onWindowFocusChanged-boolean-" title="class or interface in android.view">onWindowFocusChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onWindowSystemUiVisibilityChanged-int-" title="class or interface in android.view">onWindowSystemUiVisibilityChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onWindowVisibilityChanged-int-" title="class or interface in android.view">onWindowVisibilityChanged</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#overScrollBy-int-int-int-int-int-int-int-int-boolean-" title="class or interface in android.view">overScrollBy</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#performAccessibilityAction-int-android.os.Bundle-" title="class or interface in android.view">performAccessibilityAction</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#performClick--" title="class or interface in android.view">performClick</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#performContextClick--" title="class or interface in android.view">performContextClick</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#performContextClick-float-float-" title="class or interface in android.view">performContextClick</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#performHapticFeedback-int-" title="class or interface in android.view">performHapticFeedback</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#performHapticFeedback-int-int-" title="class or interface in android.view">performHapticFeedback</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#performLongClick--" title="class or interface in android.view">performLongClick</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#performLongClick-float-float-" title="class or interface in android.view">performLongClick</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#playSoundEffect-int-" title="class or interface in android.view">playSoundEffect</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#post-java.lang.Runnable-" title="class or interface in android.view">post</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#postDelayed-java.lang.Runnable-long-" title="class or interface in android.view">postDelayed</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#postInvalidate--" title="class or interface in android.view">postInvalidate</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#postInvalidate-int-int-int-int-" title="class or interface in android.view">postInvalidate</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#postInvalidateDelayed-long-" title="class or interface in android.view">postInvalidateDelayed</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#postInvalidateDelayed-long-int-int-int-int-" title="class or interface in android.view">postInvalidateDelayed</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#postInvalidateOnAnimation--" title="class or interface in android.view">postInvalidateOnAnimation</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#postInvalidateOnAnimation-int-int-int-int-" title="class or interface in android.view">postInvalidateOnAnimation</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#postOnAnimation-java.lang.Runnable-" title="class or interface in android.view">postOnAnimation</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#postOnAnimationDelayed-java.lang.Runnable-long-" title="class or interface in android.view">postOnAnimationDelayed</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#refreshDrawableState--" title="class or interface in android.view">refreshDrawableState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#releasePointerCapture--" title="class or interface in android.view">releasePointerCapture</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#removeCallbacks-java.lang.Runnable-" title="class or interface in android.view">removeCallbacks</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#removeOnAttachStateChangeListener-android.view.View.OnAttachStateChangeListener-" title="class or interface in android.view">removeOnAttachStateChangeListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#removeOnLayoutChangeListener-android.view.View.OnLayoutChangeListener-" title="class or interface in android.view">removeOnLayoutChangeListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#requestApplyInsets--" title="class or interface in android.view">requestApplyInsets</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#requestFitSystemWindows--" title="class or interface in android.view">requestFitSystemWindows</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#requestFocus--" title="class or interface in android.view">requestFocus</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#requestFocus-int-" title="class or interface in android.view">requestFocus</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#requestFocus-int-android.graphics.Rect-" title="class or interface in android.view">requestFocus</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#requestFocusFromTouch--" title="class or interface in android.view">requestFocusFromTouch</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#requestLayout--" title="class or interface in android.view">requestLayout</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#requestPointerCapture--" title="class or interface in android.view">requestPointerCapture</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#requestRectangleOnScreen-android.graphics.Rect-" title="class or interface in android.view">requestRectangleOnScreen</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#requestRectangleOnScreen-android.graphics.Rect-boolean-" title="class or interface in android.view">requestRectangleOnScreen</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#requestUnbufferedDispatch-android.view.MotionEvent-" title="class or interface in android.view">requestUnbufferedDispatch</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#resolveSize-int-int-" title="class or interface in android.view">resolveSize</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#resolveSizeAndState-int-int-int-" title="class or interface in android.view">resolveSizeAndState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#restoreDefaultFocus--" title="class or interface in android.view">restoreDefaultFocus</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#restoreHierarchyState-android.util.SparseArray-" title="class or interface in android.view">restoreHierarchyState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#saveHierarchyState-android.util.SparseArray-" title="class or interface in android.view">saveHierarchyState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#scheduleDrawable-android.graphics.drawable.Drawable-java.lang.Runnable-long-" title="class or interface in android.view">scheduleDrawable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#scrollBy-int-int-" title="class or interface in android.view">scrollBy</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#scrollTo-int-int-" title="class or interface in android.view">scrollTo</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#sendAccessibilityEvent-int-" title="class or interface in android.view">sendAccessibilityEvent</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#sendAccessibilityEventUnchecked-android.view.accessibility.AccessibilityEvent-" title="class or interface in android.view">sendAccessibilityEventUnchecked</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setAccessibilityDelegate-android.view.View.AccessibilityDelegate-" title="class or interface in android.view">setAccessibilityDelegate</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setAccessibilityLiveRegion-int-" title="class or interface in android.view">setAccessibilityLiveRegion</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setAccessibilityTraversalAfter-int-" title="class or interface in android.view">setAccessibilityTraversalAfter</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setAccessibilityTraversalBefore-int-" title="class or interface in android.view">setAccessibilityTraversalBefore</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setActivated-boolean-" title="class or interface in android.view">setActivated</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setAlpha-float-" title="class or interface in android.view">setAlpha</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setAnimation-android.view.animation.Animation-" title="class or interface in android.view">setAnimation</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setAutofillHints-java.lang.String...-" title="class or interface in android.view">setAutofillHints</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setBackground-android.graphics.drawable.Drawable-" title="class or interface in android.view">setBackground</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setBackgroundColor-int-" title="class or interface in android.view">setBackgroundColor</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setBackgroundDrawable-android.graphics.drawable.Drawable-" title="class or interface in android.view">setBackgroundDrawable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setBackgroundResource-int-" title="class or interface in android.view">setBackgroundResource</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setBackgroundTintList-android.content.res.ColorStateList-" title="class or interface in android.view">setBackgroundTintList</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setBackgroundTintMode-android.graphics.PorterDuff.Mode-" title="class or interface in android.view">setBackgroundTintMode</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setBottom-int-" title="class or interface in android.view">setBottom</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setCameraDistance-float-" title="class or interface in android.view">setCameraDistance</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setClickable-boolean-" title="class or interface in android.view">setClickable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setClipBounds-android.graphics.Rect-" title="class or interface in android.view">setClipBounds</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setClipToOutline-boolean-" title="class or interface in android.view">setClipToOutline</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setContentDescription-java.lang.CharSequence-" title="class or interface in android.view">setContentDescription</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setContextClickable-boolean-" title="class or interface in android.view">setContextClickable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setDefaultFocusHighlightEnabled-boolean-" title="class or interface in android.view">setDefaultFocusHighlightEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setDrawingCacheBackgroundColor-int-" title="class or interface in android.view">setDrawingCacheBackgroundColor</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setDrawingCacheEnabled-boolean-" title="class or interface in android.view">setDrawingCacheEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setDrawingCacheQuality-int-" title="class or interface in android.view">setDrawingCacheQuality</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setDuplicateParentStateEnabled-boolean-" title="class or interface in android.view">setDuplicateParentStateEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setElevation-float-" title="class or interface in android.view">setElevation</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setEnabled-boolean-" title="class or interface in android.view">setEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setFadingEdgeLength-int-" title="class or interface in android.view">setFadingEdgeLength</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setFilterTouchesWhenObscured-boolean-" title="class or interface in android.view">setFilterTouchesWhenObscured</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setFitsSystemWindows-boolean-" title="class or interface in android.view">setFitsSystemWindows</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setFocusable-boolean-" title="class or interface in android.view">setFocusable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setFocusable-int-" title="class or interface in android.view">setFocusable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setFocusableInTouchMode-boolean-" title="class or interface in android.view">setFocusableInTouchMode</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setFocusedByDefault-boolean-" title="class or interface in android.view">setFocusedByDefault</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setForeground-android.graphics.drawable.Drawable-" title="class or interface in android.view">setForeground</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setForegroundGravity-int-" title="class or interface in android.view">setForegroundGravity</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setForegroundTintList-android.content.res.ColorStateList-" title="class or interface in android.view">setForegroundTintList</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setForegroundTintMode-android.graphics.PorterDuff.Mode-" title="class or interface in android.view">setForegroundTintMode</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setHapticFeedbackEnabled-boolean-" title="class or interface in android.view">setHapticFeedbackEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setHasTransientState-boolean-" title="class or interface in android.view">setHasTransientState</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setHorizontalFadingEdgeEnabled-boolean-" title="class or interface in android.view">setHorizontalFadingEdgeEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setHorizontalScrollBarEnabled-boolean-" title="class or interface in android.view">setHorizontalScrollBarEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setHovered-boolean-" title="class or interface in android.view">setHovered</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setId-int-" title="class or interface in android.view">setId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setImportantForAccessibility-int-" title="class or interface in android.view">setImportantForAccessibility</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setImportantForAutofill-int-" title="class or interface in android.view">setImportantForAutofill</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setKeepScreenOn-boolean-" title="class or interface in android.view">setKeepScreenOn</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setKeyboardNavigationCluster-boolean-" title="class or interface in android.view">setKeyboardNavigationCluster</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setLabelFor-int-" title="class or interface in android.view">setLabelFor</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setLayerPaint-android.graphics.Paint-" title="class or interface in android.view">setLayerPaint</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setLayerType-int-android.graphics.Paint-" title="class or interface in android.view">setLayerType</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setLayoutDirection-int-" title="class or interface in android.view">setLayoutDirection</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setLayoutParams-android.view.ViewGroup.LayoutParams-" title="class or interface in android.view">setLayoutParams</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setLeft-int-" title="class or interface in android.view">setLeft</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setLongClickable-boolean-" title="class or interface in android.view">setLongClickable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setMeasuredDimension-int-int-" title="class or interface in android.view">setMeasuredDimension</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setMinimumHeight-int-" title="class or interface in android.view">setMinimumHeight</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setMinimumWidth-int-" title="class or interface in android.view">setMinimumWidth</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setNestedScrollingEnabled-boolean-" title="class or interface in android.view">setNestedScrollingEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setNextClusterForwardId-int-" title="class or interface in android.view">setNextClusterForwardId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setNextFocusDownId-int-" title="class or interface in android.view">setNextFocusDownId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setNextFocusForwardId-int-" title="class or interface in android.view">setNextFocusForwardId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setNextFocusLeftId-int-" title="class or interface in android.view">setNextFocusLeftId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setNextFocusRightId-int-" title="class or interface in android.view">setNextFocusRightId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setNextFocusUpId-int-" title="class or interface in android.view">setNextFocusUpId</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setOnApplyWindowInsetsListener-android.view.View.OnApplyWindowInsetsListener-" title="class or interface in android.view">setOnApplyWindowInsetsListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setOnCapturedPointerListener-android.view.View.OnCapturedPointerListener-" title="class or interface in android.view">setOnCapturedPointerListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setOnClickListener-android.view.View.OnClickListener-" title="class or interface in android.view">setOnClickListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setOnContextClickListener-android.view.View.OnContextClickListener-" title="class or interface in android.view">setOnContextClickListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setOnCreateContextMenuListener-android.view.View.OnCreateContextMenuListener-" title="class or interface in android.view">setOnCreateContextMenuListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setOnDragListener-android.view.View.OnDragListener-" title="class or interface in android.view">setOnDragListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setOnFocusChangeListener-android.view.View.OnFocusChangeListener-" title="class or interface in android.view">setOnFocusChangeListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setOnGenericMotionListener-android.view.View.OnGenericMotionListener-" title="class or interface in android.view">setOnGenericMotionListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setOnHoverListener-android.view.View.OnHoverListener-" title="class or interface in android.view">setOnHoverListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setOnKeyListener-android.view.View.OnKeyListener-" title="class or interface in android.view">setOnKeyListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setOnScrollChangeListener-android.view.View.OnScrollChangeListener-" title="class or interface in android.view">setOnScrollChangeListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setOnSystemUiVisibilityChangeListener-android.view.View.OnSystemUiVisibilityChangeListener-" title="class or interface in android.view">setOnSystemUiVisibilityChangeListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setOnTouchListener-android.view.View.OnTouchListener-" title="class or interface in android.view">setOnTouchListener</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setOutlineProvider-android.view.ViewOutlineProvider-" title="class or interface in android.view">setOutlineProvider</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setOverScrollMode-int-" title="class or interface in android.view">setOverScrollMode</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setPadding-int-int-int-int-" title="class or interface in android.view">setPadding</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setPaddingRelative-int-int-int-int-" title="class or interface in android.view">setPaddingRelative</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setPivotX-float-" title="class or interface in android.view">setPivotX</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setPivotY-float-" title="class or interface in android.view">setPivotY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setPointerIcon-android.view.PointerIcon-" title="class or interface in android.view">setPointerIcon</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setPressed-boolean-" title="class or interface in android.view">setPressed</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setRevealOnFocusHint-boolean-" title="class or interface in android.view">setRevealOnFocusHint</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setRight-int-" title="class or interface in android.view">setRight</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setRotation-float-" title="class or interface in android.view">setRotation</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setRotationX-float-" title="class or interface in android.view">setRotationX</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setRotationY-float-" title="class or interface in android.view">setRotationY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setSaveEnabled-boolean-" title="class or interface in android.view">setSaveEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setSaveFromParentEnabled-boolean-" title="class or interface in android.view">setSaveFromParentEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setScaleX-float-" title="class or interface in android.view">setScaleX</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setScaleY-float-" title="class or interface in android.view">setScaleY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setScrollBarDefaultDelayBeforeFade-int-" title="class or interface in android.view">setScrollBarDefaultDelayBeforeFade</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setScrollBarFadeDuration-int-" title="class or interface in android.view">setScrollBarFadeDuration</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setScrollbarFadingEnabled-boolean-" title="class or interface in android.view">setScrollbarFadingEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setScrollBarSize-int-" title="class or interface in android.view">setScrollBarSize</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setScrollBarStyle-int-" title="class or interface in android.view">setScrollBarStyle</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setScrollContainer-boolean-" title="class or interface in android.view">setScrollContainer</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setScrollIndicators-int-" title="class or interface in android.view">setScrollIndicators</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setScrollIndicators-int-int-" title="class or interface in android.view">setScrollIndicators</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setScrollX-int-" title="class or interface in android.view">setScrollX</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setScrollY-int-" title="class or interface in android.view">setScrollY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setSelected-boolean-" title="class or interface in android.view">setSelected</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setSoundEffectsEnabled-boolean-" title="class or interface in android.view">setSoundEffectsEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setStateListAnimator-android.animation.StateListAnimator-" title="class or interface in android.view">setStateListAnimator</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setSystemUiVisibility-int-" title="class or interface in android.view">setSystemUiVisibility</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setTag-int-java.lang.Object-" title="class or interface in android.view">setTag</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setTag-java.lang.Object-" title="class or interface in android.view">setTag</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setTextAlignment-int-" title="class or interface in android.view">setTextAlignment</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setTextDirection-int-" title="class or interface in android.view">setTextDirection</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setTooltipText-java.lang.CharSequence-" title="class or interface in android.view">setTooltipText</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setTop-int-" title="class or interface in android.view">setTop</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setTouchDelegate-android.view.TouchDelegate-" title="class or interface in android.view">setTouchDelegate</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setTransitionName-java.lang.String-" title="class or interface in android.view">setTransitionName</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setTranslationX-float-" title="class or interface in android.view">setTranslationX</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setTranslationY-float-" title="class or interface in android.view">setTranslationY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setTranslationZ-float-" title="class or interface in android.view">setTranslationZ</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setVerticalFadingEdgeEnabled-boolean-" title="class or interface in android.view">setVerticalFadingEdgeEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setVerticalScrollBarEnabled-boolean-" title="class or interface in android.view">setVerticalScrollBarEnabled</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setVerticalScrollbarPosition-int-" title="class or interface in android.view">setVerticalScrollbarPosition</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setVisibility-int-" title="class or interface in android.view">setVisibility</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setWillNotCacheDrawing-boolean-" title="class or interface in android.view">setWillNotCacheDrawing</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setWillNotDraw-boolean-" title="class or interface in android.view">setWillNotDraw</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setX-float-" title="class or interface in android.view">setX</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setY-float-" title="class or interface in android.view">setY</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setZ-float-" title="class or interface in android.view">setZ</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#showContextMenu--" title="class or interface in android.view">showContextMenu</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#showContextMenu-float-float-" title="class or interface in android.view">showContextMenu</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#startActionMode-android.view.ActionMode.Callback-" title="class or interface in android.view">startActionMode</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#startActionMode-android.view.ActionMode.Callback-int-" title="class or interface in android.view">startActionMode</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#startAnimation-android.view.animation.Animation-" title="class or interface in android.view">startAnimation</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#startDrag-android.content.ClipData-android.view.View.DragShadowBuilder-java.lang.Object-int-" title="class or interface in android.view">startDrag</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#startDragAndDrop-android.content.ClipData-android.view.View.DragShadowBuilder-java.lang.Object-int-" title="class or interface in android.view">startDragAndDrop</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#startNestedScroll-int-" title="class or interface in android.view">startNestedScroll</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#stopNestedScroll--" title="class or interface in android.view">stopNestedScroll</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#toString--" title="class or interface in android.view">toString</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#unscheduleDrawable-android.graphics.drawable.Drawable-" title="class or interface in android.view">unscheduleDrawable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#unscheduleDrawable-android.graphics.drawable.Drawable-java.lang.Runnable-" title="class or interface in android.view">unscheduleDrawable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#updateDragShadow-android.view.View.DragShadowBuilder-" title="class or interface in android.view">updateDragShadow</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#verifyDrawable-android.graphics.drawable.Drawable-" title="class or interface in android.view">verifyDrawable</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#willNotCacheDrawing--" title="class or interface in android.view">willNotCacheDrawing</a>, <a href="https://developer.android.com/reference/android/view/View.html?is-external=true#willNotDraw--" title="class or interface in android.view">willNotDraw</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="ORIENTATION_USE_EXIF">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ORIENTATION_USE_EXIF</h4>
+<pre>public static final&nbsp;int ORIENTATION_USE_EXIF</pre>
+<div class="block">Attempt to use EXIF information on the image to rotate it. Works for external files only.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIENTATION_USE_EXIF">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="ORIENTATION_0">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ORIENTATION_0</h4>
+<pre>public static final&nbsp;int ORIENTATION_0</pre>
+<div class="block">Display the image file in its native orientation.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIENTATION_0">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="ORIENTATION_90">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ORIENTATION_90</h4>
+<pre>public static final&nbsp;int ORIENTATION_90</pre>
+<div class="block">Rotate the image 90 degrees clockwise.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIENTATION_90">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="ORIENTATION_180">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ORIENTATION_180</h4>
+<pre>public static final&nbsp;int ORIENTATION_180</pre>
+<div class="block">Rotate the image 180 degrees.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIENTATION_180">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="ORIENTATION_270">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ORIENTATION_270</h4>
+<pre>public static final&nbsp;int ORIENTATION_270</pre>
+<div class="block">Rotate the image 270 degrees clockwise.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIENTATION_270">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="ZOOM_FOCUS_FIXED">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ZOOM_FOCUS_FIXED</h4>
+<pre>public static final&nbsp;int ZOOM_FOCUS_FIXED</pre>
+<div class="block">During zoom animation, keep the point of the image that was tapped in the same place, and scale the image around it.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ZOOM_FOCUS_FIXED">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="ZOOM_FOCUS_CENTER">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ZOOM_FOCUS_CENTER</h4>
+<pre>public static final&nbsp;int ZOOM_FOCUS_CENTER</pre>
+<div class="block">During zoom animation, move the point of the image that was tapped to the center of the screen.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ZOOM_FOCUS_CENTER">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="ZOOM_FOCUS_CENTER_IMMEDIATE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ZOOM_FOCUS_CENTER_IMMEDIATE</h4>
+<pre>public static final&nbsp;int ZOOM_FOCUS_CENTER_IMMEDIATE</pre>
+<div class="block">Zoom in to and center the tapped point immediately without animating.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ZOOM_FOCUS_CENTER_IMMEDIATE">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="EASE_OUT_QUAD">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>EASE_OUT_QUAD</h4>
+<pre>public static final&nbsp;int EASE_OUT_QUAD</pre>
+<div class="block">Quadratic ease out. Not recommended for scale animation, but good for panning.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.EASE_OUT_QUAD">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="EASE_IN_OUT_QUAD">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>EASE_IN_OUT_QUAD</h4>
+<pre>public static final&nbsp;int EASE_IN_OUT_QUAD</pre>
+<div class="block">Quadratic ease in and out.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.EASE_IN_OUT_QUAD">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="PAN_LIMIT_INSIDE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>PAN_LIMIT_INSIDE</h4>
+<pre>public static final&nbsp;int PAN_LIMIT_INSIDE</pre>
+<div class="block">Don't allow the image to be panned off screen. As much of the image as possible is always displayed, centered in the view when it is smaller. This is the best option for galleries.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.PAN_LIMIT_INSIDE">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="PAN_LIMIT_OUTSIDE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>PAN_LIMIT_OUTSIDE</h4>
+<pre>public static final&nbsp;int PAN_LIMIT_OUTSIDE</pre>
+<div class="block">Allows the image to be panned until it is just off screen, but no further. The edge of the image will stop when it is flush with the screen edge.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.PAN_LIMIT_OUTSIDE">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="PAN_LIMIT_CENTER">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>PAN_LIMIT_CENTER</h4>
+<pre>public static final&nbsp;int PAN_LIMIT_CENTER</pre>
+<div class="block">Allows the image to be panned until a corner reaches the center of the screen but no further. Useful when you want to pan any spot on the image to the exact center of the screen.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.PAN_LIMIT_CENTER">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="SCALE_TYPE_CENTER_INSIDE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>SCALE_TYPE_CENTER_INSIDE</h4>
+<pre>public static final&nbsp;int SCALE_TYPE_CENTER_INSIDE</pre>
+<div class="block">Scale the image so that both dimensions of the image will be equal to or less than the corresponding dimension of the view. The image is then centered in the view. This is the default behaviour and best for galleries.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.SCALE_TYPE_CENTER_INSIDE">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="SCALE_TYPE_CENTER_CROP">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>SCALE_TYPE_CENTER_CROP</h4>
+<pre>public static final&nbsp;int SCALE_TYPE_CENTER_CROP</pre>
+<div class="block">Scale the image uniformly so that both dimensions of the image will be equal to or larger than the corresponding dimension of the view. The image is then centered in the view.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="SCALE_TYPE_CUSTOM">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>SCALE_TYPE_CUSTOM</h4>
+<pre>public static final&nbsp;int SCALE_TYPE_CUSTOM</pre>
+<div class="block">Scale the image so that both dimensions of the image will be equal to or less than the maxScale and equal to or larger than minScale. The image is then centered in the view.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.SCALE_TYPE_CUSTOM">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="SCALE_TYPE_START">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>SCALE_TYPE_START</h4>
+<pre>public static final&nbsp;int SCALE_TYPE_START</pre>
+<div class="block">Scale the image so that both dimensions of the image will be equal to or larger than the corresponding dimension of the view. The top left is shown.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.SCALE_TYPE_START">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="ORIGIN_ANIM">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ORIGIN_ANIM</h4>
+<pre>public static final&nbsp;int ORIGIN_ANIM</pre>
+<div class="block">State change originated from animation.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIGIN_ANIM">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="ORIGIN_TOUCH">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ORIGIN_TOUCH</h4>
+<pre>public static final&nbsp;int ORIGIN_TOUCH</pre>
+<div class="block">State change originated from touch gesture.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIGIN_TOUCH">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="ORIGIN_FLING">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ORIGIN_FLING</h4>
+<pre>public static final&nbsp;int ORIGIN_FLING</pre>
+<div class="block">State change originated from a fling momentum anim.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIGIN_FLING">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="ORIGIN_DOUBLE_TAP_ZOOM">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ORIGIN_DOUBLE_TAP_ZOOM</h4>
+<pre>public static final&nbsp;int ORIGIN_DOUBLE_TAP_ZOOM</pre>
+<div class="block">State change originated from a double tap zoom anim.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIGIN_DOUBLE_TAP_ZOOM">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="TILE_SIZE_AUTO">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TILE_SIZE_AUTO</h4>
+<pre>public static&nbsp;int TILE_SIZE_AUTO</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="SubsamplingScaleImageView-android.content.Context-android.util.AttributeSet-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>SubsamplingScaleImageView</h4>
+<pre>public&nbsp;SubsamplingScaleImageView(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
+                                 <a href="https://developer.android.com/reference/android/util/AttributeSet.html?is-external=true" title="class or interface in android.util">AttributeSet</a>&nbsp;attr)</pre>
+</li>
+</ul>
+<a name="SubsamplingScaleImageView-android.content.Context-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>SubsamplingScaleImageView</h4>
+<pre>public&nbsp;SubsamplingScaleImageView(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getPreferredBitmapConfig--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getPreferredBitmapConfig</h4>
+<pre>public static&nbsp;<a href="https://developer.android.com/reference/android/graphics/Bitmap.Config.html?is-external=true" title="class or interface in android.graphics">Bitmap.Config</a>&nbsp;getPreferredBitmapConfig()</pre>
+<div class="block">Get the current preferred configuration for decoding bitmaps. <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageDecoder</code></a> and <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageRegionDecoder</code></a>
+ instances can read this and use it when decoding images.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the preferred bitmap configuration, or null if none has been set.</dd>
+</dl>
+</li>
+</ul>
+<a name="setPreferredBitmapConfig-android.graphics.Bitmap.Config-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setPreferredBitmapConfig</h4>
+<pre>public static&nbsp;void&nbsp;setPreferredBitmapConfig(<a href="https://developer.android.com/reference/android/graphics/Bitmap.Config.html?is-external=true" title="class or interface in android.graphics">Bitmap.Config</a>&nbsp;preferredBitmapConfig)</pre>
+<div class="block">Set a global preferred bitmap config shared by all view instances and applied to new instances
+ initialised after the call is made. This is a hint only; the bundled <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageDecoder</code></a> and
+ <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageRegionDecoder</code></a> classes all respect this (except when they were constructed with
+ an instance-specific config) but custom decoder classes will not.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>preferredBitmapConfig</code> - the bitmap configuration to be used by future instances of the view. Pass null to restore the default.</dd>
+</dl>
+</li>
+</ul>
+<a name="setOrientation-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setOrientation</h4>
+<pre>public final&nbsp;void&nbsp;setOrientation(int&nbsp;orientation)</pre>
+<div class="block">Sets the image orientation. It's best to call this before setting the image file or asset, because it may waste
+ loading of tiles. However, this can be freely called at any time.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>orientation</code> - orientation to be set. See ORIENTATION_ static fields for valid values.</dd>
+</dl>
+</li>
+</ul>
+<a name="setImage-com.davemorrissey.labs.subscaleview.ImageSource-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setImage</h4>
+<pre>public final&nbsp;void&nbsp;setImage(<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;imageSource)</pre>
+<div class="block">Set the image source from a bitmap, resource, asset, file or other URI.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>imageSource</code> - Image source.</dd>
+</dl>
+</li>
+</ul>
+<a name="setImage-com.davemorrissey.labs.subscaleview.ImageSource-com.davemorrissey.labs.subscaleview.ImageViewState-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setImage</h4>
+<pre>public final&nbsp;void&nbsp;setImage(<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;imageSource,
+                           <a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview">ImageViewState</a>&nbsp;state)</pre>
+<div class="block">Set the image source from a bitmap, resource, asset, file or other URI, starting with a given orientation
+ setting, scale and center. This is the best method to use when you want scale and center to be restored
+ after screen orientation change; it avoids any redundant loading of tiles in the wrong orientation.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>imageSource</code> - Image source.</dd>
+<dd><code>state</code> - State to be restored. Nullable.</dd>
+</dl>
+</li>
+</ul>
+<a name="setImage-com.davemorrissey.labs.subscaleview.ImageSource-com.davemorrissey.labs.subscaleview.ImageSource-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setImage</h4>
+<pre>public final&nbsp;void&nbsp;setImage(<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;imageSource,
+                           <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;previewSource)</pre>
+<div class="block">Set the image source from a bitmap, resource, asset, file or other URI, providing a preview image to be
+ displayed until the full size image is loaded.
+
+ You must declare the dimensions of the full size image by calling <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#dimensions-int-int-"><code>ImageSource.dimensions(int, int)</code></a>
+ on the imageSource object. The preview source will be ignored if you don't provide dimensions,
+ and if you provide a bitmap for the full size image.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>imageSource</code> - Image source. Dimensions must be declared.</dd>
+<dd><code>previewSource</code> - Optional source for a preview image to be displayed and allow interaction while the full size image loads.</dd>
+</dl>
+</li>
+</ul>
+<a name="setImage-com.davemorrissey.labs.subscaleview.ImageSource-com.davemorrissey.labs.subscaleview.ImageSource-com.davemorrissey.labs.subscaleview.ImageViewState-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setImage</h4>
+<pre>public final&nbsp;void&nbsp;setImage(<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;imageSource,
+                           <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a>&nbsp;previewSource,
+                           <a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview">ImageViewState</a>&nbsp;state)</pre>
+<div class="block">Set the image source from a bitmap, resource, asset, file or other URI, providing a preview image to be
+ displayed until the full size image is loaded, starting with a given orientation setting, scale and center.
+ This is the best method to use when you want scale and center to be restored after screen orientation change;
+ it avoids any redundant loading of tiles in the wrong orientation.
+
+ You must declare the dimensions of the full size image by calling <a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html#dimensions-int-int-"><code>ImageSource.dimensions(int, int)</code></a>
+ on the imageSource object. The preview source will be ignored if you don't provide dimensions,
+ and if you provide a bitmap for the full size image.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>imageSource</code> - Image source. Dimensions must be declared.</dd>
+<dd><code>previewSource</code> - Optional source for a preview image to be displayed and allow interaction while the full size image loads.</dd>
+<dd><code>state</code> - State to be restored. Nullable.</dd>
+</dl>
+</li>
+</ul>
+<a name="onSizeChanged-int-int-int-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onSizeChanged</h4>
+<pre>protected&nbsp;void&nbsp;onSizeChanged(int&nbsp;w,
+                             int&nbsp;h,
+                             int&nbsp;oldw,
+                             int&nbsp;oldh)</pre>
+<div class="block">On resize, preserve center and scale. Various behaviours are possible, override this method to use another.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onSizeChanged-int-int-int-int-" title="class or interface in android.view">onSizeChanged</a></code>&nbsp;in class&nbsp;<code><a href="https://developer.android.com/reference/android/view/View.html?is-external=true" title="class or interface in android.view">View</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="onMeasure-int-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onMeasure</h4>
+<pre>protected&nbsp;void&nbsp;onMeasure(int&nbsp;widthMeasureSpec,
+                         int&nbsp;heightMeasureSpec)</pre>
+<div class="block">Measures the width and height of the view, preserving the aspect ratio of the image displayed if wrap_content is
+ used. The image will scale within this box, not resizing the view as it is zoomed.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onMeasure-int-int-" title="class or interface in android.view">onMeasure</a></code>&nbsp;in class&nbsp;<code><a href="https://developer.android.com/reference/android/view/View.html?is-external=true" title="class or interface in android.view">View</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="onTouchEvent-android.view.MotionEvent-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onTouchEvent</h4>
+<pre>public&nbsp;boolean&nbsp;onTouchEvent(<a href="https://developer.android.com/reference/android/support.annotation.NonNull.html?is-external=true" title="class or interface in android">@NonNull</a>
+                            <a href="https://developer.android.com/reference/android/view/MotionEvent.html?is-external=true" title="class or interface in android.view">MotionEvent</a>&nbsp;event)</pre>
+<div class="block">Handle touch events. One finger pans, and two finger pinch and zoom plus panning.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onTouchEvent-android.view.MotionEvent-" title="class or interface in android.view">onTouchEvent</a></code>&nbsp;in class&nbsp;<code><a href="https://developer.android.com/reference/android/view/View.html?is-external=true" title="class or interface in android.view">View</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="onDraw-android.graphics.Canvas-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onDraw</h4>
+<pre>protected&nbsp;void&nbsp;onDraw(<a href="https://developer.android.com/reference/android/graphics/Canvas.html?is-external=true" title="class or interface in android.graphics">Canvas</a>&nbsp;canvas)</pre>
+<div class="block">Draw method should not be called until the view has dimensions so the first calls are used as triggers to calculate
+ the scaling and tiling required. Once the view is setup, tiles are displayed as they are loaded.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="https://developer.android.com/reference/android/view/View.html?is-external=true#onDraw-android.graphics.Canvas-" title="class or interface in android.view">onDraw</a></code>&nbsp;in class&nbsp;<code><a href="https://developer.android.com/reference/android/view/View.html?is-external=true" title="class or interface in android.view">View</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="setMaxTileSize-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMaxTileSize</h4>
+<pre>public&nbsp;void&nbsp;setMaxTileSize(int&nbsp;maxPixels)</pre>
+<div class="block">By default the View automatically calculates the optimal tile size. Set this to override this, and force an upper limit to the dimensions of the generated tiles. Passing <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#TILE_SIZE_AUTO"><code>TILE_SIZE_AUTO</code></a> will re-enable the default behaviour.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>maxPixels</code> - Maximum tile size X and Y in pixels.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMaxTileSize-int-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMaxTileSize</h4>
+<pre>public&nbsp;void&nbsp;setMaxTileSize(int&nbsp;maxPixelsX,
+                           int&nbsp;maxPixelsY)</pre>
+<div class="block">By default the View automatically calculates the optimal tile size. Set this to override this, and force an upper limit to the dimensions of the generated tiles. Passing <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#TILE_SIZE_AUTO"><code>TILE_SIZE_AUTO</code></a> will re-enable the default behaviour.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>maxPixelsX</code> - Maximum tile width.</dd>
+<dd><code>maxPixelsY</code> - Maximum tile height.</dd>
+</dl>
+</li>
+</ul>
+<a name="recycle--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>recycle</h4>
+<pre>public&nbsp;void&nbsp;recycle()</pre>
+<div class="block">Releases all resources the view is using and resets the state, nulling any fields that use significant memory.
+ After you have called this method, the view can be re-used by setting a new image. Settings are remembered
+ but state (scale and center) is forgotten. You can restore these yourself if required.</div>
+</li>
+</ul>
+<a name="viewToFileRect-android.graphics.Rect-android.graphics.Rect-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>viewToFileRect</h4>
+<pre>public&nbsp;void&nbsp;viewToFileRect(<a href="https://developer.android.com/reference/android/graphics/Rect.html?is-external=true" title="class or interface in android.graphics">Rect</a>&nbsp;vRect,
+                           <a href="https://developer.android.com/reference/android/graphics/Rect.html?is-external=true" title="class or interface in android.graphics">Rect</a>&nbsp;fRect)</pre>
+<div class="block">Converts a rectangle within the view to the corresponding rectangle from the source file, taking
+ into account the current scale, translation, orientation and clipped region. This can be used
+ to decode a bitmap from the source file.
+
+ This method will only work when the image has fully initialised, after <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#isReady--"><code>isReady()</code></a> returns
+ true. It is not guaranteed to work with preloaded bitmaps.
+
+ The result is written to the fRect argument. Re-use a single instance for efficiency.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>vRect</code> - rectangle representing the view area to interpret.</dd>
+<dd><code>fRect</code> - rectangle instance to which the result will be written. Re-use for efficiency.</dd>
+</dl>
+</li>
+</ul>
+<a name="visibleFileRect-android.graphics.Rect-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>visibleFileRect</h4>
+<pre>public&nbsp;void&nbsp;visibleFileRect(<a href="https://developer.android.com/reference/android/graphics/Rect.html?is-external=true" title="class or interface in android.graphics">Rect</a>&nbsp;fRect)</pre>
+<div class="block">Find the area of the source file that is currently visible on screen, taking into account the
+ current scale, translation, orientation and clipped region. This is a convenience method; see
+ <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#viewToFileRect-android.graphics.Rect-android.graphics.Rect-"><code>viewToFileRect(Rect, Rect)</code></a>.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>fRect</code> - rectangle instance to which the result will be written. Re-use for efficiency.</dd>
+</dl>
+</li>
+</ul>
+<a name="viewToSourceCoord-android.graphics.PointF-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>viewToSourceCoord</h4>
+<pre>public final&nbsp;<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;viewToSourceCoord(<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;vxy)</pre>
+<div class="block">Convert screen coordinate to source coordinate.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>vxy</code> - view X/Y coordinate.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>a coordinate representing the corresponding source coordinate.</dd>
+</dl>
+</li>
+</ul>
+<a name="viewToSourceCoord-float-float-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>viewToSourceCoord</h4>
+<pre>public final&nbsp;<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;viewToSourceCoord(float&nbsp;vx,
+                                      float&nbsp;vy)</pre>
+<div class="block">Convert screen coordinate to source coordinate.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>vx</code> - view X coordinate.</dd>
+<dd><code>vy</code> - view Y coordinate.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>a coordinate representing the corresponding source coordinate.</dd>
+</dl>
+</li>
+</ul>
+<a name="viewToSourceCoord-android.graphics.PointF-android.graphics.PointF-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>viewToSourceCoord</h4>
+<pre>public final&nbsp;<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;viewToSourceCoord(<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;vxy,
+                                      <a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sTarget)</pre>
+<div class="block">Convert screen coordinate to source coordinate.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>vxy</code> - view coordinates to convert.</dd>
+<dd><code>sTarget</code> - target object for result. The same instance is also returned.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>source coordinates. This is the same instance passed to the sTarget param.</dd>
+</dl>
+</li>
+</ul>
+<a name="viewToSourceCoord-float-float-android.graphics.PointF-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>viewToSourceCoord</h4>
+<pre>public final&nbsp;<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;viewToSourceCoord(float&nbsp;vx,
+                                      float&nbsp;vy,
+                                      <a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sTarget)</pre>
+<div class="block">Convert screen coordinate to source coordinate.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>vx</code> - view X coordinate.</dd>
+<dd><code>vy</code> - view Y coordinate.</dd>
+<dd><code>sTarget</code> - target object for result. The same instance is also returned.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>source coordinates. This is the same instance passed to the sTarget param.</dd>
+</dl>
+</li>
+</ul>
+<a name="sourceToViewCoord-android.graphics.PointF-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>sourceToViewCoord</h4>
+<pre>public final&nbsp;<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sourceToViewCoord(<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sxy)</pre>
+<div class="block">Convert source coordinate to view coordinate.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>sxy</code> - source coordinates to convert.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>view coordinates.</dd>
+</dl>
+</li>
+</ul>
+<a name="sourceToViewCoord-float-float-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>sourceToViewCoord</h4>
+<pre>public final&nbsp;<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sourceToViewCoord(float&nbsp;sx,
+                                      float&nbsp;sy)</pre>
+<div class="block">Convert source coordinate to view coordinate.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>sx</code> - source X coordinate.</dd>
+<dd><code>sy</code> - source Y coordinate.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>view coordinates.</dd>
+</dl>
+</li>
+</ul>
+<a name="sourceToViewCoord-android.graphics.PointF-android.graphics.PointF-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>sourceToViewCoord</h4>
+<pre>public final&nbsp;<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sourceToViewCoord(<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sxy,
+                                      <a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;vTarget)</pre>
+<div class="block">Convert source coordinate to view coordinate.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>sxy</code> - source coordinates to convert.</dd>
+<dd><code>vTarget</code> - target object for result. The same instance is also returned.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>view coordinates. This is the same instance passed to the vTarget param.</dd>
+</dl>
+</li>
+</ul>
+<a name="sourceToViewCoord-float-float-android.graphics.PointF-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>sourceToViewCoord</h4>
+<pre>public final&nbsp;<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sourceToViewCoord(float&nbsp;sx,
+                                      float&nbsp;sy,
+                                      <a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;vTarget)</pre>
+<div class="block">Convert source coordinate to view coordinate.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>sx</code> - source X coordinate.</dd>
+<dd><code>sy</code> - source Y coordinate.</dd>
+<dd><code>vTarget</code> - target object for result. The same instance is also returned.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>view coordinates. This is the same instance passed to the vTarget param.</dd>
+</dl>
+</li>
+</ul>
+<a name="setRegionDecoderClass-java.lang.Class-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setRegionDecoderClass</h4>
+<pre>public final&nbsp;void&nbsp;setRegionDecoderClass(<a href="https://developer.android.com/reference/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a>&gt;&nbsp;regionDecoderClass)</pre>
+<div class="block">Swap the default region decoder implementation for one of your own. You must do this before setting the image file or
+ asset, and you cannot use a custom decoder when using layout XML to set an asset name. Your class must have a
+ public default constructor.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>regionDecoderClass</code> - The <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageRegionDecoder</code></a> implementation to use.</dd>
+</dl>
+</li>
+</ul>
+<a name="setRegionDecoderFactory-com.davemorrissey.labs.subscaleview.decoder.DecoderFactory-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setRegionDecoderFactory</h4>
+<pre>public final&nbsp;void&nbsp;setRegionDecoderFactory(<a href="../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">DecoderFactory</a>&lt;? extends <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a>&gt;&nbsp;regionDecoderFactory)</pre>
+<div class="block">Swap the default region decoder implementation for one of your own. You must do this before setting the image file or
+ asset, and you cannot use a custom decoder when using layout XML to set an asset name.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>regionDecoderFactory</code> - The <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>DecoderFactory</code></a> implementation that produces <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageRegionDecoder</code></a>
+                             instances.</dd>
+</dl>
+</li>
+</ul>
+<a name="setBitmapDecoderClass-java.lang.Class-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setBitmapDecoderClass</h4>
+<pre>public final&nbsp;void&nbsp;setBitmapDecoderClass(<a href="https://developer.android.com/reference/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageDecoder</a>&gt;&nbsp;bitmapDecoderClass)</pre>
+<div class="block">Swap the default bitmap decoder implementation for one of your own. You must do this before setting the image file or
+ asset, and you cannot use a custom decoder when using layout XML to set an asset name. Your class must have a
+ public default constructor.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>bitmapDecoderClass</code> - The <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageDecoder</code></a> implementation to use.</dd>
+</dl>
+</li>
+</ul>
+<a name="setBitmapDecoderFactory-com.davemorrissey.labs.subscaleview.decoder.DecoderFactory-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setBitmapDecoderFactory</h4>
+<pre>public final&nbsp;void&nbsp;setBitmapDecoderFactory(<a href="../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">DecoderFactory</a>&lt;? extends <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageDecoder</a>&gt;&nbsp;bitmapDecoderFactory)</pre>
+<div class="block">Swap the default bitmap decoder implementation for one of your own. You must do this before setting the image file or
+ asset, and you cannot use a custom decoder when using layout XML to set an asset name.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>bitmapDecoderFactory</code> - The <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>DecoderFactory</code></a> implementation that produces <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageDecoder</code></a> instances.</dd>
+</dl>
+</li>
+</ul>
+<a name="getPanRemaining-android.graphics.RectF-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getPanRemaining</h4>
+<pre>public final&nbsp;void&nbsp;getPanRemaining(<a href="https://developer.android.com/reference/android/graphics/RectF.html?is-external=true" title="class or interface in android.graphics">RectF</a>&nbsp;vTarget)</pre>
+<div class="block">Calculate how much further the image can be panned in each direction. The results are set on
+ the supplied <a href="https://developer.android.com/reference/android/graphics/RectF.html?is-external=true" title="class or interface in android.graphics"><code>RectF</code></a> and expressed as screen pixels. For example, if the image cannot be
+ panned any further towards the left, the value of <a href="https://developer.android.com/reference/android/graphics/RectF.html?is-external=true#left" title="class or interface in android.graphics"><code>RectF.left</code></a> will be set to 0.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>vTarget</code> - target object for results. Re-use for efficiency.</dd>
+</dl>
+</li>
+</ul>
+<a name="setPanLimit-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setPanLimit</h4>
+<pre>public final&nbsp;void&nbsp;setPanLimit(int&nbsp;panLimit)</pre>
+<div class="block">Set the pan limiting style. See static fields. Normally <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#PAN_LIMIT_INSIDE"><code>PAN_LIMIT_INSIDE</code></a> is best, for image galleries.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>panLimit</code> - a pan limit constant. See static fields.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMinimumScaleType-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMinimumScaleType</h4>
+<pre>public final&nbsp;void&nbsp;setMinimumScaleType(int&nbsp;scaleType)</pre>
+<div class="block">Set the minimum scale type. See static fields. Normally <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SCALE_TYPE_CENTER_INSIDE"><code>SCALE_TYPE_CENTER_INSIDE</code></a> is best, for image galleries.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>scaleType</code> - a scale type constant. See static fields.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMaxScale-float-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMaxScale</h4>
+<pre>public final&nbsp;void&nbsp;setMaxScale(float&nbsp;maxScale)</pre>
+<div class="block">Set the maximum scale allowed. A value of 1 means 1:1 pixels at maximum scale. You may wish to set this according
+ to screen density - on a retina screen, 1:1 may still be too small. Consider using <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMinimumDpi-int-"><code>setMinimumDpi(int)</code></a>,
+ which is density aware.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>maxScale</code> - maximum scale expressed as a source/view pixels ratio.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMinScale-float-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMinScale</h4>
+<pre>public final&nbsp;void&nbsp;setMinScale(float&nbsp;minScale)</pre>
+<div class="block">Set the minimum scale allowed. A value of 1 means 1:1 pixels at minimum scale. You may wish to set this according
+ to screen density. Consider using <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMaximumDpi-int-"><code>setMaximumDpi(int)</code></a>, which is density aware.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>minScale</code> - minimum scale expressed as a source/view pixels ratio.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMinimumDpi-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMinimumDpi</h4>
+<pre>public final&nbsp;void&nbsp;setMinimumDpi(int&nbsp;dpi)</pre>
+<div class="block">This is a screen density aware alternative to <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMaxScale-float-"><code>setMaxScale(float)</code></a>; it allows you to express the maximum
+ allowed scale in terms of the minimum pixel density. This avoids the problem of 1:1 scale still being
+ too small on a high density screen. A sensible starting point is 160 - the default used by this view.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>dpi</code> - Source image pixel density at maximum zoom.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMaximumDpi-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMaximumDpi</h4>
+<pre>public final&nbsp;void&nbsp;setMaximumDpi(int&nbsp;dpi)</pre>
+<div class="block">This is a screen density aware alternative to <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMinScale-float-"><code>setMinScale(float)</code></a>; it allows you to express the minimum
+ allowed scale in terms of the maximum pixel density.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>dpi</code> - Source image pixel density at minimum zoom.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMaxScale--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMaxScale</h4>
+<pre>public&nbsp;float&nbsp;getMaxScale()</pre>
+<div class="block">Returns the maximum allowed scale.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the maximum scale as a source/view pixels ratio.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMinScale--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMinScale</h4>
+<pre>public final&nbsp;float&nbsp;getMinScale()</pre>
+<div class="block">Returns the minimum allowed scale.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the minimum scale as a source/view pixels ratio.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMinimumTileDpi-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMinimumTileDpi</h4>
+<pre>public&nbsp;void&nbsp;setMinimumTileDpi(int&nbsp;minimumTileDpi)</pre>
+<div class="block">By default, image tiles are at least as high resolution as the screen. For a retina screen this may not be
+ necessary, and may increase the likelihood of an OutOfMemoryError. This method sets a DPI at which higher
+ resolution tiles should be loaded. Using a lower number will on average use less memory but result in a lower
+ quality image. 160-240dpi will usually be enough. This should be called before setting the image source,
+ because it affects which tiles get loaded. When using an untiled source image this method has no effect.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>minimumTileDpi</code> - Tile loading threshold.</dd>
+</dl>
+</li>
+</ul>
+<a name="getCenter--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCenter</h4>
+<pre>public final&nbsp;<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;getCenter()</pre>
+<div class="block">Returns the source point at the center of the view.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the source coordinates current at the center of the view.</dd>
+</dl>
+</li>
+</ul>
+<a name="getScale--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getScale</h4>
+<pre>public final&nbsp;float&nbsp;getScale()</pre>
+<div class="block">Returns the current scale value.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the current scale as a source/view pixels ratio.</dd>
+</dl>
+</li>
+</ul>
+<a name="setScaleAndCenter-float-android.graphics.PointF-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setScaleAndCenter</h4>
+<pre>public final&nbsp;void&nbsp;setScaleAndCenter(float&nbsp;scale,
+                                    <a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sCenter)</pre>
+<div class="block">Externally change the scale and translation of the source image. This may be used with getCenter() and getScale()
+ to restore the scale and zoom after a screen rotate.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>scale</code> - New scale to set.</dd>
+<dd><code>sCenter</code> - New source image coordinate to center on the screen, subject to boundaries.</dd>
+</dl>
+</li>
+</ul>
+<a name="resetScaleAndCenter--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>resetScaleAndCenter</h4>
+<pre>public final&nbsp;void&nbsp;resetScaleAndCenter()</pre>
+<div class="block">Fully zoom out and return the image to the middle of the screen. This might be useful if you have a view pager
+ and want images to be reset when the user has moved to another page.</div>
+</li>
+</ul>
+<a name="isReady--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isReady</h4>
+<pre>public final&nbsp;boolean&nbsp;isReady()</pre>
+<div class="block">Call to find whether the view is initialised, has dimensions, and will display an image on
+ the next draw. If a preview has been provided, it may be the preview that will be displayed
+ and the full size image may still be loading. If no preview was provided, this is called once
+ the base layer tiles of the full size image are loaded.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if the view is ready to display an image and accept touch gestures.</dd>
+</dl>
+</li>
+</ul>
+<a name="onReady--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onReady</h4>
+<pre>protected&nbsp;void&nbsp;onReady()</pre>
+<div class="block">Called once when the view is initialised, has dimensions, and will display an image on the
+ next draw. This is triggered at the same time as <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onReady--"><code>SubsamplingScaleImageView.OnImageEventListener.onReady()</code></a> but
+ allows a subclass to receive this event without using a listener.</div>
+</li>
+</ul>
+<a name="isImageLoaded--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isImageLoaded</h4>
+<pre>public final&nbsp;boolean&nbsp;isImageLoaded()</pre>
+<div class="block">Call to find whether the main image (base layer tiles where relevant) have been loaded. Before
+ this event the view is blank unless a preview was provided.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if the main image (not the preview) has been loaded and is ready to display.</dd>
+</dl>
+</li>
+</ul>
+<a name="onImageLoaded--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onImageLoaded</h4>
+<pre>protected&nbsp;void&nbsp;onImageLoaded()</pre>
+<div class="block">Called once when the full size image or its base layer tiles have been loaded.</div>
+</li>
+</ul>
+<a name="getSWidth--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getSWidth</h4>
+<pre>public final&nbsp;int&nbsp;getSWidth()</pre>
+<div class="block">Get source width, ignoring orientation. If <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getOrientation--"><code>getOrientation()</code></a> returns 90 or 270, you can use <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getSHeight--"><code>getSHeight()</code></a>
+ for the apparent width.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the source image width in pixels.</dd>
+</dl>
+</li>
+</ul>
+<a name="getSHeight--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getSHeight</h4>
+<pre>public final&nbsp;int&nbsp;getSHeight()</pre>
+<div class="block">Get source height, ignoring orientation. If <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getOrientation--"><code>getOrientation()</code></a> returns 90 or 270, you can use <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getSWidth--"><code>getSWidth()</code></a>
+ for the apparent height.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the source image height in pixels.</dd>
+</dl>
+</li>
+</ul>
+<a name="getOrientation--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getOrientation</h4>
+<pre>public final&nbsp;int&nbsp;getOrientation()</pre>
+<div class="block">Returns the orientation setting. This can return <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIENTATION_USE_EXIF"><code>ORIENTATION_USE_EXIF</code></a>, in which case it doesn't tell you
+ the applied orientation of the image. For that, use <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getAppliedOrientation--"><code>getAppliedOrientation()</code></a>.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the orientation setting. See static fields.</dd>
+</dl>
+</li>
+</ul>
+<a name="getAppliedOrientation--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getAppliedOrientation</h4>
+<pre>public final&nbsp;int&nbsp;getAppliedOrientation()</pre>
+<div class="block">Returns the actual orientation of the image relative to the source file. This will be based on the source file's
+ EXIF orientation if you're using ORIENTATION_USE_EXIF. Values are 0, 90, 180, 270.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the orientation applied after EXIF information has been extracted. See static fields.</dd>
+</dl>
+</li>
+</ul>
+<a name="getState--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getState</h4>
+<pre>public final&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview">ImageViewState</a>&nbsp;getState()</pre>
+<div class="block">Get the current state of the view (scale, center, orientation) for restoration after rotate. Will return null if
+ the view is not ready.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>an <a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview"><code>ImageViewState</code></a> instance representing the current position of the image. null if the view isn't ready.</dd>
+</dl>
+</li>
+</ul>
+<a name="isZoomEnabled--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isZoomEnabled</h4>
+<pre>public final&nbsp;boolean&nbsp;isZoomEnabled()</pre>
+<div class="block">Returns true if zoom gesture detection is enabled.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if zoom gesture detection is enabled.</dd>
+</dl>
+</li>
+</ul>
+<a name="setZoomEnabled-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setZoomEnabled</h4>
+<pre>public final&nbsp;void&nbsp;setZoomEnabled(boolean&nbsp;zoomEnabled)</pre>
+<div class="block">Enable or disable zoom gesture detection. Disabling zoom locks the the current scale.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>zoomEnabled</code> - true to enable zoom gestures, false to disable.</dd>
+</dl>
+</li>
+</ul>
+<a name="isQuickScaleEnabled--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isQuickScaleEnabled</h4>
+<pre>public final&nbsp;boolean&nbsp;isQuickScaleEnabled()</pre>
+<div class="block">Returns true if double tap &amp; swipe to zoom is enabled.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if double tap &amp; swipe to zoom is enabled.</dd>
+</dl>
+</li>
+</ul>
+<a name="setQuickScaleEnabled-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setQuickScaleEnabled</h4>
+<pre>public final&nbsp;void&nbsp;setQuickScaleEnabled(boolean&nbsp;quickScaleEnabled)</pre>
+<div class="block">Enable or disable double tap &amp; swipe to zoom.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>quickScaleEnabled</code> - true to enable quick scale, false to disable.</dd>
+</dl>
+</li>
+</ul>
+<a name="isPanEnabled--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isPanEnabled</h4>
+<pre>public final&nbsp;boolean&nbsp;isPanEnabled()</pre>
+<div class="block">Returns true if pan gesture detection is enabled.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if pan gesture detection is enabled.</dd>
+</dl>
+</li>
+</ul>
+<a name="setPanEnabled-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setPanEnabled</h4>
+<pre>public final&nbsp;void&nbsp;setPanEnabled(boolean&nbsp;panEnabled)</pre>
+<div class="block">Enable or disable pan gesture detection. Disabling pan causes the image to be centered. Pan
+ can still be changed from code.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>panEnabled</code> - true to enable panning, false to disable.</dd>
+</dl>
+</li>
+</ul>
+<a name="setTileBackgroundColor-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setTileBackgroundColor</h4>
+<pre>public final&nbsp;void&nbsp;setTileBackgroundColor(int&nbsp;tileBgColor)</pre>
+<div class="block">Set a solid color to render behind tiles, useful for displaying transparent PNGs.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>tileBgColor</code> - Background color for tiles.</dd>
+</dl>
+</li>
+</ul>
+<a name="setDoubleTapZoomScale-float-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDoubleTapZoomScale</h4>
+<pre>public final&nbsp;void&nbsp;setDoubleTapZoomScale(float&nbsp;doubleTapZoomScale)</pre>
+<div class="block">Set the scale the image will zoom in to when double tapped. This also the scale point where a double tap is interpreted
+ as a zoom out gesture - if the scale is greater than 90% of this value, a double tap zooms out. Avoid using values
+ greater than the max zoom.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>doubleTapZoomScale</code> - New value for double tap gesture zoom scale.</dd>
+</dl>
+</li>
+</ul>
+<a name="setDoubleTapZoomDpi-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDoubleTapZoomDpi</h4>
+<pre>public final&nbsp;void&nbsp;setDoubleTapZoomDpi(int&nbsp;dpi)</pre>
+<div class="block">A density aware alternative to <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setDoubleTapZoomScale-float-"><code>setDoubleTapZoomScale(float)</code></a>; this allows you to express the scale the
+ image will zoom in to when double tapped in terms of the image pixel density. Values lower than the max scale will
+ be ignored. A sensible starting point is 160 - the default used by this view.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>dpi</code> - New value for double tap gesture zoom scale.</dd>
+</dl>
+</li>
+</ul>
+<a name="setDoubleTapZoomStyle-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDoubleTapZoomStyle</h4>
+<pre>public final&nbsp;void&nbsp;setDoubleTapZoomStyle(int&nbsp;doubleTapZoomStyle)</pre>
+<div class="block">Set the type of zoom animation to be used for double taps. See static fields.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>doubleTapZoomStyle</code> - New value for zoom style.</dd>
+</dl>
+</li>
+</ul>
+<a name="setDoubleTapZoomDuration-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDoubleTapZoomDuration</h4>
+<pre>public final&nbsp;void&nbsp;setDoubleTapZoomDuration(int&nbsp;durationMs)</pre>
+<div class="block">Set the duration of the double tap zoom animation.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>durationMs</code> - Duration in milliseconds.</dd>
+</dl>
+</li>
+</ul>
+<a name="setExecutor-java.util.concurrent.Executor-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setExecutor</h4>
+<pre>public&nbsp;void&nbsp;setExecutor(<a href="https://developer.android.com/reference/java/util/concurrent/Executor.html?is-external=true" title="class or interface in java.util.concurrent">Executor</a>&nbsp;executor)</pre>
+<div class="block"><p>
+ Provide an <a href="https://developer.android.com/reference/java/util/concurrent/Executor.html?is-external=true" title="class or interface in java.util.concurrent"><code>Executor</code></a> to be used for loading images. By default, <a href="https://developer.android.com/reference/android/os/AsyncTask.html?is-external=true#THREAD_POOL_EXECUTOR" title="class or interface in android.os"><code>AsyncTask.THREAD_POOL_EXECUTOR</code></a>
+ is used to minimise contention with other background work the app is doing. You can also choose
+ to use <a href="https://developer.android.com/reference/android/os/AsyncTask.html?is-external=true#SERIAL_EXECUTOR" title="class or interface in android.os"><code>AsyncTask.SERIAL_EXECUTOR</code></a> if you want to limit concurrent background tasks.
+ Alternatively you can supply an <a href="https://developer.android.com/reference/java/util/concurrent/Executor.html?is-external=true" title="class or interface in java.util.concurrent"><code>Executor</code></a> of your own to avoid any contention. It is
+ strongly recommended to use a single executor instance for the life of your application, not
+ one per view instance.
+ </p><p>
+ <b>Warning:</b> If you are using a custom implementation of <a href="../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageRegionDecoder</code></a>, and you
+ supply an executor with more than one thread, you must make sure your implementation supports
+ multi-threaded bitmap decoding or has appropriate internal synchronization. From SDK 21, Android's
+ <a href="https://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html?is-external=true" title="class or interface in android.graphics"><code>BitmapRegionDecoder</code></a> uses an internal lock so it is thread safe but
+ there is no advantage to using multiple threads.
+ </p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>executor</code> - an <a href="https://developer.android.com/reference/java/util/concurrent/Executor.html?is-external=true" title="class or interface in java.util.concurrent"><code>Executor</code></a> for image loading.</dd>
+</dl>
+</li>
+</ul>
+<a name="setEagerLoadingEnabled-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setEagerLoadingEnabled</h4>
+<pre>public&nbsp;void&nbsp;setEagerLoadingEnabled(boolean&nbsp;eagerLoadingEnabled)</pre>
+<div class="block">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 enabled to improve
+ responsiveness, but it can result in tiles being loaded and discarded more rapidly than
+ necessary and reduce the animation frame rate on old/cheap devices. Disable this on older
+ devices if you see poor performance. Tiles will then be loaded only when gestures and animations
+ are completed.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>eagerLoadingEnabled</code> - true to enable loading during gestures, false to delay loading until gestures end</dd>
+</dl>
+</li>
+</ul>
+<a name="setDebug-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDebug</h4>
+<pre>public final&nbsp;void&nbsp;setDebug(boolean&nbsp;debug)</pre>
+<div class="block">Enables visual debugging, showing tile boundaries and sizes.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>debug</code> - true to enable debugging, false to disable.</dd>
+</dl>
+</li>
+</ul>
+<a name="hasImage--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>hasImage</h4>
+<pre>public&nbsp;boolean&nbsp;hasImage()</pre>
+<div class="block">Check if an image has been set. The image may not have been loaded and displayed yet.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>If an image is currently set.</dd>
+</dl>
+</li>
+</ul>
+<a name="setOnLongClickListener-android.view.View.OnLongClickListener-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setOnLongClickListener</h4>
+<pre>public&nbsp;void&nbsp;setOnLongClickListener(<a href="https://developer.android.com/reference/android/view/View.OnLongClickListener.html?is-external=true" title="class or interface in android.view">View.OnLongClickListener</a>&nbsp;onLongClickListener)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="https://developer.android.com/reference/android/view/View.html?is-external=true#setOnLongClickListener-android.view.View.OnLongClickListener-" title="class or interface in android.view">setOnLongClickListener</a></code>&nbsp;in class&nbsp;<code><a href="https://developer.android.com/reference/android/view/View.html?is-external=true" title="class or interface in android.view">View</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="setOnImageEventListener-com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.OnImageEventListener-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setOnImageEventListener</h4>
+<pre>public&nbsp;void&nbsp;setOnImageEventListener(<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a>&nbsp;onImageEventListener)</pre>
+<div class="block">Add a listener allowing notification of load and error events. Extend <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.DefaultOnImageEventListener</code></a>
+ to simplify implementation.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>onImageEventListener</code> - an <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.OnImageEventListener</code></a> instance.</dd>
+</dl>
+</li>
+</ul>
+<a name="setOnStateChangedListener-com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.OnStateChangedListener-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setOnStateChangedListener</h4>
+<pre>public&nbsp;void&nbsp;setOnStateChangedListener(<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnStateChangedListener</a>&nbsp;onStateChangedListener)</pre>
+<div class="block">Add a listener for pan and zoom events. Extend <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.DefaultOnStateChangedListener</code></a> to simplify
+ implementation.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>onStateChangedListener</code> - an <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.OnStateChangedListener</code></a> instance.</dd>
+</dl>
+</li>
+</ul>
+<a name="animateCenter-android.graphics.PointF-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>animateCenter</h4>
+<pre>public&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a>&nbsp;animateCenter(<a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sCenter)</pre>
+<div class="block">Creates a panning animation builder, that when started will animate the image to place the given coordinates of
+ the image in the center of the screen. If doing this would move the image beyond the edges of the screen, the
+ image is instead animated to move the center point as near to the center of the screen as is allowed - it's
+ guaranteed to be on screen.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>sCenter</code> - Target center point</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.AnimationBuilder</code></a> instance. Call <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html#start--"><code>SubsamplingScaleImageView.AnimationBuilder.start()</code></a> to start the anim.</dd>
+</dl>
+</li>
+</ul>
+<a name="animateScale-float-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>animateScale</h4>
+<pre>public&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a>&nbsp;animateScale(float&nbsp;scale)</pre>
+<div class="block">Creates a scale animation builder, that when started will animate a zoom in or out. If this would move the image
+ beyond the panning limits, the image is automatically panned during the animation.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>scale</code> - Target scale.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.AnimationBuilder</code></a> instance. Call <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html#start--"><code>SubsamplingScaleImageView.AnimationBuilder.start()</code></a> to start the anim.</dd>
+</dl>
+</li>
+</ul>
+<a name="animateScaleAndCenter-float-android.graphics.PointF-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>animateScaleAndCenter</h4>
+<pre>public&nbsp;<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a>&nbsp;animateScaleAndCenter(float&nbsp;scale,
+                                                                        <a href="https://developer.android.com/reference/android/graphics/PointF.html?is-external=true" title="class or interface in android.graphics">PointF</a>&nbsp;sCenter)</pre>
+<div class="block">Creates a scale animation builder, that when started will animate a zoom in or out. If this would move the image
+ beyond the panning limits, the image is automatically panned during the animation.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>scale</code> - Target scale.</dd>
+<dd><code>sCenter</code> - Target source center.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.AnimationBuilder</code></a> instance. Call <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html#start--"><code>SubsamplingScaleImageView.AnimationBuilder.start()</code></a> to start the anim.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" target="_top">Frames</a></li>
+<li><a href="SubsamplingScaleImageView.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html
new file mode 100644
index 0000000..ac7c814
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html
@@ -0,0 +1,328 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>CompatDecoderFactory (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="CompatDecoderFactory (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev&nbsp;Class</li>
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" target="_top">Frames</a></li>
+<li><a href="CompatDecoderFactory.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview.decoder</div>
+<h2 title="Class CompatDecoderFactory" class="title">Class CompatDecoderFactory&lt;T&gt;</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>com.davemorrissey.labs.subscaleview.decoder.CompatDecoderFactory&lt;T&gt;</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt><span class="paramLabel">Type Parameters:</span></dt>
+<dd><code>T</code> - The base type of the decoder this factory will produce.</dd>
+</dl>
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">DecoderFactory</a>&lt;T&gt;</dd>
+</dl>
+<hr>
+<br>
+<pre>public class <span class="typeNameLabel">CompatDecoderFactory&lt;T&gt;</span>
+extends <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">DecoderFactory</a>&lt;T&gt;</pre>
+<div class="block">Compatibility factory to instantiate decoders with empty public constructors.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html#CompatDecoderFactory-java.lang.Class-">CompatDecoderFactory</a></span>(<a href="https://developer.android.com/reference/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="type parameter in CompatDecoderFactory">T</a>&gt;&nbsp;clazz)</code>
+<div class="block">Construct a factory for the given class.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html#CompatDecoderFactory-java.lang.Class-android.graphics.Bitmap.Config-">CompatDecoderFactory</a></span>(<a href="https://developer.android.com/reference/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="type parameter in CompatDecoderFactory">T</a>&gt;&nbsp;clazz,
+                    <a href="https://developer.android.com/reference/android/graphics/Bitmap.Config.html?is-external=true" title="class or interface in android.graphics">Bitmap.Config</a>&nbsp;bitmapConfig)</code>
+<div class="block">Construct a factory for the given class.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="type parameter in CompatDecoderFactory">T</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html#make--">make</a></span>()</code>
+<div class="block">Produce a new instance of a decoder with type <code>T</code>.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="CompatDecoderFactory-java.lang.Class-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CompatDecoderFactory</h4>
+<pre>public&nbsp;CompatDecoderFactory(<a href="https://developer.android.com/reference/android/support.annotation.NonNull.html?is-external=true" title="class or interface in android">@NonNull</a>
+                            <a href="https://developer.android.com/reference/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="type parameter in CompatDecoderFactory">T</a>&gt;&nbsp;clazz)</pre>
+<div class="block">Construct a factory for the given class. This must have a default constructor.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>clazz</code> - a class that implements <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageDecoder</code></a> or <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageRegionDecoder</code></a>.</dd>
+</dl>
+</li>
+</ul>
+<a name="CompatDecoderFactory-java.lang.Class-android.graphics.Bitmap.Config-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CompatDecoderFactory</h4>
+<pre>public&nbsp;CompatDecoderFactory(<a href="https://developer.android.com/reference/android/support.annotation.NonNull.html?is-external=true" title="class or interface in android">@NonNull</a>
+                            <a href="https://developer.android.com/reference/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="type parameter in CompatDecoderFactory">T</a>&gt;&nbsp;clazz,
+                            <a href="https://developer.android.com/reference/android/graphics/Bitmap.Config.html?is-external=true" title="class or interface in android.graphics">Bitmap.Config</a>&nbsp;bitmapConfig)</pre>
+<div class="block">Construct a factory for the given class. This must have a constructor that accepts a <code>Bitmap.Config</code> instance.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>clazz</code> - a class that implements <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageDecoder</code></a> or <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageRegionDecoder</code></a>.</dd>
+<dd><code>bitmapConfig</code> - bitmap configuration to be used when loading images.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="make--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>make</h4>
+<pre>public&nbsp;<a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="type parameter in CompatDecoderFactory">T</a>&nbsp;make()
+       throws <a href="https://developer.android.com/reference/java/lang/IllegalAccessException.html?is-external=true" title="class or interface in java.lang">IllegalAccessException</a>,
+              <a href="https://developer.android.com/reference/java/lang/InstantiationException.html?is-external=true" title="class or interface in java.lang">InstantiationException</a>,
+              <a href="https://developer.android.com/reference/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang">NoSuchMethodException</a>,
+              <a href="https://developer.android.com/reference/java/lang/reflect/InvocationTargetException.html?is-external=true" title="class or interface in java.lang.reflect">InvocationTargetException</a></pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html#make--">DecoderFactory</a></code></span></div>
+<div class="block">Produce a new instance of a decoder with type <code>T</code>.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html#make--">make</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">DecoderFactory</a>&lt;<a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="type parameter in CompatDecoderFactory">T</a>&gt;</code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>a new instance of your decoder.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://developer.android.com/reference/java/lang/IllegalAccessException.html?is-external=true" title="class or interface in java.lang">IllegalAccessException</a></code> - if the factory class cannot be instantiated.</dd>
+<dd><code><a href="https://developer.android.com/reference/java/lang/InstantiationException.html?is-external=true" title="class or interface in java.lang">InstantiationException</a></code> - if the factory class cannot be instantiated.</dd>
+<dd><code><a href="https://developer.android.com/reference/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang">NoSuchMethodException</a></code> - if the factory class cannot be instantiated.</dd>
+<dd><code><a href="https://developer.android.com/reference/java/lang/reflect/InvocationTargetException.html?is-external=true" title="class or interface in java.lang.reflect">InvocationTargetException</a></code> - if the factory class cannot be instantiated.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev&nbsp;Class</li>
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" target="_top">Frames</a></li>
+<li><a href="CompatDecoderFactory.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html
new file mode 100644
index 0000000..09e82dc
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html
@@ -0,0 +1,243 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>DecoderFactory (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="DecoderFactory (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" target="_top">Frames</a></li>
+<li><a href="DecoderFactory.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview.decoder</div>
+<h2 title="Interface DecoderFactory" class="title">Interface DecoderFactory&lt;T&gt;</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt><span class="paramLabel">Type Parameters:</span></dt>
+<dd><code>T</code> - the class of decoder that will be produced.</dd>
+</dl>
+<dl>
+<dt>All Known Implementing Classes:</dt>
+<dd><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="class in com.davemorrissey.labs.subscaleview.decoder">CompatDecoderFactory</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public interface <span class="typeNameLabel">DecoderFactory&lt;T&gt;</span></pre>
+<div class="block">Interface for <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageDecoder</code></a> and <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageRegionDecoder</code></a> factories.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="type parameter in DecoderFactory">T</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html#make--">make</a></span>()</code>
+<div class="block">Produce a new instance of a decoder with type <code>T</code>.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="make--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>make</h4>
+<pre><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="type parameter in DecoderFactory">T</a>&nbsp;make()
+throws <a href="https://developer.android.com/reference/java/lang/IllegalAccessException.html?is-external=true" title="class or interface in java.lang">IllegalAccessException</a>,
+       <a href="https://developer.android.com/reference/java/lang/InstantiationException.html?is-external=true" title="class or interface in java.lang">InstantiationException</a>,
+       <a href="https://developer.android.com/reference/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang">NoSuchMethodException</a>,
+       <a href="https://developer.android.com/reference/java/lang/reflect/InvocationTargetException.html?is-external=true" title="class or interface in java.lang.reflect">InvocationTargetException</a></pre>
+<div class="block">Produce a new instance of a decoder with type <code>T</code>.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>a new instance of your decoder.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://developer.android.com/reference/java/lang/IllegalAccessException.html?is-external=true" title="class or interface in java.lang">IllegalAccessException</a></code> - if the factory class cannot be instantiated.</dd>
+<dd><code><a href="https://developer.android.com/reference/java/lang/InstantiationException.html?is-external=true" title="class or interface in java.lang">InstantiationException</a></code> - if the factory class cannot be instantiated.</dd>
+<dd><code><a href="https://developer.android.com/reference/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang">NoSuchMethodException</a></code> - if the factory class cannot be instantiated.</dd>
+<dd><code><a href="https://developer.android.com/reference/java/lang/reflect/InvocationTargetException.html?is-external=true" title="class or interface in java.lang.reflect">InvocationTargetException</a></code> - if the factory class cannot be instantiated.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" target="_top">Frames</a></li>
+<li><a href="DecoderFactory.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html
new file mode 100644
index 0000000..a9a8b4e
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html
@@ -0,0 +1,245 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>ImageDecoder (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ImageDecoder (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" target="_top">Frames</a></li>
+<li><a href="ImageDecoder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview.decoder</div>
+<h2 title="Interface ImageDecoder" class="title">Interface ImageDecoder</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Known Implementing Classes:</dt>
+<dd><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaImageDecoder</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public interface <span class="typeNameLabel">ImageDecoder</span></pre>
+<div class="block">Interface for image decoding classes, allowing the default <a href="https://developer.android.com/reference/android/graphics/BitmapFactory.html?is-external=true" title="class or interface in android.graphics"><code>BitmapFactory</code></a>
+ based on the Skia library to be replaced with a custom class.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/Bitmap.html?is-external=true" title="class or interface in android.graphics">Bitmap</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html#decode-android.content.Context-android.net.Uri-">decode</a></span>(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
+      <a href="https://developer.android.com/reference/android/net/Uri.html?is-external=true" title="class or interface in android.net">Uri</a>&nbsp;uri)</code>
+<div class="block">Decode an image.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="decode-android.content.Context-android.net.Uri-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>decode</h4>
+<pre><a href="https://developer.android.com/reference/android/graphics/Bitmap.html?is-external=true" title="class or interface in android.graphics">Bitmap</a>&nbsp;decode(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
+              <a href="https://developer.android.com/reference/android/net/Uri.html?is-external=true" title="class or interface in android.net">Uri</a>&nbsp;uri)
+       throws <a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<div class="block">Decode an image. The URI can be in one of the following formats:
+ <br>
+ File: <code>file:///scard/picture.jpg</code>
+ <br>
+ Asset: <code>file:///android_asset/picture.png</code>
+ <br>
+ Resource: <code>android.resource://com.example.app/drawable/picture</code></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>context</code> - Application context</dd>
+<dd><code>uri</code> - URI of the image</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the decoded bitmap</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code> - if decoding fails.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" target="_top">Frames</a></li>
+<li><a href="ImageDecoder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html
new file mode 100644
index 0000000..74c783e
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html
@@ -0,0 +1,318 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>ImageRegionDecoder (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ImageRegionDecoder (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" target="_top">Frames</a></li>
+<li><a href="ImageRegionDecoder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview.decoder</div>
+<h2 title="Interface ImageRegionDecoder" class="title">Interface ImageRegionDecoder</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Known Implementing Classes:</dt>
+<dd><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaImageRegionDecoder</a>, <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaPooledImageRegionDecoder</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public interface <span class="typeNameLabel">ImageRegionDecoder</span></pre>
+<div class="block">Interface for image decoding classes, allowing the default <a href="https://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html?is-external=true" title="class or interface in android.graphics"><code>BitmapRegionDecoder</code></a>
+ based on the Skia library to be replaced with a custom class.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/Bitmap.html?is-external=true" title="class or interface in android.graphics">Bitmap</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#decodeRegion-android.graphics.Rect-int-">decodeRegion</a></span>(<a href="https://developer.android.com/reference/android/graphics/Rect.html?is-external=true" title="class or interface in android.graphics">Rect</a>&nbsp;sRect,
+            int&nbsp;sampleSize)</code>
+<div class="block">
+ Decode a region of the image with the given sample size.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/Point.html?is-external=true" title="class or interface in android.graphics">Point</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#init-android.content.Context-android.net.Uri-">init</a></span>(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
+    <a href="https://developer.android.com/reference/android/net/Uri.html?is-external=true" title="class or interface in android.net">Uri</a>&nbsp;uri)</code>
+<div class="block">Initialise the decoder.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#isReady--">isReady</a></span>()</code>
+<div class="block">Status check.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#recycle--">recycle</a></span>()</code>
+<div class="block">This method will be called when the decoder is no longer required.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="init-android.content.Context-android.net.Uri-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>init</h4>
+<pre><a href="https://developer.android.com/reference/android/graphics/Point.html?is-external=true" title="class or interface in android.graphics">Point</a>&nbsp;init(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
+           <a href="https://developer.android.com/reference/android/net/Uri.html?is-external=true" title="class or interface in android.net">Uri</a>&nbsp;uri)
+    throws <a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<div class="block">Initialise the decoder. When possible, perform initial setup work once in this method. The
+ dimensions of the image must be returned. The URI can be in one of the following formats:
+ <br>
+ File: <code>file:///scard/picture.jpg</code>
+ <br>
+ Asset: <code>file:///android_asset/picture.png</code>
+ <br>
+ Resource: <code>android.resource://com.example.app/drawable/picture</code></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>context</code> - Application context. A reference may be held, but must be cleared on recycle.</dd>
+<dd><code>uri</code> - URI of the image.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>Dimensions of the image.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code> - if initialisation fails.</dd>
+</dl>
+</li>
+</ul>
+<a name="decodeRegion-android.graphics.Rect-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>decodeRegion</h4>
+<pre><a href="https://developer.android.com/reference/android/graphics/Bitmap.html?is-external=true" title="class or interface in android.graphics">Bitmap</a>&nbsp;decodeRegion(<a href="https://developer.android.com/reference/android/graphics/Rect.html?is-external=true" title="class or interface in android.graphics">Rect</a>&nbsp;sRect,
+                    int&nbsp;sampleSize)</pre>
+<div class="block"><p>
+ Decode a region of the image with the given sample size. This method is called off the UI
+ thread so it can safely load the image on the current thread. It is called from
+ <a href="https://developer.android.com/reference/android/os/AsyncTask.html?is-external=true" title="class or interface in android.os"><code>AsyncTask</code></a>s running in an executor that may have multiple threads, so
+ implementations must be thread safe. Adding <code>synchronized</code> to the method signature
+ is the simplest way to achieve this, but bear in mind the <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#recycle--"><code>recycle()</code></a> method can be
+ called concurrently.
+ </p><p>
+ See <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><code>SkiaImageRegionDecoder</code></a> and <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><code>SkiaPooledImageRegionDecoder</code></a> for examples of
+ internal locking and synchronization.
+ </p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>sRect</code> - Source image rectangle to decode.</dd>
+<dd><code>sampleSize</code> - Sample size.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The decoded region. It is safe to return null if decoding fails.</dd>
+</dl>
+</li>
+</ul>
+<a name="isReady--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isReady</h4>
+<pre>boolean&nbsp;isReady()</pre>
+<div class="block">Status check. Should return false before initialisation and after recycle.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if the decoder is ready to be used.</dd>
+</dl>
+</li>
+</ul>
+<a name="recycle--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>recycle</h4>
+<pre>void&nbsp;recycle()</pre>
+<div class="block">This method will be called when the decoder is no longer required. It should clean up any resources still in use.</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" target="_top">Frames</a></li>
+<li><a href="ImageRegionDecoder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html
new file mode 100644
index 0000000..695bb18
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html
@@ -0,0 +1,313 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>SkiaImageDecoder (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SkiaImageDecoder (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html" target="_top">Frames</a></li>
+<li><a href="SkiaImageDecoder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview.decoder</div>
+<h2 title="Class SkiaImageDecoder" class="title">Class SkiaImageDecoder</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>com.davemorrissey.labs.subscaleview.decoder.SkiaImageDecoder</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageDecoder</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public class <span class="typeNameLabel">SkiaImageDecoder</span>
+extends <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageDecoder</a></pre>
+<div class="block">Default implementation of <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageDecoder</code></a>
+ using Android's <a href="https://developer.android.com/reference/android/graphics/BitmapFactory.html?is-external=true" title="class or interface in android.graphics"><code>BitmapFactory</code></a>, based on the Skia library. This
+ works well in most circumstances and has reasonable performance, however it has some problems
+ with grayscale, indexed and CMYK images.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html#SkiaImageDecoder--">SkiaImageDecoder</a></span>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html#SkiaImageDecoder-android.graphics.Bitmap.Config-">SkiaImageDecoder</a></span>(<a href="https://developer.android.com/reference/android/graphics/Bitmap.Config.html?is-external=true" title="class or interface in android.graphics">Bitmap.Config</a>&nbsp;bitmapConfig)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/Bitmap.html?is-external=true" title="class or interface in android.graphics">Bitmap</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html#decode-android.content.Context-android.net.Uri-">decode</a></span>(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
+      <a href="https://developer.android.com/reference/android/net/Uri.html?is-external=true" title="class or interface in android.net">Uri</a>&nbsp;uri)</code>
+<div class="block">Decode an image.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="SkiaImageDecoder--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>SkiaImageDecoder</h4>
+<pre>public&nbsp;SkiaImageDecoder()</pre>
+</li>
+</ul>
+<a name="SkiaImageDecoder-android.graphics.Bitmap.Config-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>SkiaImageDecoder</h4>
+<pre>public&nbsp;SkiaImageDecoder(<a href="https://developer.android.com/reference/android/graphics/Bitmap.Config.html?is-external=true" title="class or interface in android.graphics">Bitmap.Config</a>&nbsp;bitmapConfig)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="decode-android.content.Context-android.net.Uri-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>decode</h4>
+<pre>public&nbsp;<a href="https://developer.android.com/reference/android/graphics/Bitmap.html?is-external=true" title="class or interface in android.graphics">Bitmap</a>&nbsp;decode(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
+                     <a href="https://developer.android.com/reference/android/net/Uri.html?is-external=true" title="class or interface in android.net">Uri</a>&nbsp;uri)
+              throws <a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html#decode-android.content.Context-android.net.Uri-">ImageDecoder</a></code></span></div>
+<div class="block">Decode an image. The URI can be in one of the following formats:
+ <br>
+ File: <code>file:///scard/picture.jpg</code>
+ <br>
+ Asset: <code>file:///android_asset/picture.png</code>
+ <br>
+ Resource: <code>android.resource://com.example.app/drawable/picture</code></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html#decode-android.content.Context-android.net.Uri-">decode</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageDecoder</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>context</code> - Application context</dd>
+<dd><code>uri</code> - URI of the image</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the decoded bitmap</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code> - if decoding fails.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html" target="_top">Frames</a></li>
+<li><a href="SkiaImageDecoder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html
new file mode 100644
index 0000000..455c994
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html
@@ -0,0 +1,402 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>SkiaImageRegionDecoder (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SkiaImageRegionDecoder (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" target="_top">Frames</a></li>
+<li><a href="SkiaImageRegionDecoder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview.decoder</div>
+<h2 title="Class SkiaImageRegionDecoder" class="title">Class SkiaImageRegionDecoder</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>com.davemorrissey.labs.subscaleview.decoder.SkiaImageRegionDecoder</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public class <span class="typeNameLabel">SkiaImageRegionDecoder</span>
+extends <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></pre>
+<div class="block">Default implementation of <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageRegionDecoder</code></a>
+ using Android's <a href="https://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html?is-external=true" title="class or interface in android.graphics"><code>BitmapRegionDecoder</code></a>, based on the Skia library. This
+ works well in most circumstances and has reasonable performance due to the cached decoder instance,
+ however it has some problems with grayscale, indexed and CMYK images.
+
+ A <a href="https://developer.android.com/reference/java/util/concurrent/locks/ReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks"><code>ReadWriteLock</code></a> is used to delegate responsibility for multi threading behaviour to the
+ <a href="https://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html?is-external=true" title="class or interface in android.graphics"><code>BitmapRegionDecoder</code></a> instance on SDK &gt;= 21, whilst allowing this class to block until no
+ tiles are being loaded before recycling the decoder. In practice, <a href="https://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html?is-external=true" title="class or interface in android.graphics"><code>BitmapRegionDecoder</code></a> is
+ synchronized internally so this has no real impact on performance.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html#SkiaImageRegionDecoder--">SkiaImageRegionDecoder</a></span>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html#SkiaImageRegionDecoder-android.graphics.Bitmap.Config-">SkiaImageRegionDecoder</a></span>(<a href="https://developer.android.com/reference/android/graphics/Bitmap.Config.html?is-external=true" title="class or interface in android.graphics">Bitmap.Config</a>&nbsp;bitmapConfig)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/Bitmap.html?is-external=true" title="class or interface in android.graphics">Bitmap</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html#decodeRegion-android.graphics.Rect-int-">decodeRegion</a></span>(<a href="https://developer.android.com/reference/android/graphics/Rect.html?is-external=true" title="class or interface in android.graphics">Rect</a>&nbsp;sRect,
+            int&nbsp;sampleSize)</code>
+<div class="block">
+ Decode a region of the image with the given sample size.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/Point.html?is-external=true" title="class or interface in android.graphics">Point</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html#init-android.content.Context-android.net.Uri-">init</a></span>(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
+    <a href="https://developer.android.com/reference/android/net/Uri.html?is-external=true" title="class or interface in android.net">Uri</a>&nbsp;uri)</code>
+<div class="block">Initialise the decoder.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html#isReady--">isReady</a></span>()</code>
+<div class="block">Status check.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html#recycle--">recycle</a></span>()</code>
+<div class="block">This method will be called when the decoder is no longer required.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="SkiaImageRegionDecoder--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>SkiaImageRegionDecoder</h4>
+<pre>public&nbsp;SkiaImageRegionDecoder()</pre>
+</li>
+</ul>
+<a name="SkiaImageRegionDecoder-android.graphics.Bitmap.Config-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>SkiaImageRegionDecoder</h4>
+<pre>public&nbsp;SkiaImageRegionDecoder(<a href="https://developer.android.com/reference/android/graphics/Bitmap.Config.html?is-external=true" title="class or interface in android.graphics">Bitmap.Config</a>&nbsp;bitmapConfig)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="init-android.content.Context-android.net.Uri-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>init</h4>
+<pre>public&nbsp;<a href="https://developer.android.com/reference/android/graphics/Point.html?is-external=true" title="class or interface in android.graphics">Point</a>&nbsp;init(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
+                  <a href="https://developer.android.com/reference/android/net/Uri.html?is-external=true" title="class or interface in android.net">Uri</a>&nbsp;uri)
+           throws <a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#init-android.content.Context-android.net.Uri-">ImageRegionDecoder</a></code></span></div>
+<div class="block">Initialise the decoder. When possible, perform initial setup work once in this method. The
+ dimensions of the image must be returned. The URI can be in one of the following formats:
+ <br>
+ File: <code>file:///scard/picture.jpg</code>
+ <br>
+ Asset: <code>file:///android_asset/picture.png</code>
+ <br>
+ Resource: <code>android.resource://com.example.app/drawable/picture</code></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#init-android.content.Context-android.net.Uri-">init</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>context</code> - Application context. A reference may be held, but must be cleared on recycle.</dd>
+<dd><code>uri</code> - URI of the image.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>Dimensions of the image.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code> - if initialisation fails.</dd>
+</dl>
+</li>
+</ul>
+<a name="decodeRegion-android.graphics.Rect-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>decodeRegion</h4>
+<pre>public&nbsp;<a href="https://developer.android.com/reference/android/graphics/Bitmap.html?is-external=true" title="class or interface in android.graphics">Bitmap</a>&nbsp;decodeRegion(<a href="https://developer.android.com/reference/android/graphics/Rect.html?is-external=true" title="class or interface in android.graphics">Rect</a>&nbsp;sRect,
+                           int&nbsp;sampleSize)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#decodeRegion-android.graphics.Rect-int-">ImageRegionDecoder</a></code></span></div>
+<div class="block"><p>
+ Decode a region of the image with the given sample size. This method is called off the UI
+ thread so it can safely load the image on the current thread. It is called from
+ <a href="https://developer.android.com/reference/android/os/AsyncTask.html?is-external=true" title="class or interface in android.os"><code>AsyncTask</code></a>s running in an executor that may have multiple threads, so
+ implementations must be thread safe. Adding <code>synchronized</code> to the method signature
+ is the simplest way to achieve this, but bear in mind the <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#recycle--"><code>ImageRegionDecoder.recycle()</code></a> method can be
+ called concurrently.
+ </p><p>
+ See <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><code>SkiaImageRegionDecoder</code></a> and <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><code>SkiaPooledImageRegionDecoder</code></a> for examples of
+ internal locking and synchronization.
+ </p></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#decodeRegion-android.graphics.Rect-int-">decodeRegion</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>sRect</code> - Source image rectangle to decode.</dd>
+<dd><code>sampleSize</code> - Sample size.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The decoded region. It is safe to return null if decoding fails.</dd>
+</dl>
+</li>
+</ul>
+<a name="isReady--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isReady</h4>
+<pre>public&nbsp;boolean&nbsp;isReady()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#isReady--">ImageRegionDecoder</a></code></span></div>
+<div class="block">Status check. Should return false before initialisation and after recycle.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#isReady--">isReady</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if the decoder is ready to be used.</dd>
+</dl>
+</li>
+</ul>
+<a name="recycle--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>recycle</h4>
+<pre>public&nbsp;void&nbsp;recycle()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#recycle--">ImageRegionDecoder</a></code></span></div>
+<div class="block">This method will be called when the decoder is no longer required. It should clean up any resources still in use.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#recycle--">recycle</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" target="_top">Frames</a></li>
+<li><a href="SkiaImageRegionDecoder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html
new file mode 100644
index 0000000..5eb294e
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html
@@ -0,0 +1,445 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>SkiaPooledImageRegionDecoder (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SkiaPooledImageRegionDecoder (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":9};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li>Next&nbsp;Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" target="_top">Frames</a></li>
+<li><a href="SkiaPooledImageRegionDecoder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">com.davemorrissey.labs.subscaleview.decoder</div>
+<h2 title="Class SkiaPooledImageRegionDecoder" class="title">Class SkiaPooledImageRegionDecoder</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>com.davemorrissey.labs.subscaleview.decoder.SkiaPooledImageRegionDecoder</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public class <span class="typeNameLabel">SkiaPooledImageRegionDecoder</span>
+extends <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></pre>
+<div class="block"><p>
+ An implementation of <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageRegionDecoder</code></a> using a pool of <a href="https://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html?is-external=true" title="class or interface in android.graphics"><code>BitmapRegionDecoder</code></a>s,
+ to provide true parallel loading of tiles. This is only effective if parallel loading has been
+ enabled in the view by calling <a href="../../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setExecutor-java.util.concurrent.Executor-"><code>SubsamplingScaleImageView.setExecutor(Executor)</code></a>
+ with a multi-threaded <a href="https://developer.android.com/reference/java/util/concurrent/Executor.html?is-external=true" title="class or interface in java.util.concurrent"><code>Executor</code></a> instance.
+ </p><p>
+ One decoder is initialised when the class is initialised. This is enough to decode base layer tiles.
+ Additional decoders are initialised when a subregion of the image is first requested, which indicates
+ interaction with the view. Creation of additional encoders stops when <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#allowAdditionalDecoder-int-long-"><code>allowAdditionalDecoder(int, long)</code></a>
+ returns false. The default implementation takes into account the file size, number of CPU cores,
+ low memory status and a hard limit of 4. Extend this class to customise this.
+ </p><p>
+ <b>WARNING:</b> This class is highly experimental and not proven to be stable on a wide range of
+ devices. You are advised to test it thoroughly on all available devices, and code your app to use
+ <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><code>SkiaImageRegionDecoder</code></a> on old or low powered devices you could not test.
+ </p></div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#SkiaPooledImageRegionDecoder--">SkiaPooledImageRegionDecoder</a></span>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#SkiaPooledImageRegionDecoder-android.graphics.Bitmap.Config-">SkiaPooledImageRegionDecoder</a></span>(<a href="https://developer.android.com/reference/android/graphics/Bitmap.Config.html?is-external=true" title="class or interface in android.graphics">Bitmap.Config</a>&nbsp;bitmapConfig)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#allowAdditionalDecoder-int-long-">allowAdditionalDecoder</a></span>(int&nbsp;numberOfDecoders,
+                      long&nbsp;fileLength)</code>
+<div class="block">Called before creating a new decoder.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/Bitmap.html?is-external=true" title="class or interface in android.graphics">Bitmap</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#decodeRegion-android.graphics.Rect-int-">decodeRegion</a></span>(<a href="https://developer.android.com/reference/android/graphics/Rect.html?is-external=true" title="class or interface in android.graphics">Rect</a>&nbsp;sRect,
+            int&nbsp;sampleSize)</code>
+<div class="block">Acquire a read lock to prevent decoding overlapping with recycling, then check the pool still
+ exists and acquire a decoder to load the requested region.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code><a href="https://developer.android.com/reference/android/graphics/Point.html?is-external=true" title="class or interface in android.graphics">Point</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#init-android.content.Context-android.net.Uri-">init</a></span>(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
+    <a href="https://developer.android.com/reference/android/net/Uri.html?is-external=true" title="class or interface in android.net">Uri</a>&nbsp;uri)</code>
+<div class="block">Initialises the decoder pool.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#isReady--">isReady</a></span>()</code>
+<div class="block">Holding a read lock to avoid returning true while the pool is being recycled, this returns
+ true if the pool has at least one decoder available.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#recycle--">recycle</a></span>()</code>
+<div class="block">Wait until all read locks held by <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#decodeRegion-android.graphics.Rect-int-"><code>decodeRegion(Rect, int)</code></a> are released, then recycle
+ and destroy the pool.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#setDebug-boolean-">setDebug</a></span>(boolean&nbsp;debug)</code>
+<div class="block">Controls logging of debug messages.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="SkiaPooledImageRegionDecoder--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>SkiaPooledImageRegionDecoder</h4>
+<pre>public&nbsp;SkiaPooledImageRegionDecoder()</pre>
+</li>
+</ul>
+<a name="SkiaPooledImageRegionDecoder-android.graphics.Bitmap.Config-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>SkiaPooledImageRegionDecoder</h4>
+<pre>public&nbsp;SkiaPooledImageRegionDecoder(<a href="https://developer.android.com/reference/android/graphics/Bitmap.Config.html?is-external=true" title="class or interface in android.graphics">Bitmap.Config</a>&nbsp;bitmapConfig)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="setDebug-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDebug</h4>
+<pre>public static&nbsp;void&nbsp;setDebug(boolean&nbsp;debug)</pre>
+<div class="block">Controls logging of debug messages. All instances are affected.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>debug</code> - true to enable debug logging, false to disable.</dd>
+</dl>
+</li>
+</ul>
+<a name="init-android.content.Context-android.net.Uri-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>init</h4>
+<pre>public&nbsp;<a href="https://developer.android.com/reference/android/graphics/Point.html?is-external=true" title="class or interface in android.graphics">Point</a>&nbsp;init(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
+                  <a href="https://developer.android.com/reference/android/net/Uri.html?is-external=true" title="class or interface in android.net">Uri</a>&nbsp;uri)
+           throws <a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<div class="block">Initialises the decoder pool. This method creates one decoder on the current thread and uses
+ it to decode the bounds, then spawns an independent thread to populate the pool with an
+ additional three decoders. The thread will abort if <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#recycle--"><code>recycle()</code></a> is called.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#init-android.content.Context-android.net.Uri-">init</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>context</code> - Application context. A reference may be held, but must be cleared on recycle.</dd>
+<dd><code>uri</code> - URI of the image.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>Dimensions of the image.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://developer.android.com/reference/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code> - if initialisation fails.</dd>
+</dl>
+</li>
+</ul>
+<a name="decodeRegion-android.graphics.Rect-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>decodeRegion</h4>
+<pre>public&nbsp;<a href="https://developer.android.com/reference/android/graphics/Bitmap.html?is-external=true" title="class or interface in android.graphics">Bitmap</a>&nbsp;decodeRegion(<a href="https://developer.android.com/reference/android/graphics/Rect.html?is-external=true" title="class or interface in android.graphics">Rect</a>&nbsp;sRect,
+                           int&nbsp;sampleSize)</pre>
+<div class="block">Acquire a read lock to prevent decoding overlapping with recycling, then check the pool still
+ exists and acquire a decoder to load the requested region. There is no check whether the pool
+ currently has decoders, because it's guaranteed to have one decoder after <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#init-android.content.Context-android.net.Uri-"><code>init(Context, Uri)</code></a>
+ is called and be null once <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#recycle--"><code>recycle()</code></a> is called. In practice the view can't call this
+ method until after <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#init-android.content.Context-android.net.Uri-"><code>init(Context, Uri)</code></a>, so there will be no blocking on an empty pool.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#decodeRegion-android.graphics.Rect-int-">decodeRegion</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>sRect</code> - Source image rectangle to decode.</dd>
+<dd><code>sampleSize</code> - Sample size.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The decoded region. It is safe to return null if decoding fails.</dd>
+</dl>
+</li>
+</ul>
+<a name="isReady--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isReady</h4>
+<pre>public&nbsp;boolean&nbsp;isReady()</pre>
+<div class="block">Holding a read lock to avoid returning true while the pool is being recycled, this returns
+ true if the pool has at least one decoder available.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#isReady--">isReady</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if the decoder is ready to be used.</dd>
+</dl>
+</li>
+</ul>
+<a name="recycle--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>recycle</h4>
+<pre>public&nbsp;void&nbsp;recycle()</pre>
+<div class="block">Wait until all read locks held by <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#decodeRegion-android.graphics.Rect-int-"><code>decodeRegion(Rect, int)</code></a> are released, then recycle
+ and destroy the pool. Elsewhere, when a read lock is acquired, we must check the pool is not null.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#recycle--">recycle</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="allowAdditionalDecoder-int-long-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>allowAdditionalDecoder</h4>
+<pre>protected&nbsp;boolean&nbsp;allowAdditionalDecoder(int&nbsp;numberOfDecoders,
+                                         long&nbsp;fileLength)</pre>
+<div class="block">Called before creating a new decoder. Based on number of CPU cores, available memory, and the
+ size of the image file, determines whether another decoder can be created. Subclasses can
+ override and customise this.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>numberOfDecoders</code> - the number of decoders that have been created so far</dd>
+<dd><code>fileLength</code> - the size of the image file in bytes. Creating another decoder will use approximately this much native memory.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if another decoder can be created.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li>Next&nbsp;Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" target="_top">Frames</a></li>
+<li><a href="SkiaPooledImageRegionDecoder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/package-frame.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/package-frame.html
new file mode 100644
index 0000000..e824cf3
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/package-frame.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>com.davemorrissey.labs.subscaleview.decoder (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<h1 class="bar"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/package-summary.html" target="classFrame">com.davemorrissey.labs.subscaleview.decoder</a></h1>
+<div class="indexContainer">
+<h2 title="Interfaces">Interfaces</h2>
+<ul title="Interfaces">
+<li><a href="DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder" target="classFrame"><span class="interfaceName">DecoderFactory</span></a></li>
+<li><a href="ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder" target="classFrame"><span class="interfaceName">ImageDecoder</span></a></li>
+<li><a href="ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder" target="classFrame"><span class="interfaceName">ImageRegionDecoder</span></a></li>
+</ul>
+<h2 title="Classes">Classes</h2>
+<ul title="Classes">
+<li><a href="CompatDecoderFactory.html" title="class in com.davemorrissey.labs.subscaleview.decoder" target="classFrame">CompatDecoderFactory</a></li>
+<li><a href="SkiaImageDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder" target="classFrame">SkiaImageDecoder</a></li>
+<li><a href="SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder" target="classFrame">SkiaImageRegionDecoder</a></li>
+<li><a href="SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder" target="classFrame">SkiaPooledImageRegionDecoder</a></li>
+</ul>
+</div>
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/package-summary.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/package-summary.html
new file mode 100644
index 0000000..1fefa75
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/package-summary.html
@@ -0,0 +1,194 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>com.davemorrissey.labs.subscaleview.decoder (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="com.davemorrissey.labs.subscaleview.decoder (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li class="navBarCell1Rev">Package</li>
+<li>Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/package-summary.html">Prev&nbsp;Package</a></li>
+<li>Next&nbsp;Package</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/package-summary.html" target="_top">Frames</a></li>
+<li><a href="package-summary.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Package" class="title">Package&nbsp;com.davemorrissey.labs.subscaleview.decoder</h1>
+</div>
+<div class="contentContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Interface Summary table, listing interfaces, and an explanation">
+<caption><span>Interface Summary</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Interface</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">DecoderFactory</a>&lt;T&gt;</td>
+<td class="colLast">
+<div class="block">Interface for <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageDecoder</code></a> and <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageRegionDecoder</code></a> factories.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageDecoder</a></td>
+<td class="colLast">
+<div class="block">Interface for image decoding classes, allowing the default <a href="https://developer.android.com/reference/android/graphics/BitmapFactory.html?is-external=true" title="class or interface in android.graphics"><code>BitmapFactory</code></a>
+ based on the Skia library to be replaced with a custom class.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></td>
+<td class="colLast">
+<div class="block">Interface for image decoding classes, allowing the default <a href="https://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html?is-external=true" title="class or interface in android.graphics"><code>BitmapRegionDecoder</code></a>
+ based on the Skia library to be replaced with a custom class.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
+<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Class</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="class in com.davemorrissey.labs.subscaleview.decoder">CompatDecoderFactory</a>&lt;T&gt;</td>
+<td class="colLast">
+<div class="block">Compatibility factory to instantiate decoders with empty public constructors.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaImageDecoder</a></td>
+<td class="colLast">
+<div class="block">Default implementation of <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageDecoder</code></a>
+ using Android's <a href="https://developer.android.com/reference/android/graphics/BitmapFactory.html?is-external=true" title="class or interface in android.graphics"><code>BitmapFactory</code></a>, based on the Skia library.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaImageRegionDecoder</a></td>
+<td class="colLast">
+<div class="block">Default implementation of <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageRegionDecoder</code></a>
+ using Android's <a href="https://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html?is-external=true" title="class or interface in android.graphics"><code>BitmapRegionDecoder</code></a>, based on the Skia library.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaPooledImageRegionDecoder</a></td>
+<td class="colLast">
+<div class="block">
+ An implementation of <a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageRegionDecoder</code></a> using a pool of <a href="https://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html?is-external=true" title="class or interface in android.graphics"><code>BitmapRegionDecoder</code></a>s,
+ to provide true parallel loading of tiles.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li class="navBarCell1Rev">Package</li>
+<li>Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/package-summary.html">Prev&nbsp;Package</a></li>
+<li>Next&nbsp;Package</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/package-summary.html" target="_top">Frames</a></li>
+<li><a href="package-summary.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/package-tree.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/package-tree.html
new file mode 100644
index 0000000..0c02afe
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/decoder/package-tree.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>com.davemorrissey.labs.subscaleview.decoder Class Hierarchy (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="com.davemorrissey.labs.subscaleview.decoder Class Hierarchy (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/package-tree.html">Prev</a></li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/package-tree.html" target="_top">Frames</a></li>
+<li><a href="package-tree.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">Hierarchy For Package com.davemorrissey.labs.subscaleview.decoder</h1>
+<span class="packageHierarchyLabel">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<div class="contentContainer">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Object</span></a>
+<ul>
+<li type="circle">com.davemorrissey.labs.subscaleview.decoder.<a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">CompatDecoderFactory</span></a>&lt;T&gt; (implements com.davemorrissey.labs.subscaleview.decoder.<a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">DecoderFactory</a>&lt;T&gt;)</li>
+<li type="circle">com.davemorrissey.labs.subscaleview.decoder.<a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">SkiaImageDecoder</span></a> (implements com.davemorrissey.labs.subscaleview.decoder.<a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageDecoder</a>)</li>
+<li type="circle">com.davemorrissey.labs.subscaleview.decoder.<a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">SkiaImageRegionDecoder</span></a> (implements com.davemorrissey.labs.subscaleview.decoder.<a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a>)</li>
+<li type="circle">com.davemorrissey.labs.subscaleview.decoder.<a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">SkiaPooledImageRegionDecoder</span></a> (implements com.davemorrissey.labs.subscaleview.decoder.<a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a>)</li>
+</ul>
+</li>
+</ul>
+<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
+<ul>
+<li type="circle">com.davemorrissey.labs.subscaleview.decoder.<a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">DecoderFactory</span></a>&lt;T&gt;</li>
+<li type="circle">com.davemorrissey.labs.subscaleview.decoder.<a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">ImageDecoder</span></a></li>
+<li type="circle">com.davemorrissey.labs.subscaleview.decoder.<a href="../../../../../com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">ImageRegionDecoder</span></a></li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../com/davemorrissey/labs/subscaleview/package-tree.html">Prev</a></li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?com/davemorrissey/labs/subscaleview/decoder/package-tree.html" target="_top">Frames</a></li>
+<li><a href="package-tree.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/package-frame.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/package-frame.html
new file mode 100644
index 0000000..dc8cdd0
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/package-frame.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>com.davemorrissey.labs.subscaleview (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<h1 class="bar"><a href="../../../../com/davemorrissey/labs/subscaleview/package-summary.html" target="classFrame">com.davemorrissey.labs.subscaleview</a></h1>
+<div class="indexContainer">
+<h2 title="Interfaces">Interfaces</h2>
+<ul title="Interfaces">
+<li><a href="SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview" target="classFrame"><span class="interfaceName">SubsamplingScaleImageView.OnAnimationEventListener</span></a></li>
+<li><a href="SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview" target="classFrame"><span class="interfaceName">SubsamplingScaleImageView.OnImageEventListener</span></a></li>
+<li><a href="SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview" target="classFrame"><span class="interfaceName">SubsamplingScaleImageView.OnStateChangedListener</span></a></li>
+</ul>
+<h2 title="Classes">Classes</h2>
+<ul title="Classes">
+<li><a href="ImageSource.html" title="class in com.davemorrissey.labs.subscaleview" target="classFrame">ImageSource</a></li>
+<li><a href="ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview" target="classFrame">ImageViewState</a></li>
+<li><a href="SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview" target="classFrame">SubsamplingScaleImageView</a></li>
+<li><a href="SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview" target="classFrame">SubsamplingScaleImageView.DefaultOnAnimationEventListener</a></li>
+<li><a href="SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview" target="classFrame">SubsamplingScaleImageView.DefaultOnImageEventListener</a></li>
+<li><a href="SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview" target="classFrame">SubsamplingScaleImageView.DefaultOnStateChangedListener</a></li>
+</ul>
+</div>
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/package-summary.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/package-summary.html
new file mode 100644
index 0000000..8b8d758
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/package-summary.html
@@ -0,0 +1,202 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>com.davemorrissey.labs.subscaleview (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="com.davemorrissey.labs.subscaleview (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li class="navBarCell1Rev">Package</li>
+<li>Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev&nbsp;Package</li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/decoder/package-summary.html">Next&nbsp;Package</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/package-summary.html" target="_top">Frames</a></li>
+<li><a href="package-summary.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Package" class="title">Package&nbsp;com.davemorrissey.labs.subscaleview</h1>
+</div>
+<div class="contentContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Interface Summary table, listing interfaces, and an explanation">
+<caption><span>Interface Summary</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Interface</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnAnimationEventListener</a></td>
+<td class="colLast">
+<div class="block">An event listener for animations, allows events to be triggered when an animation completes,
+ is aborted by another animation starting, or is aborted by a touch event.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a></td>
+<td class="colLast">
+<div class="block">An event listener, allowing subclasses and activities to be notified of significant events.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnStateChangedListener</a></td>
+<td class="colLast">
+<div class="block">An event listener, allowing activities to be notified of pan and zoom events.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
+<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Class</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></td>
+<td class="colLast">
+<div class="block">Helper class used to set the source and additional attributes from a variety of sources.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview">ImageViewState</a></td>
+<td class="colLast">
+<div class="block">Wraps the scale, center and orientation of a displayed image for easy restoration on screen rotate.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></td>
+<td class="colLast">
+<div class="block">
+ Displays an image subsampled as necessary to avoid loading too much image data into memory.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnAnimationEventListener</a></td>
+<td class="colLast">
+<div class="block">Default implementation of <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.OnAnimationEventListener</code></a> for extension.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnImageEventListener</a></td>
+<td class="colLast">
+<div class="block">Default implementation of <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.OnImageEventListener</code></a> for extension.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnStateChangedListener</a></td>
+<td class="colLast">
+<div class="block">Default implementation of <a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.OnStateChangedListener</code></a>.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li class="navBarCell1Rev">Package</li>
+<li>Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev&nbsp;Package</li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/decoder/package-summary.html">Next&nbsp;Package</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/package-summary.html" target="_top">Frames</a></li>
+<li><a href="package-summary.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/com/davemorrissey/labs/subscaleview/package-tree.html b/docs/javadoc/com/davemorrissey/labs/subscaleview/package-tree.html
new file mode 100644
index 0000000..67ce13c
--- /dev/null
+++ b/docs/javadoc/com/davemorrissey/labs/subscaleview/package-tree.html
@@ -0,0 +1,150 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>com.davemorrissey.labs.subscaleview Class Hierarchy (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="com.davemorrissey.labs.subscaleview Class Hierarchy (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/decoder/package-tree.html">Next</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/package-tree.html" target="_top">Frames</a></li>
+<li><a href="package-tree.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">Hierarchy For Package com.davemorrissey.labs.subscaleview</h1>
+<span class="packageHierarchyLabel">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<div class="contentContainer">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Object</span></a>
+<ul>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="../../../../com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">ImageSource</span></a></li>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="../../../../com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">ImageViewState</span></a> (implements java.io.<a href="https://developer.android.com/reference/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)</li>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.AnimationBuilder</span></a></li>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.DefaultOnAnimationEventListener</span></a> (implements com.davemorrissey.labs.subscaleview.<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnAnimationEventListener</a>)</li>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.DefaultOnImageEventListener</span></a> (implements com.davemorrissey.labs.subscaleview.<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a>)</li>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.DefaultOnStateChangedListener</span></a> (implements com.davemorrissey.labs.subscaleview.<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnStateChangedListener</a>)</li>
+<li type="circle">android.view.<a href="https://developer.android.com/reference/android/view/View.html?is-external=true" title="class or interface in android.view"><span class="typeNameLink">View</span></a> (implements android.view.accessibility.<a href="https://developer.android.com/reference/android/view/accessibility/AccessibilityEventSource.html?is-external=true" title="class or interface in android.view.accessibility">AccessibilityEventSource</a>, android.graphics.drawable.<a href="https://developer.android.com/reference/android/graphics/drawable/Drawable.Callback.html?is-external=true" title="class or interface in android.graphics.drawable">Drawable.Callback</a>, android.view.<a href="https://developer.android.com/reference/android/view/KeyEvent.Callback.html?is-external=true" title="class or interface in android.view">KeyEvent.Callback</a>)
+<ul>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
+<ul>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.OnAnimationEventListener</span></a></li>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.OnImageEventListener</span></a></li>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="../../../../com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.OnStateChangedListener</span></a></li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li><a href="../../../../com/davemorrissey/labs/subscaleview/decoder/package-tree.html">Next</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?com/davemorrissey/labs/subscaleview/package-tree.html" target="_top">Frames</a></li>
+<li><a href="package-tree.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/constant-values.html b/docs/javadoc/constant-values.html
new file mode 100644
index 0000000..3f4b782
--- /dev/null
+++ b/docs/javadoc/constant-values.html
@@ -0,0 +1,290 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>Constant Field Values (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Constant Field Values (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?constant-values.html" target="_top">Frames</a></li>
+<li><a href="constant-values.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Constant Field Values" class="title">Constant Field Values</h1>
+<h2 title="Contents">Contents</h2>
+<ul>
+<li><a href="#com.davemorrissey">com.davemorrissey.*</a></li>
+</ul>
+</div>
+<div class="constantValuesContainer"><a name="com.davemorrissey">
+<!--   -->
+</a>
+<h2 title="com.davemorrissey">com.davemorrissey.*</h2>
+<ul class="blockList">
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.EASE_IN_OUT_QUAD">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#EASE_IN_OUT_QUAD">EASE_IN_OUT_QUAD</a></code></td>
+<td class="colLast"><code>2</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.EASE_OUT_QUAD">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#EASE_OUT_QUAD">EASE_OUT_QUAD</a></code></td>
+<td class="colLast"><code>1</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIENTATION_0">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIENTATION_0">ORIENTATION_0</a></code></td>
+<td class="colLast"><code>0</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIENTATION_180">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIENTATION_180">ORIENTATION_180</a></code></td>
+<td class="colLast"><code>180</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIENTATION_270">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIENTATION_270">ORIENTATION_270</a></code></td>
+<td class="colLast"><code>270</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIENTATION_90">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIENTATION_90">ORIENTATION_90</a></code></td>
+<td class="colLast"><code>90</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIENTATION_USE_EXIF">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIENTATION_USE_EXIF">ORIENTATION_USE_EXIF</a></code></td>
+<td class="colLast"><code>-1</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIGIN_ANIM">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_ANIM">ORIGIN_ANIM</a></code></td>
+<td class="colLast"><code>1</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIGIN_DOUBLE_TAP_ZOOM">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_DOUBLE_TAP_ZOOM">ORIGIN_DOUBLE_TAP_ZOOM</a></code></td>
+<td class="colLast"><code>4</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIGIN_FLING">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_FLING">ORIGIN_FLING</a></code></td>
+<td class="colLast"><code>3</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ORIGIN_TOUCH">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_TOUCH">ORIGIN_TOUCH</a></code></td>
+<td class="colLast"><code>2</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.PAN_LIMIT_CENTER">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#PAN_LIMIT_CENTER">PAN_LIMIT_CENTER</a></code></td>
+<td class="colLast"><code>3</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.PAN_LIMIT_INSIDE">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#PAN_LIMIT_INSIDE">PAN_LIMIT_INSIDE</a></code></td>
+<td class="colLast"><code>1</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.PAN_LIMIT_OUTSIDE">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#PAN_LIMIT_OUTSIDE">PAN_LIMIT_OUTSIDE</a></code></td>
+<td class="colLast"><code>2</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SCALE_TYPE_CENTER_CROP">SCALE_TYPE_CENTER_CROP</a></code></td>
+<td class="colLast"><code>2</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.SCALE_TYPE_CENTER_INSIDE">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SCALE_TYPE_CENTER_INSIDE">SCALE_TYPE_CENTER_INSIDE</a></code></td>
+<td class="colLast"><code>1</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.SCALE_TYPE_CUSTOM">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SCALE_TYPE_CUSTOM">SCALE_TYPE_CUSTOM</a></code></td>
+<td class="colLast"><code>3</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.SCALE_TYPE_START">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SCALE_TYPE_START">SCALE_TYPE_START</a></code></td>
+<td class="colLast"><code>4</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ZOOM_FOCUS_CENTER">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ZOOM_FOCUS_CENTER">ZOOM_FOCUS_CENTER</a></code></td>
+<td class="colLast"><code>2</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ZOOM_FOCUS_CENTER_IMMEDIATE">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ZOOM_FOCUS_CENTER_IMMEDIATE">ZOOM_FOCUS_CENTER_IMMEDIATE</a></code></td>
+<td class="colLast"><code>3</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.ZOOM_FOCUS_FIXED">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ZOOM_FOCUS_FIXED">ZOOM_FOCUS_FIXED</a></code></td>
+<td class="colLast"><code>1</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?constant-values.html" target="_top">Frames</a></li>
+<li><a href="constant-values.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/deprecated-list.html b/docs/javadoc/deprecated-list.html
new file mode 100644
index 0000000..d058444
--- /dev/null
+++ b/docs/javadoc/deprecated-list.html
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>Deprecated List (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Deprecated List (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li class="navBarCell1Rev">Deprecated</li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?deprecated-list.html" target="_top">Frames</a></li>
+<li><a href="deprecated-list.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Deprecated API" class="title">Deprecated API</h1>
+<h2 title="Contents">Contents</h2>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li class="navBarCell1Rev">Deprecated</li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?deprecated-list.html" target="_top">Frames</a></li>
+<li><a href="deprecated-list.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/help-doc.html b/docs/javadoc/help-doc.html
new file mode 100644
index 0000000..b5b1861
--- /dev/null
+++ b/docs/javadoc/help-doc.html
@@ -0,0 +1,222 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>API Help (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="API Help (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li class="navBarCell1Rev">Help</li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?help-doc.html" target="_top">Frames</a></li>
+<li><a href="help-doc.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">How This API Document Is Organized</h1>
+<div class="subTitle">This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.</div>
+</div>
+<div class="contentContainer">
+<ul class="blockList">
+<li class="blockList">
+<h2>Overview</h2>
+<p>The <a href="overview-summary.html">Overview</a> page is the front page of this API document and provides a list of all packages with a summary for each.  This page can also contain an overall description of the set of packages.</p>
+</li>
+<li class="blockList">
+<h2>Package</h2>
+<p>Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:</p>
+<ul>
+<li>Interfaces (italic)</li>
+<li>Classes</li>
+<li>Enums</li>
+<li>Exceptions</li>
+<li>Errors</li>
+<li>Annotation Types</li>
+</ul>
+</li>
+<li class="blockList">
+<h2>Class/Interface</h2>
+<p>Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:</p>
+<ul>
+<li>Class inheritance diagram</li>
+<li>Direct Subclasses</li>
+<li>All Known Subinterfaces</li>
+<li>All Known Implementing Classes</li>
+<li>Class/interface declaration</li>
+<li>Class/interface description</li>
+</ul>
+<ul>
+<li>Nested Class Summary</li>
+<li>Field Summary</li>
+<li>Constructor Summary</li>
+<li>Method Summary</li>
+</ul>
+<ul>
+<li>Field Detail</li>
+<li>Constructor Detail</li>
+<li>Method Detail</li>
+</ul>
+<p>Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.</p>
+</li>
+<li class="blockList">
+<h2>Annotation Type</h2>
+<p>Each annotation type has its own separate page with the following sections:</p>
+<ul>
+<li>Annotation Type declaration</li>
+<li>Annotation Type description</li>
+<li>Required Element Summary</li>
+<li>Optional Element Summary</li>
+<li>Element Detail</li>
+</ul>
+</li>
+<li class="blockList">
+<h2>Enum</h2>
+<p>Each enum has its own separate page with the following sections:</p>
+<ul>
+<li>Enum declaration</li>
+<li>Enum description</li>
+<li>Enum Constant Summary</li>
+<li>Enum Constant Detail</li>
+</ul>
+</li>
+<li class="blockList">
+<h2>Tree (Class Hierarchy)</h2>
+<p>There is a <a href="overview-tree.html">Class Hierarchy</a> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with <code>java.lang.Object</code>. The interfaces do not inherit from <code>java.lang.Object</code>.</p>
+<ul>
+<li>When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.</li>
+<li>When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.</li>
+</ul>
+</li>
+<li class="blockList">
+<h2>Deprecated API</h2>
+<p>The <a href="deprecated-list.html">Deprecated API</a> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</p>
+</li>
+<li class="blockList">
+<h2>Index</h2>
+<p>The <a href="index-all.html">Index</a> contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.</p>
+</li>
+<li class="blockList">
+<h2>Prev/Next</h2>
+<p>These links take you to the next or previous class, interface, package, or related page.</p>
+</li>
+<li class="blockList">
+<h2>Frames/No Frames</h2>
+<p>These links show and hide the HTML frames.  All pages are available with or without frames.</p>
+</li>
+<li class="blockList">
+<h2>All Classes</h2>
+<p>The <a href="allclasses-noframe.html">All Classes</a> link shows all classes and interfaces except non-static nested types.</p>
+</li>
+<li class="blockList">
+<h2>Serialized Form</h2>
+<p>Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.</p>
+</li>
+<li class="blockList">
+<h2>Constant Field Values</h2>
+<p>The <a href="constant-values.html">Constant Field Values</a> page lists the static final fields and their values.</p>
+</li>
+</ul>
+<span class="emphasizedPhrase">This help file applies to API documentation generated using the standard doclet.</span></div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li class="navBarCell1Rev">Help</li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?help-doc.html" target="_top">Frames</a></li>
+<li><a href="help-doc.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/index-all.html b/docs/javadoc/index-all.html
new file mode 100644
index 0000000..d390e51
--- /dev/null
+++ b/docs/javadoc/index-all.html
@@ -0,0 +1,943 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>Index (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Index (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li class="navBarCell1Rev">Index</li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?index-all.html" target="_top">Frames</a></li>
+<li><a href="index-all.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="contentContainer"><a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:D">D</a>&nbsp;<a href="#I:E">E</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:O">O</a>&nbsp;<a href="#I:P">P</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:T">T</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:V">V</a>&nbsp;<a href="#I:W">W</a>&nbsp;<a href="#I:Z">Z</a>&nbsp;<a name="I:A">
+<!--   -->
+</a>
+<h2 class="title">A</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#allowAdditionalDecoder-int-long-">allowAdditionalDecoder(int, long)</a></span> - Method in class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaPooledImageRegionDecoder</a></dt>
+<dd>
+<div class="block">Called before creating a new decoder.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#animateCenter-android.graphics.PointF-">animateCenter(PointF)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Creates a panning animation builder, that when started will animate the image to place the given coordinates of
+ the image in the center of the screen.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#animateScale-float-">animateScale(float)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Creates a scale animation builder, that when started will animate a zoom in or out.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#animateScaleAndCenter-float-android.graphics.PointF-">animateScaleAndCenter(float, PointF)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Creates a scale animation builder, that when started will animate a zoom in or out.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#asset-java.lang.String-">asset(String)</a></span> - Static method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>
+<div class="block">Create an instance from an asset name.</div>
+</dd>
+</dl>
+<a name="I:B">
+<!--   -->
+</a>
+<h2 class="title">B</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#bitmap-android.graphics.Bitmap-">bitmap(Bitmap)</a></span> - Static method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>
+<div class="block">Provide a loaded bitmap for display.</div>
+</dd>
+</dl>
+<a name="I:C">
+<!--   -->
+</a>
+<h2 class="title">C</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#cachedBitmap-android.graphics.Bitmap-">cachedBitmap(Bitmap)</a></span> - Static method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>
+<div class="block">Provide a loaded and cached bitmap for display.</div>
+</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/package-summary.html">com.davemorrissey.labs.subscaleview</a> - package com.davemorrissey.labs.subscaleview</dt>
+<dd>&nbsp;</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/decoder/package-summary.html">com.davemorrissey.labs.subscaleview.decoder</a> - package com.davemorrissey.labs.subscaleview.decoder</dt>
+<dd>&nbsp;</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">CompatDecoderFactory</span></a>&lt;<a href="com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="type parameter in CompatDecoderFactory">T</a>&gt; - Class in <a href="com/davemorrissey/labs/subscaleview/decoder/package-summary.html">com.davemorrissey.labs.subscaleview.decoder</a></dt>
+<dd>
+<div class="block">Compatibility factory to instantiate decoders with empty public constructors.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html#CompatDecoderFactory-java.lang.Class-">CompatDecoderFactory(Class&lt;? extends T&gt;)</a></span> - Constructor for class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="class in com.davemorrissey.labs.subscaleview.decoder">CompatDecoderFactory</a></dt>
+<dd>
+<div class="block">Construct a factory for the given class.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html#CompatDecoderFactory-java.lang.Class-android.graphics.Bitmap.Config-">CompatDecoderFactory(Class&lt;? extends T&gt;, Bitmap.Config)</a></span> - Constructor for class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="class in com.davemorrissey.labs.subscaleview.decoder">CompatDecoderFactory</a></dt>
+<dd>
+<div class="block">Construct a factory for the given class.</div>
+</dd>
+</dl>
+<a name="I:D">
+<!--   -->
+</a>
+<h2 class="title">D</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html#decode-android.content.Context-android.net.Uri-">decode(Context, Uri)</a></span> - Method in interface com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageDecoder</a></dt>
+<dd>
+<div class="block">Decode an image.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html#decode-android.content.Context-android.net.Uri-">decode(Context, Uri)</a></span> - Method in class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaImageDecoder</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#decodeRegion-android.graphics.Rect-int-">decodeRegion(Rect, int)</a></span> - Method in interface com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></dt>
+<dd>
+<div class="block">
+ Decode a region of the image with the given sample size.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html#decodeRegion-android.graphics.Rect-int-">decodeRegion(Rect, int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaImageRegionDecoder</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#decodeRegion-android.graphics.Rect-int-">decodeRegion(Rect, int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaPooledImageRegionDecoder</a></dt>
+<dd>
+<div class="block">Acquire a read lock to prevent decoding overlapping with recycling, then check the pool still
+ exists and acquire a decoder to load the requested region.</div>
+</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">DecoderFactory</span></a>&lt;<a href="com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="type parameter in DecoderFactory">T</a>&gt; - Interface in <a href="com/davemorrissey/labs/subscaleview/decoder/package-summary.html">com.davemorrissey.labs.subscaleview.decoder</a></dt>
+<dd>
+<div class="block">Interface for <a href="com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageDecoder</code></a> and <a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageRegionDecoder</code></a> factories.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html#DefaultOnAnimationEventListener--">DefaultOnAnimationEventListener()</a></span> - Constructor for class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnAnimationEventListener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html#DefaultOnImageEventListener--">DefaultOnImageEventListener()</a></span> - Constructor for class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnImageEventListener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html#DefaultOnStateChangedListener--">DefaultOnStateChangedListener()</a></span> - Constructor for class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnStateChangedListener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#dimensions-int-int-">dimensions(int, int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>
+<div class="block">Declare the dimensions of the image.</div>
+</dd>
+</dl>
+<a name="I:E">
+<!--   -->
+</a>
+<h2 class="title">E</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#EASE_IN_OUT_QUAD">EASE_IN_OUT_QUAD</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Quadratic ease in and out.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#EASE_OUT_QUAD">EASE_OUT_QUAD</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Quadratic ease out.</div>
+</dd>
+</dl>
+<a name="I:G">
+<!--   -->
+</a>
+<h2 class="title">G</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getAppliedOrientation--">getAppliedOrientation()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Returns the actual orientation of the image relative to the source file.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#getBitmap--">getBitmap()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageViewState.html#getCenter--">getCenter()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview">ImageViewState</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getCenter--">getCenter()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Returns the source point at the center of the view.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getMaxScale--">getMaxScale()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Returns the maximum allowed scale.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getMinScale--">getMinScale()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Returns the minimum allowed scale.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageViewState.html#getOrientation--">getOrientation()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview">ImageViewState</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getOrientation--">getOrientation()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Returns the orientation setting.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getPanRemaining-android.graphics.RectF-">getPanRemaining(RectF)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Calculate how much further the image can be panned in each direction.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getPreferredBitmapConfig--">getPreferredBitmapConfig()</a></span> - Static method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Get the current preferred configuration for decoding bitmaps.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#getResource--">getResource()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageViewState.html#getScale--">getScale()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview">ImageViewState</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getScale--">getScale()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Returns the current scale value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#getSHeight--">getSHeight()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getSHeight--">getSHeight()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Get source height, ignoring orientation.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#getSRegion--">getSRegion()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getState--">getState()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Get the current state of the view (scale, center, orientation) for restoration after rotate.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#getSWidth--">getSWidth()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#getSWidth--">getSWidth()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Get source width, ignoring orientation.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#getTile--">getTile()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#getUri--">getUri()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<a name="I:H">
+<!--   -->
+</a>
+<h2 class="title">H</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#hasImage--">hasImage()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Check if an image has been set.</div>
+</dd>
+</dl>
+<a name="I:I">
+<!--   -->
+</a>
+<h2 class="title">I</h2>
+<dl>
+<dt><a href="com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">ImageDecoder</span></a> - Interface in <a href="com/davemorrissey/labs/subscaleview/decoder/package-summary.html">com.davemorrissey.labs.subscaleview.decoder</a></dt>
+<dd>
+<div class="block">Interface for image decoding classes, allowing the default <a href="https://developer.android.com/reference/android/graphics/BitmapFactory.html?is-external=true" title="class or interface in android.graphics"><code>BitmapFactory</code></a>
+ based on the Skia library to be replaced with a custom class.</div>
+</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">ImageRegionDecoder</span></a> - Interface in <a href="com/davemorrissey/labs/subscaleview/decoder/package-summary.html">com.davemorrissey.labs.subscaleview.decoder</a></dt>
+<dd>
+<div class="block">Interface for image decoding classes, allowing the default <a href="https://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html?is-external=true" title="class or interface in android.graphics"><code>BitmapRegionDecoder</code></a>
+ based on the Skia library to be replaced with a custom class.</div>
+</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">ImageSource</span></a> - Class in <a href="com/davemorrissey/labs/subscaleview/package-summary.html">com.davemorrissey.labs.subscaleview</a></dt>
+<dd>
+<div class="block">Helper class used to set the source and additional attributes from a variety of sources.</div>
+</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">ImageViewState</span></a> - Class in <a href="com/davemorrissey/labs/subscaleview/package-summary.html">com.davemorrissey.labs.subscaleview</a></dt>
+<dd>
+<div class="block">Wraps the scale, center and orientation of a displayed image for easy restoration on screen rotate.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageViewState.html#ImageViewState-float-android.graphics.PointF-int-">ImageViewState(float, PointF, int)</a></span> - Constructor for class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview">ImageViewState</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#init-android.content.Context-android.net.Uri-">init(Context, Uri)</a></span> - Method in interface com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></dt>
+<dd>
+<div class="block">Initialise the decoder.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html#init-android.content.Context-android.net.Uri-">init(Context, Uri)</a></span> - Method in class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaImageRegionDecoder</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#init-android.content.Context-android.net.Uri-">init(Context, Uri)</a></span> - Method in class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaPooledImageRegionDecoder</a></dt>
+<dd>
+<div class="block">Initialises the decoder pool.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#isCached--">isCached()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#isImageLoaded--">isImageLoaded()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Call to find whether the main image (base layer tiles where relevant) have been loaded.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#isPanEnabled--">isPanEnabled()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Returns true if pan gesture detection is enabled.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#isQuickScaleEnabled--">isQuickScaleEnabled()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Returns true if double tap &amp; swipe to zoom is enabled.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#isReady--">isReady()</a></span> - Method in interface com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></dt>
+<dd>
+<div class="block">Status check.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html#isReady--">isReady()</a></span> - Method in class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaImageRegionDecoder</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#isReady--">isReady()</a></span> - Method in class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaPooledImageRegionDecoder</a></dt>
+<dd>
+<div class="block">Holding a read lock to avoid returning true while the pool is being recycled, this returns
+ true if the pool has at least one decoder available.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#isReady--">isReady()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Call to find whether the view is initialised, has dimensions, and will display an image on
+ the next draw.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#isZoomEnabled--">isZoomEnabled()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Returns true if zoom gesture detection is enabled.</div>
+</dd>
+</dl>
+<a name="I:M">
+<!--   -->
+</a>
+<h2 class="title">M</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html#make--">make()</a></span> - Method in class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="class in com.davemorrissey.labs.subscaleview.decoder">CompatDecoderFactory</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html#make--">make()</a></span> - Method in interface com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">DecoderFactory</a></dt>
+<dd>
+<div class="block">Produce a new instance of a decoder with type <code>T</code>.</div>
+</dd>
+</dl>
+<a name="I:O">
+<!--   -->
+</a>
+<h2 class="title">O</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html#onCenterChanged-android.graphics.PointF-int-">onCenterChanged(PointF, int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnStateChangedListener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html#onCenterChanged-android.graphics.PointF-int-">onCenterChanged(PointF, int)</a></span> - Method in interface com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnStateChangedListener</a></dt>
+<dd>
+<div class="block">The source center has been changed.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html#onComplete--">onComplete()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnAnimationEventListener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html#onComplete--">onComplete()</a></span> - Method in interface com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnAnimationEventListener</a></dt>
+<dd>
+<div class="block">The animation has completed, having reached its endpoint.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#onDraw-android.graphics.Canvas-">onDraw(Canvas)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Draw method should not be called until the view has dimensions so the first calls are used as triggers to calculate
+ the scaling and tiling required.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html#onImageLoaded--">onImageLoaded()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnImageEventListener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onImageLoaded--">onImageLoaded()</a></span> - Method in interface com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a></dt>
+<dd>
+<div class="block">Called when the full size image is ready.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#onImageLoaded--">onImageLoaded()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Called once when the full size image or its base layer tiles have been loaded.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html#onImageLoadError-java.lang.Exception-">onImageLoadError(Exception)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnImageEventListener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onImageLoadError-java.lang.Exception-">onImageLoadError(Exception)</a></span> - Method in interface com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a></dt>
+<dd>
+<div class="block">Indicates an error initiliasing the decoder when using a tiling, or when loading the full
+ size bitmap when tiling is disabled.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html#onInterruptedByNewAnim--">onInterruptedByNewAnim()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnAnimationEventListener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html#onInterruptedByNewAnim--">onInterruptedByNewAnim()</a></span> - Method in interface com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnAnimationEventListener</a></dt>
+<dd>
+<div class="block">The animation has been aborted before reaching its endpoint because a new animation has been started.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html#onInterruptedByUser--">onInterruptedByUser()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnAnimationEventListener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html#onInterruptedByUser--">onInterruptedByUser()</a></span> - Method in interface com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnAnimationEventListener</a></dt>
+<dd>
+<div class="block">The animation has been aborted before reaching its endpoint because the user touched the screen.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#onMeasure-int-int-">onMeasure(int, int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Measures the width and height of the view, preserving the aspect ratio of the image displayed if wrap_content is
+ used.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html#onPreviewLoadError-java.lang.Exception-">onPreviewLoadError(Exception)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnImageEventListener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onPreviewLoadError-java.lang.Exception-">onPreviewLoadError(Exception)</a></span> - Method in interface com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a></dt>
+<dd>
+<div class="block">Called when a preview image could not be loaded.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html#onPreviewReleased--">onPreviewReleased()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnImageEventListener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onPreviewReleased--">onPreviewReleased()</a></span> - Method in interface com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a></dt>
+<dd>
+<div class="block">Called when a bitmap set using ImageSource.cachedBitmap is no longer being used by the View.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html#onReady--">onReady()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnImageEventListener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onReady--">onReady()</a></span> - Method in interface com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a></dt>
+<dd>
+<div class="block">Called when the dimensions of the image and view are known, and either a preview image,
+ the full size image, or base layer tiles are loaded.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#onReady--">onReady()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Called once when the view is initialised, has dimensions, and will display an image on the
+ next draw.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html#onScaleChanged-float-int-">onScaleChanged(float, int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnStateChangedListener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html#onScaleChanged-float-int-">onScaleChanged(float, int)</a></span> - Method in interface com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnStateChangedListener</a></dt>
+<dd>
+<div class="block">The scale has changed.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#onSizeChanged-int-int-int-int-">onSizeChanged(int, int, int, int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">On resize, preserve center and scale.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html#onTileLoadError-java.lang.Exception-">onTileLoadError(Exception)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.DefaultOnImageEventListener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html#onTileLoadError-java.lang.Exception-">onTileLoadError(Exception)</a></span> - Method in interface com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a></dt>
+<dd>
+<div class="block">Called when an image tile could not be loaded.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#onTouchEvent-android.view.MotionEvent-">onTouchEvent(MotionEvent)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Handle touch events.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIENTATION_0">ORIENTATION_0</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Display the image file in its native orientation.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIENTATION_180">ORIENTATION_180</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Rotate the image 180 degrees.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIENTATION_270">ORIENTATION_270</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Rotate the image 270 degrees clockwise.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIENTATION_90">ORIENTATION_90</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Rotate the image 90 degrees clockwise.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIENTATION_USE_EXIF">ORIENTATION_USE_EXIF</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Attempt to use EXIF information on the image to rotate it.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_ANIM">ORIGIN_ANIM</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">State change originated from animation.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_DOUBLE_TAP_ZOOM">ORIGIN_DOUBLE_TAP_ZOOM</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">State change originated from a double tap zoom anim.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_FLING">ORIGIN_FLING</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">State change originated from a fling momentum anim.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ORIGIN_TOUCH">ORIGIN_TOUCH</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">State change originated from touch gesture.</div>
+</dd>
+</dl>
+<a name="I:P">
+<!--   -->
+</a>
+<h2 class="title">P</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#PAN_LIMIT_CENTER">PAN_LIMIT_CENTER</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Allows the image to be panned until a corner reaches the center of the screen but no further.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#PAN_LIMIT_INSIDE">PAN_LIMIT_INSIDE</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Don't allow the image to be panned off screen.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#PAN_LIMIT_OUTSIDE">PAN_LIMIT_OUTSIDE</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Allows the image to be panned until it is just off screen, but no further.</div>
+</dd>
+</dl>
+<a name="I:R">
+<!--   -->
+</a>
+<h2 class="title">R</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html#recycle--">recycle()</a></span> - Method in interface com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a></dt>
+<dd>
+<div class="block">This method will be called when the decoder is no longer required.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html#recycle--">recycle()</a></span> - Method in class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaImageRegionDecoder</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#recycle--">recycle()</a></span> - Method in class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaPooledImageRegionDecoder</a></dt>
+<dd>
+<div class="block">Wait until all read locks held by <a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#decodeRegion-android.graphics.Rect-int-"><code>decodeRegion(Rect, int)</code></a> are released, then recycle
+ and destroy the pool.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#recycle--">recycle()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Releases all resources the view is using and resets the state, nulling any fields that use significant memory.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#region-android.graphics.Rect-">region(Rect)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>
+<div class="block">Use a region of the source image.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#resetScaleAndCenter--">resetScaleAndCenter()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Fully zoom out and return the image to the middle of the screen.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#resource-int-">resource(int)</a></span> - Static method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>
+<div class="block">Create an instance from a resource.</div>
+</dd>
+</dl>
+<a name="I:S">
+<!--   -->
+</a>
+<h2 class="title">S</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SCALE_TYPE_CENTER_CROP">SCALE_TYPE_CENTER_CROP</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Scale the image uniformly so that both dimensions of the image will be equal to or larger than the corresponding dimension of the view.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SCALE_TYPE_CENTER_INSIDE">SCALE_TYPE_CENTER_INSIDE</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Scale the image so that both dimensions of the image will be equal to or less than the corresponding dimension of the view.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SCALE_TYPE_CUSTOM">SCALE_TYPE_CUSTOM</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Scale the image so that both dimensions of the image will be equal to or less than the maxScale and equal to or larger than minScale.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SCALE_TYPE_START">SCALE_TYPE_START</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Scale the image so that both dimensions of the image will be equal to or larger than the corresponding dimension of the view.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setBitmapDecoderClass-java.lang.Class-">setBitmapDecoderClass(Class&lt;? extends ImageDecoder&gt;)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Swap the default bitmap decoder implementation for one of your own.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setBitmapDecoderFactory-com.davemorrissey.labs.subscaleview.decoder.DecoderFactory-">setBitmapDecoderFactory(DecoderFactory&lt;? extends ImageDecoder&gt;)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Swap the default bitmap decoder implementation for one of your own.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#setDebug-boolean-">setDebug(boolean)</a></span> - Static method in class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaPooledImageRegionDecoder</a></dt>
+<dd>
+<div class="block">Controls logging of debug messages.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setDebug-boolean-">setDebug(boolean)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Enables visual debugging, showing tile boundaries and sizes.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setDoubleTapZoomDpi-int-">setDoubleTapZoomDpi(int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">A density aware alternative to <a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setDoubleTapZoomScale-float-"><code>SubsamplingScaleImageView.setDoubleTapZoomScale(float)</code></a>; this allows you to express the scale the
+ image will zoom in to when double tapped in terms of the image pixel density.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setDoubleTapZoomDuration-int-">setDoubleTapZoomDuration(int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Set the duration of the double tap zoom animation.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setDoubleTapZoomScale-float-">setDoubleTapZoomScale(float)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Set the scale the image will zoom in to when double tapped.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setDoubleTapZoomStyle-int-">setDoubleTapZoomStyle(int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Set the type of zoom animation to be used for double taps.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setEagerLoadingEnabled-boolean-">setEagerLoadingEnabled(boolean)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Enable or disable eager loading of tiles that appear on screen during gestures or animations,
+ while the gesture or animation is still in progress.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setExecutor-java.util.concurrent.Executor-">setExecutor(Executor)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">
+ Provide an <a href="https://developer.android.com/reference/java/util/concurrent/Executor.html?is-external=true" title="class or interface in java.util.concurrent"><code>Executor</code></a> to be used for loading images.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setImage-com.davemorrissey.labs.subscaleview.ImageSource-">setImage(ImageSource)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Set the image source from a bitmap, resource, asset, file or other URI.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setImage-com.davemorrissey.labs.subscaleview.ImageSource-com.davemorrissey.labs.subscaleview.ImageViewState-">setImage(ImageSource, ImageViewState)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Set the image source from a bitmap, resource, asset, file or other URI, starting with a given orientation
+ setting, scale and center.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setImage-com.davemorrissey.labs.subscaleview.ImageSource-com.davemorrissey.labs.subscaleview.ImageSource-">setImage(ImageSource, ImageSource)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Set the image source from a bitmap, resource, asset, file or other URI, providing a preview image to be
+ displayed until the full size image is loaded.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setImage-com.davemorrissey.labs.subscaleview.ImageSource-com.davemorrissey.labs.subscaleview.ImageSource-com.davemorrissey.labs.subscaleview.ImageViewState-">setImage(ImageSource, ImageSource, ImageViewState)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Set the image source from a bitmap, resource, asset, file or other URI, providing a preview image to be
+ displayed until the full size image is loaded, starting with a given orientation setting, scale and center.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMaximumDpi-int-">setMaximumDpi(int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">This is a screen density aware alternative to <a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMinScale-float-"><code>SubsamplingScaleImageView.setMinScale(float)</code></a>; it allows you to express the minimum
+ allowed scale in terms of the maximum pixel density.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMaxScale-float-">setMaxScale(float)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Set the maximum scale allowed.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMaxTileSize-int-">setMaxTileSize(int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">By default the View automatically calculates the optimal tile size.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMaxTileSize-int-int-">setMaxTileSize(int, int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">By default the View automatically calculates the optimal tile size.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMinimumDpi-int-">setMinimumDpi(int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">This is a screen density aware alternative to <a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMaxScale-float-"><code>SubsamplingScaleImageView.setMaxScale(float)</code></a>; it allows you to express the maximum
+ allowed scale in terms of the minimum pixel density.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMinimumScaleType-int-">setMinimumScaleType(int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Set the minimum scale type.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMinimumTileDpi-int-">setMinimumTileDpi(int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">By default, image tiles are at least as high resolution as the screen.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setMinScale-float-">setMinScale(float)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Set the minimum scale allowed.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setOnImageEventListener-com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.OnImageEventListener-">setOnImageEventListener(SubsamplingScaleImageView.OnImageEventListener)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Add a listener allowing notification of load and error events.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setOnLongClickListener-android.view.View.OnLongClickListener-">setOnLongClickListener(View.OnLongClickListener)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setOnStateChangedListener-com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.OnStateChangedListener-">setOnStateChangedListener(SubsamplingScaleImageView.OnStateChangedListener)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Add a listener for pan and zoom events.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setOrientation-int-">setOrientation(int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Sets the image orientation.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setPanEnabled-boolean-">setPanEnabled(boolean)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Enable or disable pan gesture detection.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setPanLimit-int-">setPanLimit(int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Set the pan limiting style.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setPreferredBitmapConfig-android.graphics.Bitmap.Config-">setPreferredBitmapConfig(Bitmap.Config)</a></span> - Static method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Set a global preferred bitmap config shared by all view instances and applied to new instances
+ initialised after the call is made.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setQuickScaleEnabled-boolean-">setQuickScaleEnabled(boolean)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Enable or disable double tap &amp; swipe to zoom.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setRegionDecoderClass-java.lang.Class-">setRegionDecoderClass(Class&lt;? extends ImageRegionDecoder&gt;)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Swap the default region decoder implementation for one of your own.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setRegionDecoderFactory-com.davemorrissey.labs.subscaleview.decoder.DecoderFactory-">setRegionDecoderFactory(DecoderFactory&lt;? extends ImageRegionDecoder&gt;)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Swap the default region decoder implementation for one of your own.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setScaleAndCenter-float-android.graphics.PointF-">setScaleAndCenter(float, PointF)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Externally change the scale and translation of the source image.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setTileBackgroundColor-int-">setTileBackgroundColor(int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Set a solid color to render behind tiles, useful for displaying transparent PNGs.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#setZoomEnabled-boolean-">setZoomEnabled(boolean)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Enable or disable zoom gesture detection.</div>
+</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">SkiaImageDecoder</span></a> - Class in <a href="com/davemorrissey/labs/subscaleview/decoder/package-summary.html">com.davemorrissey.labs.subscaleview.decoder</a></dt>
+<dd>
+<div class="block">Default implementation of <a href="com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageDecoder</code></a>
+ using Android's <a href="https://developer.android.com/reference/android/graphics/BitmapFactory.html?is-external=true" title="class or interface in android.graphics"><code>BitmapFactory</code></a>, based on the Skia library.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html#SkiaImageDecoder--">SkiaImageDecoder()</a></span> - Constructor for class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaImageDecoder</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html#SkiaImageDecoder-android.graphics.Bitmap.Config-">SkiaImageDecoder(Bitmap.Config)</a></span> - Constructor for class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaImageDecoder</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">SkiaImageRegionDecoder</span></a> - Class in <a href="com/davemorrissey/labs/subscaleview/decoder/package-summary.html">com.davemorrissey.labs.subscaleview.decoder</a></dt>
+<dd>
+<div class="block">Default implementation of <a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageRegionDecoder</code></a>
+ using Android's <a href="https://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html?is-external=true" title="class or interface in android.graphics"><code>BitmapRegionDecoder</code></a>, based on the Skia library.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html#SkiaImageRegionDecoder--">SkiaImageRegionDecoder()</a></span> - Constructor for class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaImageRegionDecoder</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html#SkiaImageRegionDecoder-android.graphics.Bitmap.Config-">SkiaImageRegionDecoder(Bitmap.Config)</a></span> - Constructor for class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaImageRegionDecoder</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">SkiaPooledImageRegionDecoder</span></a> - Class in <a href="com/davemorrissey/labs/subscaleview/decoder/package-summary.html">com.davemorrissey.labs.subscaleview.decoder</a></dt>
+<dd>
+<div class="block">
+ An implementation of <a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><code>ImageRegionDecoder</code></a> using a pool of <a href="https://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html?is-external=true" title="class or interface in android.graphics"><code>BitmapRegionDecoder</code></a>s,
+ to provide true parallel loading of tiles.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#SkiaPooledImageRegionDecoder--">SkiaPooledImageRegionDecoder()</a></span> - Constructor for class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaPooledImageRegionDecoder</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html#SkiaPooledImageRegionDecoder-android.graphics.Bitmap.Config-">SkiaPooledImageRegionDecoder(Bitmap.Config)</a></span> - Constructor for class com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder">SkiaPooledImageRegionDecoder</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#sourceToViewCoord-android.graphics.PointF-">sourceToViewCoord(PointF)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Convert source coordinate to view coordinate.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#sourceToViewCoord-float-float-">sourceToViewCoord(float, float)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Convert source coordinate to view coordinate.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#sourceToViewCoord-android.graphics.PointF-android.graphics.PointF-">sourceToViewCoord(PointF, PointF)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Convert source coordinate to view coordinate.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#sourceToViewCoord-float-float-android.graphics.PointF-">sourceToViewCoord(float, float, PointF)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Convert source coordinate to view coordinate.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html#start--">start()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a></dt>
+<dd>
+<div class="block">Starts the animation.</div>
+</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView</span></a> - Class in <a href="com/davemorrissey/labs/subscaleview/package-summary.html">com.davemorrissey.labs.subscaleview</a></dt>
+<dd>
+<div class="block">
+ Displays an image subsampled as necessary to avoid loading too much image data into memory.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SubsamplingScaleImageView-android.content.Context-android.util.AttributeSet-">SubsamplingScaleImageView(Context, AttributeSet)</a></span> - Constructor for class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#SubsamplingScaleImageView-android.content.Context-">SubsamplingScaleImageView(Context)</a></span> - Constructor for class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.AnimationBuilder</span></a> - Class in <a href="com/davemorrissey/labs/subscaleview/package-summary.html">com.davemorrissey.labs.subscaleview</a></dt>
+<dd>
+<div class="block">Builder class used to set additional options for a scale animation.</div>
+</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.DefaultOnAnimationEventListener</span></a> - Class in <a href="com/davemorrissey/labs/subscaleview/package-summary.html">com.davemorrissey.labs.subscaleview</a></dt>
+<dd>
+<div class="block">Default implementation of <a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.OnAnimationEventListener</code></a> for extension.</div>
+</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.DefaultOnImageEventListener</span></a> - Class in <a href="com/davemorrissey/labs/subscaleview/package-summary.html">com.davemorrissey.labs.subscaleview</a></dt>
+<dd>
+<div class="block">Default implementation of <a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.OnImageEventListener</code></a> for extension.</div>
+</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.DefaultOnStateChangedListener</span></a> - Class in <a href="com/davemorrissey/labs/subscaleview/package-summary.html">com.davemorrissey.labs.subscaleview</a></dt>
+<dd>
+<div class="block">Default implementation of <a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview"><code>SubsamplingScaleImageView.OnStateChangedListener</code></a>.</div>
+</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.OnAnimationEventListener</span></a> - Interface in <a href="com/davemorrissey/labs/subscaleview/package-summary.html">com.davemorrissey.labs.subscaleview</a></dt>
+<dd>
+<div class="block">An event listener for animations, allows events to be triggered when an animation completes,
+ is aborted by another animation starting, or is aborted by a touch event.</div>
+</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.OnImageEventListener</span></a> - Interface in <a href="com/davemorrissey/labs/subscaleview/package-summary.html">com.davemorrissey.labs.subscaleview</a></dt>
+<dd>
+<div class="block">An event listener, allowing subclasses and activities to be notified of significant events.</div>
+</dd>
+<dt><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.OnStateChangedListener</span></a> - Interface in <a href="com/davemorrissey/labs/subscaleview/package-summary.html">com.davemorrissey.labs.subscaleview</a></dt>
+<dd>
+<div class="block">An event listener, allowing activities to be notified of pan and zoom events.</div>
+</dd>
+</dl>
+<a name="I:T">
+<!--   -->
+</a>
+<h2 class="title">T</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#TILE_SIZE_AUTO">TILE_SIZE_AUTO</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#tiling-boolean-">tiling(boolean)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>
+<div class="block">Enable or disable tiling of the image.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#tilingDisabled--">tilingDisabled()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>
+<div class="block">Disable tiling of the image.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#tilingEnabled--">tilingEnabled()</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>
+<div class="block">Enable tiling of the image.</div>
+</dd>
+</dl>
+<a name="I:U">
+<!--   -->
+</a>
+<h2 class="title">U</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#uri-java.lang.String-">uri(String)</a></span> - Static method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>
+<div class="block">Create an instance from a URI.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/ImageSource.html#uri-android.net.Uri-">uri(Uri)</a></span> - Static method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview">ImageSource</a></dt>
+<dd>
+<div class="block">Create an instance from a URI.</div>
+</dd>
+</dl>
+<a name="I:V">
+<!--   -->
+</a>
+<h2 class="title">V</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#viewToFileRect-android.graphics.Rect-android.graphics.Rect-">viewToFileRect(Rect, Rect)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Converts a rectangle within the view to the corresponding rectangle from the source file, taking
+ into account the current scale, translation, orientation and clipped region.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#viewToSourceCoord-android.graphics.PointF-">viewToSourceCoord(PointF)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Convert screen coordinate to source coordinate.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#viewToSourceCoord-float-float-">viewToSourceCoord(float, float)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Convert screen coordinate to source coordinate.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#viewToSourceCoord-android.graphics.PointF-android.graphics.PointF-">viewToSourceCoord(PointF, PointF)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Convert screen coordinate to source coordinate.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#viewToSourceCoord-float-float-android.graphics.PointF-">viewToSourceCoord(float, float, PointF)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Convert screen coordinate to source coordinate.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#visibleFileRect-android.graphics.Rect-">visibleFileRect(Rect)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Find the area of the source file that is currently visible on screen, taking into account the
+ current scale, translation, orientation and clipped region.</div>
+</dd>
+</dl>
+<a name="I:W">
+<!--   -->
+</a>
+<h2 class="title">W</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html#withDuration-long-">withDuration(long)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a></dt>
+<dd>
+<div class="block">Desired duration of the anim in milliseconds.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html#withEasing-int-">withEasing(int)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a></dt>
+<dd>
+<div class="block">Set the easing style.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html#withInterruptible-boolean-">withInterruptible(boolean)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a></dt>
+<dd>
+<div class="block">Whether the animation can be interrupted with a touch.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html#withOnAnimationEventListener-com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.OnAnimationEventListener-">withOnAnimationEventListener(SubsamplingScaleImageView.OnAnimationEventListener)</a></span> - Method in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.AnimationBuilder</a></dt>
+<dd>
+<div class="block">Add an animation event listener.</div>
+</dd>
+</dl>
+<a name="I:Z">
+<!--   -->
+</a>
+<h2 class="title">Z</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ZOOM_FOCUS_CENTER">ZOOM_FOCUS_CENTER</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">During zoom animation, move the point of the image that was tapped to the center of the screen.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ZOOM_FOCUS_CENTER_IMMEDIATE">ZOOM_FOCUS_CENTER_IMMEDIATE</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">Zoom in to and center the tapped point immediately without animating.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html#ZOOM_FOCUS_FIXED">ZOOM_FOCUS_FIXED</a></span> - Static variable in class com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView</a></dt>
+<dd>
+<div class="block">During zoom animation, keep the point of the image that was tapped in the same place, and scale the image around it.</div>
+</dd>
+</dl>
+<a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:D">D</a>&nbsp;<a href="#I:E">E</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:O">O</a>&nbsp;<a href="#I:P">P</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:T">T</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:V">V</a>&nbsp;<a href="#I:W">W</a>&nbsp;<a href="#I:Z">Z</a>&nbsp;</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li class="navBarCell1Rev">Index</li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?index-all.html" target="_top">Frames</a></li>
+<li><a href="index-all.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/index.html b/docs/javadoc/index.html
new file mode 100644
index 0000000..d6722a1
--- /dev/null
+++ b/docs/javadoc/index.html
@@ -0,0 +1,74 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>library 3.9.0 API</title>
+<script type="text/javascript">
+    targetPage = "" + window.location.search;
+    if (targetPage != "" && targetPage != "undefined")
+        targetPage = targetPage.substring(1);
+    if (targetPage.indexOf(":") != -1 || (targetPage != "" && !validURL(targetPage)))
+        targetPage = "undefined";
+    function validURL(url) {
+        try {
+            url = decodeURIComponent(url);
+        }
+        catch (error) {
+            return false;
+        }
+        var pos = url.indexOf(".html");
+        if (pos == -1 || pos != url.length - 5)
+            return false;
+        var allowNumber = false;
+        var allowSep = false;
+        var seenDot = false;
+        for (var i = 0; i < url.length - 5; i++) {
+            var ch = url.charAt(i);
+            if ('a' <= ch && ch <= 'z' ||
+                    'A' <= ch && ch <= 'Z' ||
+                    ch == '$' ||
+                    ch == '_' ||
+                    ch.charCodeAt(0) > 127) {
+                allowNumber = true;
+                allowSep = true;
+            } else if ('0' <= ch && ch <= '9'
+                    || ch == '-') {
+                if (!allowNumber)
+                     return false;
+            } else if (ch == '/' || ch == '.') {
+                if (!allowSep)
+                    return false;
+                allowNumber = false;
+                allowSep = false;
+                if (ch == '.')
+                     seenDot = true;
+                if (ch == '/' && seenDot)
+                     return false;
+            } else {
+                return false;
+            }
+        }
+        return true;
+    }
+    function loadFrames() {
+        if (targetPage != "" && targetPage != "undefined")
+             top.classFrame.location = top.targetPage;
+    }
+</script>
+</head>
+<frameset cols="20%,80%" title="Documentation frame" onload="top.loadFrames()">
+<frameset rows="30%,70%" title="Left frames" onload="top.loadFrames()">
+<frame src="overview-frame.html" name="packageListFrame" title="All Packages">
+<frame src="allclasses-frame.html" name="packageFrame" title="All classes and interfaces (except non-static nested types)">
+</frameset>
+<frame src="overview-summary.html" name="classFrame" title="Package, class and interface descriptions" scrolling="yes">
+<noframes>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<h2>Frame Alert</h2>
+<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p>
+</noframes>
+</frameset>
+</html>
diff --git a/docs/javadoc/overview-frame.html b/docs/javadoc/overview-frame.html
new file mode 100644
index 0000000..6451df0
--- /dev/null
+++ b/docs/javadoc/overview-frame.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>Overview List (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<div class="indexHeader"><span><a href="allclasses-frame.html" target="packageFrame">All&nbsp;Classes</a></span></div>
+<div class="indexContainer">
+<h2 title="Packages">Packages</h2>
+<ul title="Packages">
+<li><a href="com/davemorrissey/labs/subscaleview/package-frame.html" target="packageFrame">com.davemorrissey.labs.subscaleview</a></li>
+<li><a href="com/davemorrissey/labs/subscaleview/decoder/package-frame.html" target="packageFrame">com.davemorrissey.labs.subscaleview.decoder</a></li>
+</ul>
+</div>
+<p>&nbsp;</p>
+</body>
+</html>
diff --git a/docs/javadoc/overview-summary.html b/docs/javadoc/overview-summary.html
new file mode 100644
index 0000000..f6c7ffb
--- /dev/null
+++ b/docs/javadoc/overview-summary.html
@@ -0,0 +1,139 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>Overview (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Overview (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li class="navBarCell1Rev">Overview</li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?overview-summary.html" target="_top">Frames</a></li>
+<li><a href="overview-summary.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">library 3.9.0 API</h1>
+</div>
+<div class="contentContainer">
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Packages table, listing packages, and an explanation">
+<caption><span>Packages</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="com/davemorrissey/labs/subscaleview/package-summary.html">com.davemorrissey.labs.subscaleview</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="com/davemorrissey/labs/subscaleview/decoder/package-summary.html">com.davemorrissey.labs.subscaleview.decoder</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li class="navBarCell1Rev">Overview</li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?overview-summary.html" target="_top">Frames</a></li>
+<li><a href="overview-summary.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/overview-tree.html b/docs/javadoc/overview-tree.html
new file mode 100644
index 0000000..aa89c78
--- /dev/null
+++ b/docs/javadoc/overview-tree.html
@@ -0,0 +1,158 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>Class Hierarchy (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Class Hierarchy (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?overview-tree.html" target="_top">Frames</a></li>
+<li><a href="overview-tree.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">Hierarchy For All Packages</h1>
+<span class="packageHierarchyLabel">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="com/davemorrissey/labs/subscaleview/package-tree.html">com.davemorrissey.labs.subscaleview</a>, </li>
+<li><a href="com/davemorrissey/labs/subscaleview/decoder/package-tree.html">com.davemorrissey.labs.subscaleview.decoder</a></li>
+</ul>
+</div>
+<div class="contentContainer">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Object</span></a>
+<ul>
+<li type="circle">com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">CompatDecoderFactory</span></a>&lt;T&gt; (implements com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">DecoderFactory</a>&lt;T&gt;)</li>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageSource.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">ImageSource</span></a></li>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">ImageViewState</span></a> (implements java.io.<a href="https://developer.android.com/reference/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)</li>
+<li type="circle">com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">SkiaImageDecoder</span></a> (implements com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageDecoder</a>)</li>
+<li type="circle">com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">SkiaImageRegionDecoder</span></a> (implements com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a>)</li>
+<li type="circle">com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.html" title="class in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">SkiaPooledImageRegionDecoder</span></a> (implements com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder">ImageRegionDecoder</a>)</li>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.AnimationBuilder.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.AnimationBuilder</span></a></li>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnAnimationEventListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.DefaultOnAnimationEventListener</span></a> (implements com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnAnimationEventListener</a>)</li>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnImageEventListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.DefaultOnImageEventListener</span></a> (implements com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnImageEventListener</a>)</li>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.DefaultOnStateChangedListener.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.DefaultOnStateChangedListener</span></a> (implements com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview">SubsamplingScaleImageView.OnStateChangedListener</a>)</li>
+<li type="circle">android.view.<a href="https://developer.android.com/reference/android/view/View.html?is-external=true" title="class or interface in android.view"><span class="typeNameLink">View</span></a> (implements android.view.accessibility.<a href="https://developer.android.com/reference/android/view/accessibility/AccessibilityEventSource.html?is-external=true" title="class or interface in android.view.accessibility">AccessibilityEventSource</a>, android.graphics.drawable.<a href="https://developer.android.com/reference/android/graphics/drawable/Drawable.Callback.html?is-external=true" title="class or interface in android.graphics.drawable">Drawable.Callback</a>, android.view.<a href="https://developer.android.com/reference/android/view/KeyEvent.Callback.html?is-external=true" title="class or interface in android.view">KeyEvent.Callback</a>)
+<ul>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.html" title="class in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
+<ul>
+<li type="circle">com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">DecoderFactory</span></a>&lt;T&gt;</li>
+<li type="circle">com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">ImageDecoder</span></a></li>
+<li type="circle">com.davemorrissey.labs.subscaleview.decoder.<a href="com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.html" title="interface in com.davemorrissey.labs.subscaleview.decoder"><span class="typeNameLink">ImageRegionDecoder</span></a></li>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnAnimationEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.OnAnimationEventListener</span></a></li>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnImageEventListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.OnImageEventListener</span></a></li>
+<li type="circle">com.davemorrissey.labs.subscaleview.<a href="com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.OnStateChangedListener.html" title="interface in com.davemorrissey.labs.subscaleview"><span class="typeNameLink">SubsamplingScaleImageView.OnStateChangedListener</span></a></li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?overview-tree.html" target="_top">Frames</a></li>
+<li><a href="overview-tree.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/package-list b/docs/javadoc/package-list
new file mode 100644
index 0000000..b0cb81a
--- /dev/null
+++ b/docs/javadoc/package-list
@@ -0,0 +1,2 @@
+com.davemorrissey.labs.subscaleview
+com.davemorrissey.labs.subscaleview.decoder
diff --git a/docs/javadoc/script.js b/docs/javadoc/script.js
new file mode 100644
index 0000000..b346356
--- /dev/null
+++ b/docs/javadoc/script.js
@@ -0,0 +1,30 @@
+function show(type)
+{
+    count = 0;
+    for (var key in methods) {
+        var row = document.getElementById(key);
+        if ((methods[key] &  type) != 0) {
+            row.style.display = '';
+            row.className = (count++ % 2) ? rowColor : altColor;
+        }
+        else
+            row.style.display = 'none';
+    }
+    updateTabs(type);
+}
+
+function updateTabs(type)
+{
+    for (var value in tabs) {
+        var sNode = document.getElementById(tabs[value][0]);
+        var spanNode = sNode.firstChild;
+        if (value == type) {
+            sNode.className = activeTableTab;
+            spanNode.innerHTML = tabs[value][1];
+        }
+        else {
+            sNode.className = tableTab;
+            spanNode.innerHTML = "<a href=\"javascript:show("+ value + ");\">" + tabs[value][1] + "</a>";
+        }
+    }
+}
diff --git a/docs/javadoc/serialized-form.html b/docs/javadoc/serialized-form.html
new file mode 100644
index 0000000..2bbc3cc
--- /dev/null
+++ b/docs/javadoc/serialized-form.html
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<title>Serialized Form (library 3.9.0 API)</title>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Serialized Form (library 3.9.0 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?serialized-form.html" target="_top">Frames</a></li>
+<li><a href="serialized-form.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Serialized Form" class="title">Serialized Form</h1>
+</div>
+<div class="serializedFormContainer">
+<ul class="blockList">
+<li class="blockList">
+<h2 title="Package">Package&nbsp;com.davemorrissey.labs.subscaleview</h2>
+<ul class="blockList">
+<li class="blockList"><a name="com.davemorrissey.labs.subscaleview.ImageViewState">
+<!--   -->
+</a>
+<h3>Class <a href="com/davemorrissey/labs/subscaleview/ImageViewState.html" title="class in com.davemorrissey.labs.subscaleview">com.davemorrissey.labs.subscaleview.ImageViewState</a> extends <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> implements Serializable</h3>
+<ul class="blockList">
+<li class="blockList">
+<h3>Serialized Fields</h3>
+<ul class="blockList">
+<li class="blockList">
+<h4>scale</h4>
+<pre>float scale</pre>
+</li>
+<li class="blockList">
+<h4>centerX</h4>
+<pre>float centerX</pre>
+</li>
+<li class="blockList">
+<h4>centerY</h4>
+<pre>float centerY</pre>
+</li>
+<li class="blockListLast">
+<h4>orientation</h4>
+<pre>int orientation</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?serialized-form.html" target="_top">Frames</a></li>
+<li><a href="serialized-form.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/docs/javadoc/stylesheet.css b/docs/javadoc/stylesheet.css
new file mode 100644
index 0000000..98055b2
--- /dev/null
+++ b/docs/javadoc/stylesheet.css
@@ -0,0 +1,574 @@
+/* Javadoc style sheet */
+/*
+Overall document style
+*/
+
+@import url('resources/fonts/dejavu.css');
+
+body {
+    background-color:#ffffff;
+    color:#353833;
+    font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
+    font-size:14px;
+    margin:0;
+}
+a:link, a:visited {
+    text-decoration:none;
+    color:#4A6782;
+}
+a:hover, a:focus {
+    text-decoration:none;
+    color:#bb7a2a;
+}
+a:active {
+    text-decoration:none;
+    color:#4A6782;
+}
+a[name] {
+    color:#353833;
+}
+a[name]:hover {
+    text-decoration:none;
+    color:#353833;
+}
+pre {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+}
+h1 {
+    font-size:20px;
+}
+h2 {
+    font-size:18px;
+}
+h3 {
+    font-size:16px;
+    font-style:italic;
+}
+h4 {
+    font-size:13px;
+}
+h5 {
+    font-size:12px;
+}
+h6 {
+    font-size:11px;
+}
+ul {
+    list-style-type:disc;
+}
+code, tt {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+    padding-top:4px;
+    margin-top:8px;
+    line-height:1.4em;
+}
+dt code {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+    padding-top:4px;
+}
+table tr td dt code {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+    vertical-align:top;
+    padding-top:4px;
+}
+sup {
+    font-size:8px;
+}
+/*
+Document title and Copyright styles
+*/
+.clear {
+    clear:both;
+    height:0px;
+    overflow:hidden;
+}
+.aboutLanguage {
+    float:right;
+    padding:0px 21px;
+    font-size:11px;
+    z-index:200;
+    margin-top:-9px;
+}
+.legalCopy {
+    margin-left:.5em;
+}
+.bar a, .bar a:link, .bar a:visited, .bar a:active {
+    color:#FFFFFF;
+    text-decoration:none;
+}
+.bar a:hover, .bar a:focus {
+    color:#bb7a2a;
+}
+.tab {
+    background-color:#0066FF;
+    color:#ffffff;
+    padding:8px;
+    width:5em;
+    font-weight:bold;
+}
+/*
+Navigation bar styles
+*/
+.bar {
+    background-color:#4D7A97;
+    color:#FFFFFF;
+    padding:.8em .5em .4em .8em;
+    height:auto;/*height:1.8em;*/
+    font-size:11px;
+    margin:0;
+}
+.topNav {
+    background-color:#4D7A97;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+    font-size:12px; 
+}
+.bottomNav {
+    margin-top:10px;
+    background-color:#4D7A97;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+    font-size:12px;
+}
+.subNav {
+    background-color:#dee3e9;
+    float:left;
+    width:100%;
+    overflow:hidden;
+    font-size:12px;
+}
+.subNav div {
+    clear:left;
+    float:left;
+    padding:0 0 5px 6px;
+    text-transform:uppercase;
+}
+ul.navList, ul.subNavList {
+    float:left;
+    margin:0 25px 0 0;
+    padding:0;
+}
+ul.navList li{
+    list-style:none;
+    float:left;
+    padding: 5px 6px;
+    text-transform:uppercase;
+}
+ul.subNavList li{
+    list-style:none;
+    float:left;
+}
+.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
+    color:#FFFFFF;
+    text-decoration:none;
+    text-transform:uppercase;
+}
+.topNav a:hover, .bottomNav a:hover {
+    text-decoration:none;
+    color:#bb7a2a;
+    text-transform:uppercase;
+}
+.navBarCell1Rev {
+    background-color:#F8981D;
+    color:#253441;
+    margin: auto 5px;
+}
+.skipNav {
+    position:absolute;
+    top:auto;
+    left:-9999px;
+    overflow:hidden;
+}
+/*
+Page header and footer styles
+*/
+.header, .footer {
+    clear:both;
+    margin:0 20px;
+    padding:5px 0 0 0;
+}
+.indexHeader {
+    margin:10px;
+    position:relative;
+}
+.indexHeader span{
+    margin-right:15px;
+}
+.indexHeader h1 {
+    font-size:13px;
+}
+.title {
+    color:#2c4557;
+    margin:10px 0;
+}
+.subTitle {
+    margin:5px 0 0 0;
+}
+.header ul {
+    margin:0 0 15px 0;
+    padding:0;
+}
+.footer ul {
+    margin:20px 0 5px 0;
+}
+.header ul li, .footer ul li {
+    list-style:none;
+    font-size:13px;
+}
+/*
+Heading styles
+*/
+div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
+    background-color:#dee3e9;
+    border:1px solid #d0d9e0;
+    margin:0 0 6px -8px;
+    padding:7px 5px;
+}
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+    background-color:#dee3e9;
+    border:1px solid #d0d9e0;
+    margin:0 0 6px -8px;
+    padding:7px 5px;
+}
+ul.blockList ul.blockList li.blockList h3 {
+    padding:0;
+    margin:15px 0;
+}
+ul.blockList li.blockList h2 {
+    padding:0px 0 20px 0;
+}
+/*
+Page layout container styles
+*/
+.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {
+    clear:both;
+    padding:10px 20px;
+    position:relative;
+}
+.indexContainer {
+    margin:10px;
+    position:relative;
+    font-size:12px;
+}
+.indexContainer h2 {
+    font-size:13px;
+    padding:0 0 3px 0;
+}
+.indexContainer ul {
+    margin:0;
+    padding:0;
+}
+.indexContainer ul li {
+    list-style:none;
+    padding-top:2px;
+}
+.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
+    font-size:12px;
+    font-weight:bold;
+    margin:10px 0 0 0;
+    color:#4E4E4E;
+}
+.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
+    margin:5px 0 10px 0px;
+    font-size:14px;
+    font-family:'DejaVu Sans Mono',monospace;
+}
+.serializedFormContainer dl.nameValue dt {
+    margin-left:1px;
+    font-size:1.1em;
+    display:inline;
+    font-weight:bold;
+}
+.serializedFormContainer dl.nameValue dd {
+    margin:0 0 0 1px;
+    font-size:1.1em;
+    display:inline;
+}
+/*
+List styles
+*/
+ul.horizontal li {
+    display:inline;
+    font-size:0.9em;
+}
+ul.inheritance {
+    margin:0;
+    padding:0;
+}
+ul.inheritance li {
+    display:inline;
+    list-style:none;
+}
+ul.inheritance li ul.inheritance {
+    margin-left:15px;
+    padding-left:15px;
+    padding-top:1px;
+}
+ul.blockList, ul.blockListLast {
+    margin:10px 0 10px 0;
+    padding:0;
+}
+ul.blockList li.blockList, ul.blockListLast li.blockList {
+    list-style:none;
+    margin-bottom:15px;
+    line-height:1.4;
+}
+ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
+    padding:0px 20px 5px 10px;
+    border:1px solid #ededed; 
+    background-color:#f8f8f8;
+}
+ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
+    padding:0 0 5px 8px;
+    background-color:#ffffff;
+    border:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
+    margin-left:0;
+    padding-left:0;
+    padding-bottom:15px;
+    border:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
+    list-style:none;
+    border-bottom:none;
+    padding-bottom:0;
+}
+table tr td dl, table tr td dl dt, table tr td dl dd {
+    margin-top:0;
+    margin-bottom:1px;
+}
+/*
+Table styles
+*/
+.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary {
+    width:100%;
+    border-left:1px solid #EEE; 
+    border-right:1px solid #EEE; 
+    border-bottom:1px solid #EEE; 
+}
+.overviewSummary, .memberSummary  {
+    padding:0px;
+}
+.overviewSummary caption, .memberSummary caption, .typeSummary caption,
+.useSummary caption, .constantsSummary caption, .deprecatedSummary caption {
+    position:relative;
+    text-align:left;
+    background-repeat:no-repeat;
+    color:#253441;
+    font-weight:bold;
+    clear:none;
+    overflow:hidden;
+    padding:0px;
+    padding-top:10px;
+    padding-left:1px;
+    margin:0px;
+    white-space:pre;
+}
+.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
+.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link,
+.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
+.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
+.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
+.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active,
+.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
+.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited {
+    color:#FFFFFF;
+}
+.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
+.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span {
+    white-space:nowrap;
+    padding-top:5px;
+    padding-left:12px;
+    padding-right:12px;
+    padding-bottom:7px;
+    display:inline-block;
+    float:left;
+    background-color:#F8981D;
+    border: none;
+    height:16px;
+}
+.memberSummary caption span.activeTableTab span {
+    white-space:nowrap;
+    padding-top:5px;
+    padding-left:12px;
+    padding-right:12px;
+    margin-right:3px;
+    display:inline-block;
+    float:left;
+    background-color:#F8981D;
+    height:16px;
+}
+.memberSummary caption span.tableTab span {
+    white-space:nowrap;
+    padding-top:5px;
+    padding-left:12px;
+    padding-right:12px;
+    margin-right:3px;
+    display:inline-block;
+    float:left;
+    background-color:#4D7A97;
+    height:16px;
+}
+.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab {
+    padding-top:0px;
+    padding-left:0px;
+    padding-right:0px;
+    background-image:none;
+    float:none;
+    display:inline;
+}
+.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
+.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd {
+    display:none;
+    width:5px;
+    position:relative;
+    float:left;
+    background-color:#F8981D;
+}
+.memberSummary .activeTableTab .tabEnd {
+    display:none;
+    width:5px;
+    margin-right:3px;
+    position:relative; 
+    float:left;
+    background-color:#F8981D;
+}
+.memberSummary .tableTab .tabEnd {
+    display:none;
+    width:5px;
+    margin-right:3px;
+    position:relative;
+    background-color:#4D7A97;
+    float:left;
+
+}
+.overviewSummary td, .memberSummary td, .typeSummary td,
+.useSummary td, .constantsSummary td, .deprecatedSummary td {
+    text-align:left;
+    padding:0px 0px 12px 10px;
+}
+th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th,
+td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{
+    vertical-align:top;
+    padding-right:0px;
+    padding-top:8px;
+    padding-bottom:3px;
+}
+th.colFirst, th.colLast, th.colOne, .constantsSummary th {
+    background:#dee3e9;
+    text-align:left;
+    padding:8px 3px 3px 7px;
+}
+td.colFirst, th.colFirst {
+    white-space:nowrap;
+    font-size:13px;
+}
+td.colLast, th.colLast {
+    font-size:13px;
+}
+td.colOne, th.colOne {
+    font-size:13px;
+}
+.overviewSummary td.colFirst, .overviewSummary th.colFirst,
+.useSummary td.colFirst, .useSummary th.colFirst,
+.overviewSummary td.colOne, .overviewSummary th.colOne,
+.memberSummary td.colFirst, .memberSummary th.colFirst,
+.memberSummary td.colOne, .memberSummary th.colOne,
+.typeSummary td.colFirst{
+    width:25%;
+    vertical-align:top;
+}
+td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {
+    font-weight:bold;
+}
+.tableSubHeadingColor {
+    background-color:#EEEEFF;
+}
+.altColor {
+    background-color:#FFFFFF;
+}
+.rowColor {
+    background-color:#EEEEEF;
+}
+/*
+Content styles
+*/
+.description pre {
+    margin-top:0;
+}
+.deprecatedContent {
+    margin:0;
+    padding:10px 0;
+}
+.docSummary {
+    padding:0;
+}
+
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+    font-style:normal;
+}
+
+div.block {
+    font-size:14px;
+    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+}
+
+td.colLast div {
+    padding-top:0px;
+}
+
+
+td.colLast a {
+    padding-bottom:3px;
+}
+/*
+Formatting effect styles
+*/
+.sourceLineNo {
+    color:green;
+    padding:0 30px 0 0;
+}
+h1.hidden {
+    visibility:hidden;
+    overflow:hidden;
+    font-size:10px;
+}
+.block {
+    display:block;
+    margin:3px 10px 2px 0px;
+    color:#474747;
+}
+.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink,
+.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel,
+.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink {
+    font-weight:bold;
+}
+.deprecationComment, .emphasizedPhrase, .interfaceName {
+    font-style:italic;
+}
+
+div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase,
+div.block div.block span.interfaceName {
+    font-style:normal;
+}
+
+div.contentContainer ul.blockList li.blockList h2{
+    padding-bottom:0px;
+}
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..aac7c9b
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx1536m
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..27768f1
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..590f0e8
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.3-all.zip
diff --git a/gradlew b/gradlew
new file mode 100755
index 0000000..cccdd3d
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+    echo "$*"
+}
+
+die () {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+  NONSTOP* )
+    nonstop=true
+    ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Escape application args
+save () {
+    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+    echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+  cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..e95643d
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem  Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/library/build.gradle b/library/build.gradle
new file mode 100644
index 0000000..f83d595
--- /dev/null
+++ b/library/build.gradle
@@ -0,0 +1,37 @@
+apply plugin: 'com.android.library'
+
+group = 'com.davemorrissey.labs'
+archivesBaseName = 'subsampling-scale-image-view'
+version = '3.9.0'
+
+android {
+    compileSdkVersion 27
+
+    defaultConfig {
+        consumerProguardFiles 'proguard-rules.txt'
+    }
+}
+
+configurations {
+    javadocs
+}
+
+dependencies {
+    javadocs 'com.android.support:support-annotations:27.0.2'
+    javadocs 'com.android.support:exifinterface:27.0.2'
+    implementation 'com.android.support:support-annotations:27.0.2'
+    implementation 'com.android.support:exifinterface:27.0.2'
+}
+
+task javadoc(type: Javadoc) {
+    failOnError false
+    source = android.sourceSets.main.java.sourceFiles
+    destinationDir = rootProject.file("docs/javadoc")
+    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
+    classpath += configurations.compile
+    classpath += configurations.javadocs
+    options.noTimestamp = true
+    options.links = ['https://developer.android.com/reference/']
+}
+
+apply from: rootProject.file('release.gradle')
diff --git a/library/proguard-rules.txt b/library/proguard-rules.txt
new file mode 100644
index 0000000..d6e07af
--- /dev/null
+++ b/library/proguard-rules.txt
@@ -0,0 +1 @@
+-keep class com.davemorrissey.labs.subscaleview.** { *; }
diff --git a/library/src/main/AndroidManifest.xml b/library/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..203f218
--- /dev/null
+++ b/library/src/main/AndroidManifest.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.davemorrissey.labs.subscaleview"
+          android:versionCode="1"
+          android:versionName="1.0">
+    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="27"/>
+</manifest>
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/ImageSource.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/ImageSource.java
new file mode 100644
index 0000000..de818ca
--- /dev/null
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/ImageSource.java
@@ -0,0 +1,244 @@
+package com.davemorrissey.labs.subscaleview;
+
+import android.graphics.Bitmap;
+import android.graphics.Rect;
+import android.net.Uri;
+
+import java.io.File;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+
+/**
+ * Helper class used to set the source and additional attributes from a variety of sources. Supports
+ * use of a bitmap, asset, resource, external file or any other URI.
+ *
+ * When you are using a preview image, you must set the dimensions of the full size image on the
+ * ImageSource object for the full size image using the {@link #dimensions(int, int)} method.
+ */
+@SuppressWarnings({"unused", "WeakerAccess"})
+public final class ImageSource {
+
+    static final String FILE_SCHEME = "file:///";
+    static final String ASSET_SCHEME = "file:///android_asset/";
+
+    private final Uri uri;
+    private final Bitmap bitmap;
+    private final Integer resource;
+    private boolean tile;
+    private int sWidth;
+    private int sHeight;
+    private Rect sRegion;
+    private boolean cached;
+
+    private ImageSource(Bitmap bitmap, boolean cached) {
+        this.bitmap = bitmap;
+        this.uri = null;
+        this.resource = null;
+        this.tile = false;
+        this.sWidth = bitmap.getWidth();
+        this.sHeight = bitmap.getHeight();
+        this.cached = cached;
+    }
+
+    private ImageSource(Uri uri) {
+        // #114 If file doesn't exist, attempt to url decode the URI and try again
+        String uriString = uri.toString();
+        if (uriString.startsWith(FILE_SCHEME)) {
+            File uriFile = new File(uriString.substring(FILE_SCHEME.length() - 1));
+            if (!uriFile.exists()) {
+                try {
+                    uri = Uri.parse(URLDecoder.decode(uriString, "UTF-8"));
+                } catch (UnsupportedEncodingException e) {
+                    // Fallback to encoded URI. This exception is not expected.
+                }
+            }
+        }
+        this.bitmap = null;
+        this.uri = uri;
+        this.resource = null;
+        this.tile = true;
+    }
+
+    private ImageSource(int resource) {
+        this.bitmap = null;
+        this.uri = null;
+        this.resource = resource;
+        this.tile = true;
+    }
+
+    /**
+     * Create an instance from a resource. The correct resource for the device screen resolution will be used.
+     * @param resId resource ID.
+     * @return an {@link ImageSource} instance.
+     */
+    public static ImageSource resource(int resId) {
+        return new ImageSource(resId);
+    }
+
+    /**
+     * Create an instance from an asset name.
+     * @param assetName asset name.
+     * @return an {@link ImageSource} instance.
+     */
+    public static ImageSource asset(String assetName) {
+        if (assetName == null) {
+            throw new NullPointerException("Asset name must not be null");
+        }
+        return uri(ASSET_SCHEME + assetName);
+    }
+
+    /**
+     * Create an instance from a URI. If the URI does not start with a scheme, it's assumed to be the URI
+     * of a file.
+     * @param uri image URI.
+     * @return an {@link ImageSource} instance.
+     */
+    public static ImageSource uri(String uri) {
+        if (uri == null) {
+            throw new NullPointerException("Uri must not be null");
+        }
+        if (!uri.contains("://")) {
+            if (uri.startsWith("/")) {
+                uri = uri.substring(1);
+            }
+            uri = FILE_SCHEME + uri;
+        }
+        return new ImageSource(Uri.parse(uri));
+    }
+
+    /**
+     * Create an instance from a URI.
+     * @param uri image URI.
+     * @return an {@link ImageSource} instance.
+     */
+    public static ImageSource uri(Uri uri) {
+        if (uri == null) {
+            throw new NullPointerException("Uri must not be null");
+        }
+        return new ImageSource(uri);
+    }
+
+    /**
+     * Provide a loaded bitmap for display.
+     * @param bitmap bitmap to be displayed.
+     * @return an {@link ImageSource} instance.
+     */
+    public static ImageSource bitmap(Bitmap bitmap) {
+        if (bitmap == null) {
+            throw new NullPointerException("Bitmap must not be null");
+        }
+        return new ImageSource(bitmap, false);
+    }
+
+    /**
+     * Provide a loaded and cached bitmap for display. This bitmap will not be recycled when it is no
+     * longer needed. Use this method if you loaded the bitmap with an image loader such as Picasso
+     * or Volley.
+     * @param bitmap bitmap to be displayed.
+     * @return an {@link ImageSource} instance.
+     */
+    public static ImageSource cachedBitmap(Bitmap bitmap) {
+        if (bitmap == null) {
+            throw new NullPointerException("Bitmap must not be null");
+        }
+        return new ImageSource(bitmap, true);
+    }
+
+    /**
+     * Enable tiling of the image. This does not apply to preview images which are always loaded as a single bitmap.,
+     * and tiling cannot be disabled when displaying a region of the source image.
+     * @return this instance for chaining.
+     */
+    public ImageSource tilingEnabled() {
+        return tiling(true);
+    }
+
+    /**
+     * Disable tiling of the image. This does not apply to preview images which are always loaded as a single bitmap,
+     * and tiling cannot be disabled when displaying a region of the source image.
+     * @return this instance for chaining.
+     */
+    public ImageSource tilingDisabled() {
+        return tiling(false);
+    }
+
+    /**
+     * Enable or disable tiling of the image. This does not apply to preview images which are always loaded as a single bitmap,
+     * and tiling cannot be disabled when displaying a region of the source image.
+     * @param tile whether tiling should be enabled.
+     * @return this instance for chaining.
+     */
+    public ImageSource tiling(boolean tile) {
+        this.tile = tile;
+        return this;
+    }
+
+    /**
+     * Use a region of the source image. Region must be set independently for the full size image and the preview if
+     * you are using one.
+     * @param sRegion the region of the source image to be displayed.
+     * @return this instance for chaining.
+     */
+    public ImageSource region(Rect sRegion) {
+        this.sRegion = sRegion;
+        setInvariants();
+        return this;
+    }
+
+    /**
+     * Declare the dimensions of the image. This is only required for a full size image, when you are specifying a URI
+     * and also a preview image. When displaying a bitmap object, or not using a preview, you do not need to declare
+     * the image dimensions. Note if the declared dimensions are found to be incorrect, the view will reset.
+     * @param sWidth width of the source image.
+     * @param sHeight height of the source image.
+     * @return this instance for chaining.
+     */
+    public ImageSource dimensions(int sWidth, int sHeight) {
+        if (bitmap == null) {
+            this.sWidth = sWidth;
+            this.sHeight = sHeight;
+        }
+        setInvariants();
+        return this;
+    }
+
+    private void setInvariants() {
+        if (this.sRegion != null) {
+            this.tile = true;
+            this.sWidth = this.sRegion.width();
+            this.sHeight = this.sRegion.height();
+        }
+    }
+
+    protected final Uri getUri() {
+        return uri;
+    }
+
+    protected final Bitmap getBitmap() {
+        return bitmap;
+    }
+
+    protected final Integer getResource() {
+        return resource;
+    }
+
+    protected final boolean getTile() {
+        return tile;
+    }
+
+    protected final int getSWidth() {
+        return sWidth;
+    }
+
+    protected final int getSHeight() {
+        return sHeight;
+    }
+
+    protected final Rect getSRegion() {
+        return sRegion;
+    }
+
+    protected final boolean isCached() {
+        return cached;
+    }
+}
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/ImageViewState.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/ImageViewState.java
new file mode 100644
index 0000000..a5b8aaf
--- /dev/null
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/ImageViewState.java
@@ -0,0 +1,40 @@
+package com.davemorrissey.labs.subscaleview;
+
+import android.graphics.PointF;
+
+import java.io.Serializable;
+
+/**
+ * Wraps the scale, center and orientation of a displayed image for easy restoration on screen rotate.
+ */
+@SuppressWarnings("WeakerAccess")
+public class ImageViewState implements Serializable {
+
+    private final float scale;
+
+    private final float centerX;
+
+    private final float centerY;
+
+    private final int orientation;
+
+    public ImageViewState(float scale, PointF center, int orientation) {
+        this.scale = scale;
+        this.centerX = center.x;
+        this.centerY = center.y;
+        this.orientation = orientation;
+    }
+
+    public float getScale() {
+        return scale;
+    }
+
+    public PointF getCenter() {
+        return new PointF(centerX, centerY);
+    }
+
+    public int getOrientation() {
+        return orientation;
+    }
+
+}
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java
new file mode 100644
index 0000000..3a1410e
--- /dev/null
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java
@@ -0,0 +1,3205 @@
+package com.davemorrissey.labs.subscaleview;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Matrix;
+import android.graphics.Paint;
+import android.graphics.Paint.Style;
+import android.graphics.Point;
+import android.graphics.PointF;
+import android.graphics.Rect;
+import android.graphics.RectF;
+import android.support.media.ExifInterface;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.os.Handler;
+import android.os.Message;
+import android.provider.MediaStore;
+import android.support.annotation.AnyThread;
+import android.support.annotation.NonNull;
+import android.util.AttributeSet;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.util.TypedValue;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewParent;
+
+import com.davemorrissey.labs.subscaleview.R.styleable;
+import com.davemorrissey.labs.subscaleview.decoder.CompatDecoderFactory;
+import com.davemorrissey.labs.subscaleview.decoder.DecoderFactory;
+import com.davemorrissey.labs.subscaleview.decoder.ImageDecoder;
+import com.davemorrissey.labs.subscaleview.decoder.ImageRegionDecoder;
+import com.davemorrissey.labs.subscaleview.decoder.SkiaImageDecoder;
+import com.davemorrissey.labs.subscaleview.decoder.SkiaImageRegionDecoder;
+
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.concurrent.Executor;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+/**
+ * <p>
+ * Displays an image subsampled as necessary to avoid loading too much image data into memory. After zooming in,
+ * a set of image tiles subsampled at higher resolution are loaded and displayed over the base layer. During pan and
+ * zoom, tiles off screen or higher/lower resolution than required are discarded from memory.
+ * </p><p>
+ * Tiles are no larger than the max supported bitmap size, so with large images tiling may be used even when zoomed out.
+ * </p><p>
+ * v prefixes - coordinates, translations and distances measured in screen (view) pixels
+ * <br>
+ * s prefixes - coordinates, translations and distances measured in rotated and cropped source image pixels (scaled)
+ * <br>
+ * f prefixes - coordinates, translations and distances measured in original unrotated, uncropped source file pixels
+ * </p><p>
+ * <a href="https://github.com/davemorrissey/subsampling-scale-image-view">View project on GitHub</a>
+ * </p>
+ */
+@SuppressWarnings("unused")
+public class SubsamplingScaleImageView extends View {
+
+    private static final String TAG = SubsamplingScaleImageView.class.getSimpleName();
+
+    /** Attempt to use EXIF information on the image to rotate it. Works for external files only. */
+    public static final int ORIENTATION_USE_EXIF = -1;
+    /** Display the image file in its native orientation. */
+    public static final int ORIENTATION_0 = 0;
+    /** Rotate the image 90 degrees clockwise. */
+    public static final int ORIENTATION_90 = 90;
+    /** Rotate the image 180 degrees. */
+    public static final int ORIENTATION_180 = 180;
+    /** Rotate the image 270 degrees clockwise. */
+    public static final int ORIENTATION_270 = 270;
+
+    private static final List<Integer> VALID_ORIENTATIONS = Arrays.asList(ORIENTATION_0, ORIENTATION_90, ORIENTATION_180, ORIENTATION_270, ORIENTATION_USE_EXIF);
+
+    /** During zoom animation, keep the point of the image that was tapped in the same place, and scale the image around it. */
+    public static final int ZOOM_FOCUS_FIXED = 1;
+    /** During zoom animation, move the point of the image that was tapped to the center of the screen. */
+    public static final int ZOOM_FOCUS_CENTER = 2;
+    /** Zoom in to and center the tapped point immediately without animating. */
+    public static final int ZOOM_FOCUS_CENTER_IMMEDIATE = 3;
+
+    private static final List<Integer> VALID_ZOOM_STYLES = Arrays.asList(ZOOM_FOCUS_FIXED, ZOOM_FOCUS_CENTER, ZOOM_FOCUS_CENTER_IMMEDIATE);
+
+    /** Quadratic ease out. Not recommended for scale animation, but good for panning. */
+    public static final int EASE_OUT_QUAD = 1;
+    /** Quadratic ease in and out. */
+    public static final int EASE_IN_OUT_QUAD = 2;
+
+    private static final List<Integer> VALID_EASING_STYLES = Arrays.asList(EASE_IN_OUT_QUAD, EASE_OUT_QUAD);
+
+    /** Don't allow the image to be panned off screen. As much of the image as possible is always displayed, centered in the view when it is smaller. This is the best option for galleries. */
+    public static final int PAN_LIMIT_INSIDE = 1;
+    /** Allows the image to be panned until it is just off screen, but no further. The edge of the image will stop when it is flush with the screen edge. */
+    public static final int PAN_LIMIT_OUTSIDE = 2;
+    /** Allows the image to be panned until a corner reaches the center of the screen but no further. Useful when you want to pan any spot on the image to the exact center of the screen. */
+    public static final int PAN_LIMIT_CENTER = 3;
+
+    private static final List<Integer> VALID_PAN_LIMITS = Arrays.asList(PAN_LIMIT_INSIDE, PAN_LIMIT_OUTSIDE, PAN_LIMIT_CENTER);
+
+    /** Scale the image so that both dimensions of the image will be equal to or less than the corresponding dimension of the view. The image is then centered in the view. This is the default behaviour and best for galleries. */
+    public static final int SCALE_TYPE_CENTER_INSIDE = 1;
+    /** Scale the image uniformly so that both dimensions of the image will be equal to or larger than the corresponding dimension of the view. The image is then centered in the view. */
+    public static final int SCALE_TYPE_CENTER_CROP = 2;
+    /** Scale the image so that both dimensions of the image will be equal to or less than the maxScale and equal to or larger than minScale. The image is then centered in the view. */
+    public static final int SCALE_TYPE_CUSTOM = 3;
+    /** Scale the image so that both dimensions of the image will be equal to or larger than the corresponding dimension of the view. The top left is shown. */
+    public static final int SCALE_TYPE_START = 4;
+
+    private static final List<Integer> VALID_SCALE_TYPES = Arrays.asList(SCALE_TYPE_CENTER_CROP, SCALE_TYPE_CENTER_INSIDE, SCALE_TYPE_CUSTOM, SCALE_TYPE_START);
+
+    /** State change originated from animation. */
+    public static final int ORIGIN_ANIM = 1;
+    /** State change originated from touch gesture. */
+    public static final int ORIGIN_TOUCH = 2;
+    /** State change originated from a fling momentum anim. */
+    public static final int ORIGIN_FLING = 3;
+    /** State change originated from a double tap zoom anim. */
+    public static final int ORIGIN_DOUBLE_TAP_ZOOM = 4;
+
+    // Bitmap (preview or full image)
+    private Bitmap bitmap;
+
+    // Whether the bitmap is a preview image
+    private boolean bitmapIsPreview;
+
+    // Specifies if a cache handler is also referencing the bitmap. Do not recycle if so.
+    private boolean bitmapIsCached;
+
+    // Uri of full size image
+    private Uri uri;
+
+    // Sample size used to display the whole image when fully zoomed out
+    private int fullImageSampleSize;
+
+    // Map of zoom level to tile grid
+    private Map<Integer, List<Tile>> tileMap;
+
+    // Overlay tile boundaries and other info
+    private boolean debug;
+
+    // Image orientation setting
+    private int orientation = ORIENTATION_0;
+
+    // Max scale allowed (prevent infinite zoom)
+    private float maxScale = 2F;
+
+    // Min scale allowed (prevent infinite zoom)
+    private float minScale = minScale();
+
+    // Density to reach before loading higher resolution tiles
+    private int minimumTileDpi = -1;
+
+    // Pan limiting style
+    private int panLimit = PAN_LIMIT_INSIDE;
+
+    // Minimum scale type
+    private int minimumScaleType = SCALE_TYPE_CENTER_INSIDE;
+
+    // overrides for the dimensions of the generated tiles
+    public static final int TILE_SIZE_AUTO = Integer.MAX_VALUE;
+    private int maxTileWidth = TILE_SIZE_AUTO;
+    private int maxTileHeight = TILE_SIZE_AUTO;
+
+    // An executor service for loading of images
+    private Executor executor = AsyncTask.THREAD_POOL_EXECUTOR;
+
+    // Whether tiles should be loaded while gestures and animations are still in progress
+    private boolean eagerLoadingEnabled = true;
+
+    // Gesture detection settings
+    private boolean panEnabled = true;
+    private boolean zoomEnabled = true;
+    private boolean quickScaleEnabled = true;
+
+    // Double tap zoom behaviour
+    private float doubleTapZoomScale = 1F;
+    private int doubleTapZoomStyle = ZOOM_FOCUS_FIXED;
+    private int doubleTapZoomDuration = 500;
+
+    // Current scale and scale at start of zoom
+    private float scale;
+    private float scaleStart;
+
+    // Screen coordinate of top-left corner of source image
+    private PointF vTranslate;
+    private PointF vTranslateStart;
+    private PointF vTranslateBefore;
+
+    // Source coordinate to center on, used when new position is set externally before view is ready
+    private Float pendingScale;
+    private PointF sPendingCenter;
+    private PointF sRequestedCenter;
+
+    // Source image dimensions and orientation - dimensions relate to the unrotated image
+    private int sWidth;
+    private int sHeight;
+    private int sOrientation;
+    private Rect sRegion;
+    private Rect pRegion;
+
+    // Is two-finger zooming in progress
+    private boolean isZooming;
+    // Is one-finger panning in progress
+    private boolean isPanning;
+    // Is quick-scale gesture in progress
+    private boolean isQuickScaling;
+    // Max touches used in current gesture
+    private int maxTouchCount;
+
+    // Fling detector
+    private GestureDetector detector;
+    private GestureDetector singleDetector;
+
+    // Tile and image decoding
+    private ImageRegionDecoder decoder;
+    private final ReadWriteLock decoderLock = new ReentrantReadWriteLock(true);
+    private DecoderFactory<? extends ImageDecoder> bitmapDecoderFactory = new CompatDecoderFactory<ImageDecoder>(SkiaImageDecoder.class);
+    private DecoderFactory<? extends ImageRegionDecoder> regionDecoderFactory = new CompatDecoderFactory<ImageRegionDecoder>(SkiaImageRegionDecoder.class);
+
+    // Debug values
+    private PointF vCenterStart;
+    private float vDistStart;
+
+    // Current quickscale state
+    private final float quickScaleThreshold;
+    private float quickScaleLastDistance;
+    private boolean quickScaleMoved;
+    private PointF quickScaleVLastPoint;
+    private PointF quickScaleSCenter;
+    private PointF quickScaleVStart;
+
+    // Scale and center animation tracking
+    private Anim anim;
+
+    // Whether a ready notification has been sent to subclasses
+    private boolean readySent;
+    // Whether a base layer loaded notification has been sent to subclasses
+    private boolean imageLoadedSent;
+
+    // Event listener
+    private OnImageEventListener onImageEventListener;
+
+    // Scale and center listener
+    private OnStateChangedListener onStateChangedListener;
+
+    // Long click listener
+    private OnLongClickListener onLongClickListener;
+
+    // Long click handler
+    private final Handler handler;
+    private static final int MESSAGE_LONG_CLICK = 1;
+
+    // Paint objects created once and reused for efficiency
+    private Paint bitmapPaint;
+    private Paint debugTextPaint;
+    private Paint debugLinePaint;
+    private Paint tileBgPaint;
+
+    // Volatile fields used to reduce object creation
+    private ScaleAndTranslate satTemp;
+    private Matrix matrix;
+    private RectF sRect;
+    private final float[] srcArray = new float[8];
+    private final float[] dstArray = new float[8];
+
+    //The logical density of the display
+    private final float density;
+
+    // A global preference for bitmap format, available to decoder classes that respect it
+    private static Bitmap.Config preferredBitmapConfig;
+
+    public SubsamplingScaleImageView(Context context, AttributeSet attr) {
+        super(context, attr);
+        density = getResources().getDisplayMetrics().density;
+        setMinimumDpi(160);
+        setDoubleTapZoomDpi(160);
+        setMinimumTileDpi(320);
+        setGestureDetector(context);
+        this.handler = new Handler(new Handler.Callback() {
+            public boolean handleMessage(Message message) {
+                if (message.what == MESSAGE_LONG_CLICK && onLongClickListener != null) {
+                    maxTouchCount = 0;
+                    SubsamplingScaleImageView.super.setOnLongClickListener(onLongClickListener);
+                    performLongClick();
+                    SubsamplingScaleImageView.super.setOnLongClickListener(null);
+                }
+                return true;
+            }
+        });
+        // Handle XML attributes
+        if (attr != null) {
+            TypedArray typedAttr = getContext().obtainStyledAttributes(attr, styleable.SubsamplingScaleImageView);
+            if (typedAttr.hasValue(styleable.SubsamplingScaleImageView_assetName)) {
+                String assetName = typedAttr.getString(styleable.SubsamplingScaleImageView_assetName);
+                if (assetName != null && assetName.length() > 0) {
+                    setImage(ImageSource.asset(assetName).tilingEnabled());
+                }
+            }
+            if (typedAttr.hasValue(styleable.SubsamplingScaleImageView_src)) {
+                int resId = typedAttr.getResourceId(styleable.SubsamplingScaleImageView_src, 0);
+                if (resId > 0) {
+                    setImage(ImageSource.resource(resId).tilingEnabled());
+                }
+            }
+            if (typedAttr.hasValue(styleable.SubsamplingScaleImageView_panEnabled)) {
+                setPanEnabled(typedAttr.getBoolean(styleable.SubsamplingScaleImageView_panEnabled, true));
+            }
+            if (typedAttr.hasValue(styleable.SubsamplingScaleImageView_zoomEnabled)) {
+                setZoomEnabled(typedAttr.getBoolean(styleable.SubsamplingScaleImageView_zoomEnabled, true));
+            }
+            if (typedAttr.hasValue(styleable.SubsamplingScaleImageView_quickScaleEnabled)) {
+                setQuickScaleEnabled(typedAttr.getBoolean(styleable.SubsamplingScaleImageView_quickScaleEnabled, true));
+            }
+            if (typedAttr.hasValue(styleable.SubsamplingScaleImageView_tileBackgroundColor)) {
+                setTileBackgroundColor(typedAttr.getColor(styleable.SubsamplingScaleImageView_tileBackgroundColor, Color.argb(0, 0, 0, 0)));
+            }
+            typedAttr.recycle();
+        }
+
+        quickScaleThreshold = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, context.getResources().getDisplayMetrics());
+    }
+
+    public SubsamplingScaleImageView(Context context) {
+        this(context, null);
+    }
+
+    /**
+     * Get the current preferred configuration for decoding bitmaps. {@link ImageDecoder} and {@link ImageRegionDecoder}
+     * instances can read this and use it when decoding images.
+     * @return the preferred bitmap configuration, or null if none has been set.
+     */
+    public static Bitmap.Config getPreferredBitmapConfig() {
+        return preferredBitmapConfig;
+    }
+
+    /**
+     * Set a global preferred bitmap config shared by all view instances and applied to new instances
+     * initialised after the call is made. This is a hint only; the bundled {@link ImageDecoder} and
+     * {@link ImageRegionDecoder} classes all respect this (except when they were constructed with
+     * an instance-specific config) but custom decoder classes will not.
+     * @param preferredBitmapConfig the bitmap configuration to be used by future instances of the view. Pass null to restore the default.
+     */
+    public static void setPreferredBitmapConfig(Bitmap.Config preferredBitmapConfig) {
+        SubsamplingScaleImageView.preferredBitmapConfig = preferredBitmapConfig;
+    }
+
+    /**
+     * Sets the image orientation. It's best to call this before setting the image file or asset, because it may waste
+     * loading of tiles. However, this can be freely called at any time.
+     * @param orientation orientation to be set. See ORIENTATION_ static fields for valid values.
+     */
+    public final void setOrientation(int orientation) {
+        if (!VALID_ORIENTATIONS.contains(orientation)) {
+            throw new IllegalArgumentException("Invalid orientation: " + orientation);
+        }
+        this.orientation = orientation;
+        reset(false);
+        invalidate();
+        requestLayout();
+    }
+
+    /**
+     * Set the image source from a bitmap, resource, asset, file or other URI.
+     * @param imageSource Image source.
+     */
+    public final void setImage(ImageSource imageSource) {
+        setImage(imageSource, null, null);
+    }
+
+    /**
+     * Set the image source from a bitmap, resource, asset, file or other URI, starting with a given orientation
+     * setting, scale and center. This is the best method to use when you want scale and center to be restored
+     * after screen orientation change; it avoids any redundant loading of tiles in the wrong orientation.
+     * @param imageSource Image source.
+     * @param state State to be restored. Nullable.
+     */
+    public final void setImage(ImageSource imageSource, ImageViewState state) {
+        setImage(imageSource, null, state);
+    }
+
+    /**
+     * Set the image source from a bitmap, resource, asset, file or other URI, providing a preview image to be
+     * displayed until the full size image is loaded.
+     *
+     * You must declare the dimensions of the full size image by calling {@link ImageSource#dimensions(int, int)}
+     * on the imageSource object. The preview source will be ignored if you don't provide dimensions,
+     * and if you provide a bitmap for the full size image.
+     * @param imageSource Image source. Dimensions must be declared.
+     * @param previewSource Optional source for a preview image to be displayed and allow interaction while the full size image loads.
+     */
+    public final void setImage(ImageSource imageSource, ImageSource previewSource) {
+        setImage(imageSource, previewSource, null);
+    }
+
+    /**
+     * Set the image source from a bitmap, resource, asset, file or other URI, providing a preview image to be
+     * displayed until the full size image is loaded, starting with a given orientation setting, scale and center.
+     * This is the best method to use when you want scale and center to be restored after screen orientation change;
+     * it avoids any redundant loading of tiles in the wrong orientation.
+     *
+     * You must declare the dimensions of the full size image by calling {@link ImageSource#dimensions(int, int)}
+     * on the imageSource object. The preview source will be ignored if you don't provide dimensions,
+     * and if you provide a bitmap for the full size image.
+     * @param imageSource Image source. Dimensions must be declared.
+     * @param previewSource Optional source for a preview image to be displayed and allow interaction while the full size image loads.
+     * @param state State to be restored. Nullable.
+     */
+    public final void setImage(ImageSource imageSource, ImageSource previewSource, ImageViewState state) {
+        if (imageSource == null) {
+            throw new NullPointerException("imageSource must not be null");
+        }
+
+        reset(true);
+        if (state != null) { restoreState(state); }
+
+        if (previewSource != null) {
+            if (imageSource.getBitmap() != null) {
+                throw new IllegalArgumentException("Preview image cannot be used when a bitmap is provided for the main image");
+            }
+            if (imageSource.getSWidth() <= 0 || imageSource.getSHeight() <= 0) {
+                throw new IllegalArgumentException("Preview image cannot be used unless dimensions are provided for the main image");
+            }
+            this.sWidth = imageSource.getSWidth();
+            this.sHeight = imageSource.getSHeight();
+            this.pRegion = previewSource.getSRegion();
+            if (previewSource.getBitmap() != null) {
+                this.bitmapIsCached = previewSource.isCached();
+                onPreviewLoaded(previewSource.getBitmap());
+            } else {
+                Uri uri = previewSource.getUri();
+                if (uri == null && previewSource.getResource() != null) {
+                    uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getContext().getPackageName() + "/" + previewSource.getResource());
+                }
+                BitmapLoadTask task = new BitmapLoadTask(this, getContext(), bitmapDecoderFactory, uri, true);
+                execute(task);
+            }
+        }
+
+        if (imageSource.getBitmap() != null && imageSource.getSRegion() != null) {
+            onImageLoaded(Bitmap.createBitmap(imageSource.getBitmap(), imageSource.getSRegion().left, imageSource.getSRegion().top, imageSource.getSRegion().width(), imageSource.getSRegion().height()), ORIENTATION_0, false);
+        } else if (imageSource.getBitmap() != null) {
+            onImageLoaded(imageSource.getBitmap(), ORIENTATION_0, imageSource.isCached());
+        } else {
+            sRegion = imageSource.getSRegion();
+            uri = imageSource.getUri();
+            if (uri == null && imageSource.getResource() != null) {
+                uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getContext().getPackageName() + "/" + imageSource.getResource());
+            }
+            if (imageSource.getTile() || sRegion != null) {
+                // Load the bitmap using tile decoding.
+                TilesInitTask task = new TilesInitTask(this, getContext(), regionDecoderFactory, uri);
+                execute(task);
+            } else {
+                // Load the bitmap as a single image.
+                BitmapLoadTask task = new BitmapLoadTask(this, getContext(), bitmapDecoderFactory, uri, false);
+                execute(task);
+            }
+        }
+    }
+
+    /**
+     * Reset all state before setting/changing image or setting new rotation.
+     */
+    private void reset(boolean newImage) {
+        debug("reset newImage=" + newImage);
+        scale = 0f;
+        scaleStart = 0f;
+        vTranslate = null;
+        vTranslateStart = null;
+        vTranslateBefore = null;
+        pendingScale = 0f;
+        sPendingCenter = null;
+        sRequestedCenter = null;
+        isZooming = false;
+        isPanning = false;
+        isQuickScaling = false;
+        maxTouchCount = 0;
+        fullImageSampleSize = 0;
+        vCenterStart = null;
+        vDistStart = 0;
+        quickScaleLastDistance = 0f;
+        quickScaleMoved = false;
+        quickScaleSCenter = null;
+        quickScaleVLastPoint = null;
+        quickScaleVStart = null;
+        anim = null;
+        satTemp = null;
+        matrix = null;
+        sRect = null;
+        if (newImage) {
+            uri = null;
+            decoderLock.writeLock().lock();
+            try {
+                if (decoder != null) {
+                    decoder.recycle();
+                    decoder = null;
+                }
+            } finally {
+                decoderLock.writeLock().unlock();
+            }
+            if (bitmap != null && !bitmapIsCached) {
+                bitmap.recycle();
+            }
+            if (bitmap != null && bitmapIsCached && onImageEventListener != null) {
+                onImageEventListener.onPreviewReleased();
+            }
+            sWidth = 0;
+            sHeight = 0;
+            sOrientation = 0;
+            sRegion = null;
+            pRegion = null;
+            readySent = false;
+            imageLoadedSent = false;
+            bitmap = null;
+            bitmapIsPreview = false;
+            bitmapIsCached = false;
+        }
+        if (tileMap != null) {
+            for (Map.Entry<Integer, List<Tile>> tileMapEntry : tileMap.entrySet()) {
+                for (Tile tile : tileMapEntry.getValue()) {
+                    tile.visible = false;
+                    if (tile.bitmap != null) {
+                        tile.bitmap.recycle();
+                        tile.bitmap = null;
+                    }
+                }
+            }
+            tileMap = null;
+        }
+        setGestureDetector(getContext());
+    }
+
+    private void setGestureDetector(final Context context) {
+        this.detector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
+
+            @Override
+            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
+                if (panEnabled && readySent && vTranslate != null && e1 != null && e2 != null && (Math.abs(e1.getX() - e2.getX()) > 50 || Math.abs(e1.getY() - e2.getY()) > 50) && (Math.abs(velocityX) > 500 || Math.abs(velocityY) > 500) && !isZooming) {
+                    PointF vTranslateEnd = new PointF(vTranslate.x + (velocityX * 0.25f), vTranslate.y + (velocityY * 0.25f));
+                    float sCenterXEnd = ((getWidth()/2) - vTranslateEnd.x)/scale;
+                    float sCenterYEnd = ((getHeight()/2) - vTranslateEnd.y)/scale;
+                    new AnimationBuilder(new PointF(sCenterXEnd, sCenterYEnd)).withEasing(EASE_OUT_QUAD).withPanLimited(false).withOrigin(ORIGIN_FLING).start();
+                    return true;
+                }
+                return super.onFling(e1, e2, velocityX, velocityY);
+            }
+
+            @Override
+            public boolean onSingleTapConfirmed(MotionEvent e) {
+                performClick();
+                return true;
+            }
+
+            @Override
+            public boolean onDoubleTap(MotionEvent e) {
+                if (zoomEnabled && readySent && vTranslate != null) {
+                    // Hacky solution for #15 - after a double tap the GestureDetector gets in a state
+                    // where the next fling is ignored, so here we replace it with a new one.
+                    setGestureDetector(context);
+                    if (quickScaleEnabled) {
+                        // Store quick scale params. This will become either a double tap zoom or a
+                        // quick scale depending on whether the user swipes.
+                        vCenterStart = new PointF(e.getX(), e.getY());
+                        vTranslateStart = new PointF(vTranslate.x, vTranslate.y);
+                        scaleStart = scale;
+                        isQuickScaling = true;
+                        isZooming = true;
+                        quickScaleLastDistance = -1F;
+                        quickScaleSCenter = viewToSourceCoord(vCenterStart);
+                        quickScaleVStart = new PointF(e.getX(), e.getY());
+                        quickScaleVLastPoint = new PointF(quickScaleSCenter.x, quickScaleSCenter.y);
+                        quickScaleMoved = false;
+                        // We need to get events in onTouchEvent after this.
+                        return false;
+                    } else {
+                        // Start double tap zoom animation.
+                        doubleTapZoom(viewToSourceCoord(new PointF(e.getX(), e.getY())), new PointF(e.getX(), e.getY()));
+                        return true;
+                    }
+                }
+                return super.onDoubleTapEvent(e);
+            }
+        });
+
+        singleDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
+            @Override
+            public boolean onSingleTapConfirmed(MotionEvent e) {
+                performClick();
+                return true;
+            }
+        });
+    }
+
+    /**
+     * On resize, preserve center and scale. Various behaviours are possible, override this method to use another.
+     */
+    @Override
+    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+        debug("onSizeChanged %dx%d -> %dx%d", oldw, oldh, w, h);
+        PointF sCenter = getCenter();
+        if (readySent && sCenter != null) {
+            this.anim = null;
+            this.pendingScale = scale;
+            this.sPendingCenter = sCenter;
+        }
+    }
+
+    /**
+     * Measures the width and height of the view, preserving the aspect ratio of the image displayed if wrap_content is
+     * used. The image will scale within this box, not resizing the view as it is zoomed.
+     */
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        int widthSpecMode = MeasureSpec.getMode(widthMeasureSpec);
+        int heightSpecMode = MeasureSpec.getMode(heightMeasureSpec);
+        int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
+        int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
+        boolean resizeWidth = widthSpecMode != MeasureSpec.EXACTLY;
+        boolean resizeHeight = heightSpecMode != MeasureSpec.EXACTLY;
+        int width = parentWidth;
+        int height = parentHeight;
+        if (sWidth > 0 && sHeight > 0) {
+            if (resizeWidth && resizeHeight) {
+                width = sWidth();
+                height = sHeight();
+            } else if (resizeHeight) {
+                height = (int)((((double)sHeight()/(double)sWidth()) * width));
+            } else if (resizeWidth) {
+                width = (int)((((double)sWidth()/(double)sHeight()) * height));
+            }
+        }
+        width = Math.max(width, getSuggestedMinimumWidth());
+        height = Math.max(height, getSuggestedMinimumHeight());
+        setMeasuredDimension(width, height);
+    }
+
+    /**
+     * Handle touch events. One finger pans, and two finger pinch and zoom plus panning.
+     */
+    @Override
+    public boolean onTouchEvent(@NonNull MotionEvent event) {
+        // During non-interruptible anims, ignore all touch events
+        if (anim != null && !anim.interruptible) {
+            requestDisallowInterceptTouchEvent(true);
+            return true;
+        } else {
+            if (anim != null && anim.listener != null) {
+                try {
+                    anim.listener.onInterruptedByUser();
+                } catch (Exception e) {
+                    Log.w(TAG, "Error thrown by animation listener", e);
+                }
+            }
+            anim = null;
+        }
+
+        // Abort if not ready
+        if (vTranslate == null) {
+            if (singleDetector != null) {
+                singleDetector.onTouchEvent(event);
+            }
+            return true;
+        }
+        // Detect flings, taps and double taps
+        if (!isQuickScaling && (detector == null || detector.onTouchEvent(event))) {
+            isZooming = false;
+            isPanning = false;
+            maxTouchCount = 0;
+            return true;
+        }
+
+        if (vTranslateStart == null) { vTranslateStart = new PointF(0, 0); }
+        if (vTranslateBefore == null) { vTranslateBefore = new PointF(0, 0); }
+        if (vCenterStart == null) { vCenterStart = new PointF(0, 0); }
+
+        // Store current values so we can send an event if they change
+        float scaleBefore = scale;
+        vTranslateBefore.set(vTranslate);
+
+        boolean handled = onTouchEventInternal(event);
+        sendStateChanged(scaleBefore, vTranslateBefore, ORIGIN_TOUCH);
+        return handled || super.onTouchEvent(event);
+    }
+
+    @SuppressWarnings("deprecation")
+    private boolean onTouchEventInternal(@NonNull MotionEvent event) {
+        int touchCount = event.getPointerCount();
+        switch (event.getAction()) {
+            case MotionEvent.ACTION_DOWN:
+            case MotionEvent.ACTION_POINTER_1_DOWN:
+            case MotionEvent.ACTION_POINTER_2_DOWN:
+                anim = null;
+                requestDisallowInterceptTouchEvent(true);
+                maxTouchCount = Math.max(maxTouchCount, touchCount);
+                if (touchCount >= 2) {
+                    if (zoomEnabled) {
+                        // Start pinch to zoom. Calculate distance between touch points and center point of the pinch.
+                        float distance = distance(event.getX(0), event.getX(1), event.getY(0), event.getY(1));
+                        scaleStart = scale;
+                        vDistStart = distance;
+                        vTranslateStart.set(vTranslate.x, vTranslate.y);
+                        vCenterStart.set((event.getX(0) + event.getX(1))/2, (event.getY(0) + event.getY(1))/2);
+                    } else {
+                        // Abort all gestures on second touch
+                        maxTouchCount = 0;
+                    }
+                    // Cancel long click timer
+                    handler.removeMessages(MESSAGE_LONG_CLICK);
+                } else if (!isQuickScaling) {
+                    // Start one-finger pan
+                    vTranslateStart.set(vTranslate.x, vTranslate.y);
+                    vCenterStart.set(event.getX(), event.getY());
+
+                    // Start long click timer
+                    handler.sendEmptyMessageDelayed(MESSAGE_LONG_CLICK, 600);
+                }
+                return true;
+            case MotionEvent.ACTION_MOVE:
+                boolean consumed = false;
+                if (maxTouchCount > 0) {
+                    if (touchCount >= 2) {
+                        // Calculate new distance between touch points, to scale and pan relative to start values.
+                        float vDistEnd = distance(event.getX(0), event.getX(1), event.getY(0), event.getY(1));
+                        float vCenterEndX = (event.getX(0) + event.getX(1))/2;
+                        float vCenterEndY = (event.getY(0) + event.getY(1))/2;
+
+                        if (zoomEnabled && (distance(vCenterStart.x, vCenterEndX, vCenterStart.y, vCenterEndY) > 5 || Math.abs(vDistEnd - vDistStart) > 5 || isPanning)) {
+                            isZooming = true;
+                            isPanning = true;
+                            consumed = true;
+
+                            double previousScale = scale;
+                            scale = Math.min(maxScale, (vDistEnd / vDistStart) * scaleStart);
+
+                            if (scale <= minScale()) {
+                                // Minimum scale reached so don't pan. Adjust start settings so any expand will zoom in.
+                                vDistStart = vDistEnd;
+                                scaleStart = minScale();
+                                vCenterStart.set(vCenterEndX, vCenterEndY);
+                                vTranslateStart.set(vTranslate);
+                            } else if (panEnabled) {
+                                // Translate to place the source image coordinate that was at the center of the pinch at the start
+                                // at the center of the pinch now, to give simultaneous pan + zoom.
+                                float vLeftStart = vCenterStart.x - vTranslateStart.x;
+                                float vTopStart = vCenterStart.y - vTranslateStart.y;
+                                float vLeftNow = vLeftStart * (scale/scaleStart);
+                                float vTopNow = vTopStart * (scale/scaleStart);
+                                vTranslate.x = vCenterEndX - vLeftNow;
+                                vTranslate.y = vCenterEndY - vTopNow;
+                                if ((previousScale * sHeight() < getHeight() && scale * sHeight() >= getHeight()) || (previousScale * sWidth() < getWidth() && scale * sWidth() >= getWidth())) {
+                                    fitToBounds(true);
+                                    vCenterStart.set(vCenterEndX, vCenterEndY);
+                                    vTranslateStart.set(vTranslate);
+                                    scaleStart = scale;
+                                    vDistStart = vDistEnd;
+                                }
+                            } else if (sRequestedCenter != null) {
+                                // With a center specified from code, zoom around that point.
+                                vTranslate.x = (getWidth()/2) - (scale * sRequestedCenter.x);
+                                vTranslate.y = (getHeight()/2) - (scale * sRequestedCenter.y);
+                            } else {
+                                // With no requested center, scale around the image center.
+                                vTranslate.x = (getWidth()/2) - (scale * (sWidth()/2));
+                                vTranslate.y = (getHeight()/2) - (scale * (sHeight()/2));
+                            }
+
+                            fitToBounds(true);
+                            refreshRequiredTiles(eagerLoadingEnabled);
+                        }
+                    } else if (isQuickScaling) {
+                        // One finger zoom
+                        // Stole Google's Magical Formula™ to make sure it feels the exact same
+                        float dist = Math.abs(quickScaleVStart.y - event.getY()) * 2 + quickScaleThreshold;
+
+                        if (quickScaleLastDistance == -1f) {
+                            quickScaleLastDistance = dist;
+                        }
+                        boolean isUpwards = event.getY() > quickScaleVLastPoint.y;
+                        quickScaleVLastPoint.set(0, event.getY());
+
+                        float spanDiff = Math.abs(1 - (dist / quickScaleLastDistance)) * 0.5f;
+
+                        if (spanDiff > 0.03f || quickScaleMoved) {
+                            quickScaleMoved = true;
+
+                            float multiplier = 1;
+                            if (quickScaleLastDistance > 0) {
+                                multiplier = isUpwards ? (1 + spanDiff) : (1 - spanDiff);
+                            }
+
+                            double previousScale = scale;
+                            scale = Math.max(minScale(), Math.min(maxScale, scale * multiplier));
+
+                            if (panEnabled) {
+                                float vLeftStart = vCenterStart.x - vTranslateStart.x;
+                                float vTopStart = vCenterStart.y - vTranslateStart.y;
+                                float vLeftNow = vLeftStart * (scale/scaleStart);
+                                float vTopNow = vTopStart * (scale/scaleStart);
+                                vTranslate.x = vCenterStart.x - vLeftNow;
+                                vTranslate.y = vCenterStart.y - vTopNow;
+                                if ((previousScale * sHeight() < getHeight() && scale * sHeight() >= getHeight()) || (previousScale * sWidth() < getWidth() && scale * sWidth() >= getWidth())) {
+                                    fitToBounds(true);
+                                    vCenterStart.set(sourceToViewCoord(quickScaleSCenter));
+                                    vTranslateStart.set(vTranslate);
+                                    scaleStart = scale;
+                                    dist = 0;
+                                }
+                            } else if (sRequestedCenter != null) {
+                                // With a center specified from code, zoom around that point.
+                                vTranslate.x = (getWidth()/2) - (scale * sRequestedCenter.x);
+                                vTranslate.y = (getHeight()/2) - (scale * sRequestedCenter.y);
+                            } else {
+                                // With no requested center, scale around the image center.
+                                vTranslate.x = (getWidth()/2) - (scale * (sWidth()/2));
+                                vTranslate.y = (getHeight()/2) - (scale * (sHeight()/2));
+                            }
+                        }
+
+                        quickScaleLastDistance = dist;
+
+                        fitToBounds(true);
+                        refreshRequiredTiles(eagerLoadingEnabled);
+
+                        consumed = true;
+                    } else if (!isZooming) {
+                        // One finger pan - translate the image. We do this calculation even with pan disabled so click
+                        // and long click behaviour is preserved.
+                        float dx = Math.abs(event.getX() - vCenterStart.x);
+                        float dy = Math.abs(event.getY() - vCenterStart.y);
+
+                        //On the Samsung S6 long click event does not work, because the dx > 5 usually true
+                        float offset = density * 5;
+                        if (dx > offset || dy > offset || isPanning) {
+                            consumed = true;
+                            vTranslate.x = vTranslateStart.x + (event.getX() - vCenterStart.x);
+                            vTranslate.y = vTranslateStart.y + (event.getY() - vCenterStart.y);
+
+                            float lastX = vTranslate.x;
+                            float lastY = vTranslate.y;
+                            fitToBounds(true);
+                            boolean atXEdge = lastX != vTranslate.x;
+                            boolean atYEdge = lastY != vTranslate.y;
+                            boolean edgeXSwipe = atXEdge && dx > dy && !isPanning;
+                            boolean edgeYSwipe = atYEdge && dy > dx && !isPanning;
+                            boolean yPan = lastY == vTranslate.y && dy > offset * 3;
+                            if (!edgeXSwipe && !edgeYSwipe && (!atXEdge || !atYEdge || yPan || isPanning)) {
+                                isPanning = true;
+                            } else if (dx > offset || dy > offset) {
+                                // Haven't panned the image, and we're at the left or right edge. Switch to page swipe.
+                                maxTouchCount = 0;
+                                handler.removeMessages(MESSAGE_LONG_CLICK);
+                                requestDisallowInterceptTouchEvent(false);
+                            }
+                            if (!panEnabled) {
+                                vTranslate.x = vTranslateStart.x;
+                                vTranslate.y = vTranslateStart.y;
+                                requestDisallowInterceptTouchEvent(false);
+                            }
+
+                            refreshRequiredTiles(eagerLoadingEnabled);
+                        }
+                    }
+                }
+                if (consumed) {
+                    handler.removeMessages(MESSAGE_LONG_CLICK);
+                    invalidate();
+                    return true;
+                }
+                break;
+            case MotionEvent.ACTION_UP:
+            case MotionEvent.ACTION_POINTER_UP:
+            case MotionEvent.ACTION_POINTER_2_UP:
+                handler.removeMessages(MESSAGE_LONG_CLICK);
+                if (isQuickScaling) {
+                    isQuickScaling = false;
+                    if (!quickScaleMoved) {
+                        doubleTapZoom(quickScaleSCenter, vCenterStart);
+                    }
+                }
+                if (maxTouchCount > 0 && (isZooming || isPanning)) {
+                    if (isZooming && touchCount == 2) {
+                        // Convert from zoom to pan with remaining touch
+                        isPanning = true;
+                        vTranslateStart.set(vTranslate.x, vTranslate.y);
+                        if (event.getActionIndex() == 1) {
+                            vCenterStart.set(event.getX(0), event.getY(0));
+                        } else {
+                            vCenterStart.set(event.getX(1), event.getY(1));
+                        }
+                    }
+                    if (touchCount < 3) {
+                        // End zooming when only one touch point
+                        isZooming = false;
+                    }
+                    if (touchCount < 2) {
+                        // End panning when no touch points
+                        isPanning = false;
+                        maxTouchCount = 0;
+                    }
+                    // Trigger load of tiles now required
+                    refreshRequiredTiles(true);
+                    return true;
+                }
+                if (touchCount == 1) {
+                    isZooming = false;
+                    isPanning = false;
+                    maxTouchCount = 0;
+                }
+                return true;
+        }
+        return false;
+    }
+
+    private void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {
+        ViewParent parent = getParent();
+        if (parent != null) {
+            parent.requestDisallowInterceptTouchEvent(disallowIntercept);
+        }
+    }
+
+    /**
+     * Double tap zoom handler triggered from gesture detector or on touch, depending on whether
+     * quick scale is enabled.
+     */
+    private void doubleTapZoom(PointF sCenter, PointF vFocus) {
+        if (!panEnabled) {
+            if (sRequestedCenter != null) {
+                // With a center specified from code, zoom around that point.
+                sCenter.x = sRequestedCenter.x;
+                sCenter.y = sRequestedCenter.y;
+            } else {
+                // With no requested center, scale around the image center.
+                sCenter.x = sWidth()/2;
+                sCenter.y = sHeight()/2;
+            }
+        }
+        float doubleTapZoomScale = Math.min(maxScale, SubsamplingScaleImageView.this.doubleTapZoomScale);
+        boolean zoomIn = (scale <= doubleTapZoomScale * 0.9) || scale == minScale;
+        float targetScale = zoomIn ? doubleTapZoomScale : minScale();
+        if (doubleTapZoomStyle == ZOOM_FOCUS_CENTER_IMMEDIATE) {
+            setScaleAndCenter(targetScale, sCenter);
+        } else if (doubleTapZoomStyle == ZOOM_FOCUS_CENTER || !zoomIn || !panEnabled) {
+            new AnimationBuilder(targetScale, sCenter).withInterruptible(false).withDuration(doubleTapZoomDuration).withOrigin(ORIGIN_DOUBLE_TAP_ZOOM).start();
+        } else if (doubleTapZoomStyle == ZOOM_FOCUS_FIXED) {
+            new AnimationBuilder(targetScale, sCenter, vFocus).withInterruptible(false).withDuration(doubleTapZoomDuration).withOrigin(ORIGIN_DOUBLE_TAP_ZOOM).start();
+        }
+        invalidate();
+    }
+
+    /**
+     * Draw method should not be called until the view has dimensions so the first calls are used as triggers to calculate
+     * the scaling and tiling required. Once the view is setup, tiles are displayed as they are loaded.
+     */
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+        createPaints();
+
+        // If image or view dimensions are not known yet, abort.
+        if (sWidth == 0 || sHeight == 0 || getWidth() == 0 || getHeight() == 0) {
+            return;
+        }
+
+        // When using tiles, on first render with no tile map ready, initialise it and kick off async base image loading.
+        if (tileMap == null && decoder != null) {
+            initialiseBaseLayer(getMaxBitmapDimensions(canvas));
+        }
+
+        // If image has been loaded or supplied as a bitmap, onDraw may be the first time the view has
+        // dimensions and therefore the first opportunity to set scale and translate. If this call returns
+        // false there is nothing to be drawn so return immediately.
+        if (!checkReady()) {
+            return;
+        }
+
+        // Set scale and translate before draw.
+        preDraw();
+
+        // If animating scale, calculate current scale and center with easing equations
+        if (anim != null && anim.vFocusStart != null) {
+            // Store current values so we can send an event if they change
+            float scaleBefore = scale;
+            if (vTranslateBefore == null) { vTranslateBefore = new PointF(0, 0); }
+            vTranslateBefore.set(vTranslate);
+
+            long scaleElapsed = System.currentTimeMillis() - anim.time;
+            boolean finished = scaleElapsed > anim.duration;
+            scaleElapsed = Math.min(scaleElapsed, anim.duration);
+            scale = ease(anim.easing, scaleElapsed, anim.scaleStart, anim.scaleEnd - anim.scaleStart, anim.duration);
+
+            // Apply required animation to the focal point
+            float vFocusNowX = ease(anim.easing, scaleElapsed, anim.vFocusStart.x, anim.vFocusEnd.x - anim.vFocusStart.x, anim.duration);
+            float vFocusNowY = ease(anim.easing, scaleElapsed, anim.vFocusStart.y, anim.vFocusEnd.y - anim.vFocusStart.y, anim.duration);
+            // Find out where the focal point is at this scale and adjust its position to follow the animation path
+            vTranslate.x -= sourceToViewX(anim.sCenterEnd.x) - vFocusNowX;
+            vTranslate.y -= sourceToViewY(anim.sCenterEnd.y) - vFocusNowY;
+
+            // For translate anims, showing the image non-centered is never allowed, for scaling anims it is during the animation.
+            fitToBounds(finished || (anim.scaleStart == anim.scaleEnd));
+            sendStateChanged(scaleBefore, vTranslateBefore, anim.origin);
+            refreshRequiredTiles(finished);
+            if (finished) {
+                if (anim.listener != null) {
+                    try {
+                        anim.listener.onComplete();
+                    } catch (Exception e) {
+                        Log.w(TAG, "Error thrown by animation listener", e);
+                    }
+                }
+                anim = null;
+            }
+            invalidate();
+        }
+
+        if (tileMap != null && isBaseLayerReady()) {
+
+            // Optimum sample size for current scale
+            int sampleSize = Math.min(fullImageSampleSize, calculateInSampleSize(scale));
+
+            // First check for missing tiles - if there are any we need the base layer underneath to avoid gaps
+            boolean hasMissingTiles = false;
+            for (Map.Entry<Integer, List<Tile>> tileMapEntry : tileMap.entrySet()) {
+                if (tileMapEntry.getKey() == sampleSize) {
+                    for (Tile tile : tileMapEntry.getValue()) {
+                        if (tile.visible && (tile.loading || tile.bitmap == null)) {
+                            hasMissingTiles = true;
+                        }
+                    }
+                }
+            }
+
+            // Render all loaded tiles. LinkedHashMap used for bottom up rendering - lower res tiles underneath.
+            for (Map.Entry<Integer, List<Tile>> tileMapEntry : tileMap.entrySet()) {
+                if (tileMapEntry.getKey() == sampleSize || hasMissingTiles) {
+                    for (Tile tile : tileMapEntry.getValue()) {
+                        sourceToViewRect(tile.sRect, tile.vRect);
+                        if (!tile.loading && tile.bitmap != null) {
+                            if (tileBgPaint != null) {
+                                canvas.drawRect(tile.vRect, tileBgPaint);
+                            }
+                            if (matrix == null) { matrix = new Matrix(); }
+                            matrix.reset();
+                            setMatrixArray(srcArray, 0, 0, tile.bitmap.getWidth(), 0, tile.bitmap.getWidth(), tile.bitmap.getHeight(), 0, tile.bitmap.getHeight());
+                            if (getRequiredRotation() == ORIENTATION_0) {
+                                setMatrixArray(dstArray, tile.vRect.left, tile.vRect.top, tile.vRect.right, tile.vRect.top, tile.vRect.right, tile.vRect.bottom, tile.vRect.left, tile.vRect.bottom);
+                            } else if (getRequiredRotation() == ORIENTATION_90) {
+                                setMatrixArray(dstArray, tile.vRect.right, tile.vRect.top, tile.vRect.right, tile.vRect.bottom, tile.vRect.left, tile.vRect.bottom, tile.vRect.left, tile.vRect.top);
+                            } else if (getRequiredRotation() == ORIENTATION_180) {
+                                setMatrixArray(dstArray, tile.vRect.right, tile.vRect.bottom, tile.vRect.left, tile.vRect.bottom, tile.vRect.left, tile.vRect.top, tile.vRect.right, tile.vRect.top);
+                            } else if (getRequiredRotation() == ORIENTATION_270) {
+                                setMatrixArray(dstArray, tile.vRect.left, tile.vRect.bottom, tile.vRect.left, tile.vRect.top, tile.vRect.right, tile.vRect.top, tile.vRect.right, tile.vRect.bottom);
+                            }
+                            matrix.setPolyToPoly(srcArray, 0, dstArray, 0, 4);
+                            canvas.drawBitmap(tile.bitmap, matrix, bitmapPaint);
+                            if (debug) {
+                                canvas.drawRect(tile.vRect, debugLinePaint);
+                            }
+                        } else if (tile.loading && debug) {
+                            canvas.drawText("LOADING", tile.vRect.left + px(5), tile.vRect.top + px(35), debugTextPaint);
+                        }
+                        if (tile.visible && debug) {
+                            canvas.drawText("ISS " + tile.sampleSize + " RECT " + tile.sRect.top + "," + tile.sRect.left + "," + tile.sRect.bottom + "," + tile.sRect.right, tile.vRect.left + px(5), tile.vRect.top + px(15), debugTextPaint);
+                        }
+                    }
+                }
+            }
+
+        } else if (bitmap != null) {
+
+            float xScale = scale, yScale = scale;
+            if (bitmapIsPreview) {
+                xScale = scale * ((float)sWidth/bitmap.getWidth());
+                yScale = scale * ((float)sHeight/bitmap.getHeight());
+            }
+
+            if (matrix == null) { matrix = new Matrix(); }
+            matrix.reset();
+            matrix.postScale(xScale, yScale);
+            matrix.postRotate(getRequiredRotation());
+            matrix.postTranslate(vTranslate.x, vTranslate.y);
+
+            if (getRequiredRotation() == ORIENTATION_180) {
+                matrix.postTranslate(scale * sWidth, scale * sHeight);
+            } else if (getRequiredRotation() == ORIENTATION_90) {
+                matrix.postTranslate(scale * sHeight, 0);
+            } else if (getRequiredRotation() == ORIENTATION_270) {
+                matrix.postTranslate(0, scale * sWidth);
+            }
+
+            if (tileBgPaint != null) {
+                if (sRect == null) { sRect = new RectF(); }
+                sRect.set(0f, 0f, bitmapIsPreview ? bitmap.getWidth() : sWidth, bitmapIsPreview ? bitmap.getHeight() : sHeight);
+                matrix.mapRect(sRect);
+                canvas.drawRect(sRect, tileBgPaint);
+            }
+            canvas.drawBitmap(bitmap, matrix, bitmapPaint);
+
+        }
+
+        if (debug) {
+            canvas.drawText("Scale: " + String.format(Locale.ENGLISH, "%.2f", scale) + " (" + String.format(Locale.ENGLISH, "%.2f", minScale()) + " - " + String.format(Locale.ENGLISH, "%.2f", maxScale) + ")", px(5), px(15), debugTextPaint);
+            canvas.drawText("Translate: " + String.format(Locale.ENGLISH, "%.2f", vTranslate.x) + ":" + String.format(Locale.ENGLISH, "%.2f", vTranslate.y), px(5), px(30), debugTextPaint);
+            PointF center = getCenter();
+            canvas.drawText("Source center: " + String.format(Locale.ENGLISH, "%.2f", center.x) + ":" + String.format(Locale.ENGLISH, "%.2f", center.y), px(5), px(45), debugTextPaint);
+            if (anim != null) {
+                PointF vCenterStart = sourceToViewCoord(anim.sCenterStart);
+                PointF vCenterEndRequested = sourceToViewCoord(anim.sCenterEndRequested);
+                PointF vCenterEnd = sourceToViewCoord(anim.sCenterEnd);
+                canvas.drawCircle(vCenterStart.x, vCenterStart.y, px(10), debugLinePaint);
+                debugLinePaint.setColor(Color.RED);
+                canvas.drawCircle(vCenterEndRequested.x, vCenterEndRequested.y, px(20), debugLinePaint);
+                debugLinePaint.setColor(Color.BLUE);
+                canvas.drawCircle(vCenterEnd.x, vCenterEnd.y, px(25), debugLinePaint);
+                debugLinePaint.setColor(Color.CYAN);
+                canvas.drawCircle(getWidth() / 2, getHeight() / 2, px(30), debugLinePaint);
+            }
+            if (vCenterStart != null) {
+                debugLinePaint.setColor(Color.RED);
+                canvas.drawCircle(vCenterStart.x, vCenterStart.y, px(20), debugLinePaint);
+            }
+            if (quickScaleSCenter != null) {
+                debugLinePaint.setColor(Color.BLUE);
+                canvas.drawCircle(sourceToViewX(quickScaleSCenter.x), sourceToViewY(quickScaleSCenter.y), px(35), debugLinePaint);
+            }
+            if (quickScaleVStart != null && isQuickScaling) {
+                debugLinePaint.setColor(Color.CYAN);
+                canvas.drawCircle(quickScaleVStart.x, quickScaleVStart.y, px(30), debugLinePaint);
+            }
+            debugLinePaint.setColor(Color.MAGENTA);
+        }
+    }
+
+    /**
+     * Helper method for setting the values of a tile matrix array.
+     */
+    private void setMatrixArray(float[] array, float f0, float f1, float f2, float f3, float f4, float f5, float f6, float f7) {
+        array[0] = f0;
+        array[1] = f1;
+        array[2] = f2;
+        array[3] = f3;
+        array[4] = f4;
+        array[5] = f5;
+        array[6] = f6;
+        array[7] = f7;
+    }
+
+    /**
+     * Checks whether the base layer of tiles or full size bitmap is ready.
+     */
+    private boolean isBaseLayerReady() {
+        if (bitmap != null && !bitmapIsPreview) {
+            return true;
+        } else if (tileMap != null) {
+            boolean baseLayerReady = true;
+            for (Map.Entry<Integer, List<Tile>> tileMapEntry : tileMap.entrySet()) {
+                if (tileMapEntry.getKey() == fullImageSampleSize) {
+                    for (Tile tile : tileMapEntry.getValue()) {
+                        if (tile.loading || tile.bitmap == null) {
+                            baseLayerReady = false;
+                        }
+                    }
+                }
+            }
+            return baseLayerReady;
+        }
+        return false;
+    }
+
+    /**
+     * Check whether view and image dimensions are known and either a preview, full size image or
+     * base layer tiles are loaded. First time, send ready event to listener. The next draw will
+     * display an image.
+     */
+    private boolean checkReady() {
+        boolean ready = getWidth() > 0 && getHeight() > 0 && sWidth > 0 && sHeight > 0 && (bitmap != null || isBaseLayerReady());
+        if (!readySent && ready) {
+            preDraw();
+            readySent = true;
+            onReady();
+            if (onImageEventListener != null) {
+                onImageEventListener.onReady();
+            }
+        }
+        return ready;
+    }
+
+    /**
+     * Check whether either the full size bitmap or base layer tiles are loaded. First time, send image
+     * loaded event to listener.
+     */
+    private boolean checkImageLoaded() {
+        boolean imageLoaded = isBaseLayerReady();
+        if (!imageLoadedSent && imageLoaded) {
+            preDraw();
+            imageLoadedSent = true;
+            onImageLoaded();
+            if (onImageEventListener != null) {
+                onImageEventListener.onImageLoaded();
+            }
+        }
+        return imageLoaded;
+    }
+
+    /**
+     * Creates Paint objects once when first needed.
+     */
+    private void createPaints() {
+        if (bitmapPaint == null) {
+            bitmapPaint = new Paint();
+            bitmapPaint.setAntiAlias(true);
+            bitmapPaint.setFilterBitmap(true);
+            bitmapPaint.setDither(true);
+        }
+        if ((debugTextPaint == null || debugLinePaint == null) && debug) {
+            debugTextPaint = new Paint();
+            debugTextPaint.setTextSize(px(12));
+            debugTextPaint.setColor(Color.MAGENTA);
+            debugTextPaint.setStyle(Style.FILL);
+            debugLinePaint = new Paint();
+            debugLinePaint.setColor(Color.MAGENTA);
+            debugLinePaint.setStyle(Style.STROKE);
+            debugLinePaint.setStrokeWidth(px(1));
+        }
+    }
+
+    /**
+     * Called on first draw when the view has dimensions. Calculates the initial sample size and starts async loading of
+     * the base layer image - the whole source subsampled as necessary.
+     */
+    private synchronized void initialiseBaseLayer(Point maxTileDimensions) {
+        debug("initialiseBaseLayer maxTileDimensions=%dx%d", maxTileDimensions.x, maxTileDimensions.y);
+
+        satTemp = new ScaleAndTranslate(0f, new PointF(0, 0));
+        fitToBounds(true, satTemp);
+
+        // Load double resolution - next level will be split into four tiles and at the center all four are required,
+        // so don't bother with tiling until the next level 16 tiles are needed.
+        fullImageSampleSize = calculateInSampleSize(satTemp.scale);
+        if (fullImageSampleSize > 1) {
+            fullImageSampleSize /= 2;
+        }
+
+        if (fullImageSampleSize == 1 && sRegion == null && sWidth() < maxTileDimensions.x && sHeight() < maxTileDimensions.y) {
+
+            // Whole image is required at native resolution, and is smaller than the canvas max bitmap size.
+            // Use BitmapDecoder for better image support.
+            decoder.recycle();
+            decoder = null;
+            BitmapLoadTask task = new BitmapLoadTask(this, getContext(), bitmapDecoderFactory, uri, false);
+            execute(task);
+
+        } else {
+
+            initialiseTileMap(maxTileDimensions);
+
+            List<Tile> baseGrid = tileMap.get(fullImageSampleSize);
+            for (Tile baseTile : baseGrid) {
+                TileLoadTask task = new TileLoadTask(this, decoder, baseTile);
+                execute(task);
+            }
+            refreshRequiredTiles(true);
+
+        }
+
+    }
+
+    /**
+     * Loads the optimum tiles for display at the current scale and translate, so the screen can be filled with tiles
+     * that are at least as high resolution as the screen. Frees up bitmaps that are now off the screen.
+     * @param load Whether to load the new tiles needed. Use false while scrolling/panning for performance.
+     */
+    private void refreshRequiredTiles(boolean load) {
+        if (decoder == null || tileMap == null) { return; }
+
+        int sampleSize = Math.min(fullImageSampleSize, calculateInSampleSize(scale));
+
+        // Load tiles of the correct sample size that are on screen. Discard tiles off screen, and those that are higher
+        // resolution than required, or lower res than required but not the base layer, so the base layer is always present.
+        for (Map.Entry<Integer, List<Tile>> tileMapEntry : tileMap.entrySet()) {
+            for (Tile tile : tileMapEntry.getValue()) {
+                if (tile.sampleSize < sampleSize || (tile.sampleSize > sampleSize && tile.sampleSize != fullImageSampleSize)) {
+                    tile.visible = false;
+                    if (tile.bitmap != null) {
+                        tile.bitmap.recycle();
+                        tile.bitmap = null;
+                    }
+                }
+                if (tile.sampleSize == sampleSize) {
+                    if (tileVisible(tile)) {
+                        tile.visible = true;
+                        if (!tile.loading && tile.bitmap == null && load) {
+                            TileLoadTask task = new TileLoadTask(this, decoder, tile);
+                            execute(task);
+                        }
+                    } else if (tile.sampleSize != fullImageSampleSize) {
+                        tile.visible = false;
+                        if (tile.bitmap != null) {
+                            tile.bitmap.recycle();
+                            tile.bitmap = null;
+                        }
+                    }
+                } else if (tile.sampleSize == fullImageSampleSize) {
+                    tile.visible = true;
+                }
+            }
+        }
+
+    }
+
+    /**
+     * Determine whether tile is visible.
+     */
+    private boolean tileVisible(Tile tile) {
+        float sVisLeft = viewToSourceX(0),
+            sVisRight = viewToSourceX(getWidth()),
+            sVisTop = viewToSourceY(0),
+            sVisBottom = viewToSourceY(getHeight());
+        return !(sVisLeft > tile.sRect.right || tile.sRect.left > sVisRight || sVisTop > tile.sRect.bottom || tile.sRect.top > sVisBottom);
+    }
+
+    /**
+     * Sets scale and translate ready for the next draw.
+     */
+    private void preDraw() {
+        if (getWidth() == 0 || getHeight() == 0 || sWidth <= 0 || sHeight <= 0) {
+            return;
+        }
+
+        // If waiting to translate to new center position, set translate now
+        if (sPendingCenter != null && pendingScale != null) {
+            scale = pendingScale;
+            if (vTranslate == null) {
+                vTranslate = new PointF();
+            }
+            vTranslate.x = (getWidth()/2) - (scale * sPendingCenter.x);
+            vTranslate.y = (getHeight()/2) - (scale * sPendingCenter.y);
+            sPendingCenter = null;
+            pendingScale = null;
+            fitToBounds(true);
+            refreshRequiredTiles(true);
+        }
+
+        // On first display of base image set up position, and in other cases make sure scale is correct.
+        fitToBounds(false);
+    }
+
+    /**
+     * Calculates sample size to fit the source image in given bounds.
+     */
+    private int calculateInSampleSize(float scale) {
+        if (minimumTileDpi > 0) {
+            DisplayMetrics metrics = getResources().getDisplayMetrics();
+            float averageDpi = (metrics.xdpi + metrics.ydpi)/2;
+            scale = (minimumTileDpi/averageDpi) * scale;
+        }
+
+        int reqWidth = (int)(sWidth() * scale);
+        int reqHeight = (int)(sHeight() * scale);
+
+        // Raw height and width of image
+        int inSampleSize = 1;
+        if (reqWidth == 0 || reqHeight == 0) {
+            return 32;
+        }
+
+        if (sHeight() > reqHeight || sWidth() > reqWidth) {
+
+            // Calculate ratios of height and width to requested height and width
+            final int heightRatio = Math.round((float) sHeight() / (float) reqHeight);
+            final int widthRatio = Math.round((float) sWidth() / (float) reqWidth);
+
+            // Choose the smallest ratio as inSampleSize value, this will guarantee
+            // a final image with both dimensions larger than or equal to the
+            // requested height and width.
+            inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
+        }
+
+        // We want the actual sample size that will be used, so round down to nearest power of 2.
+        int power = 1;
+        while (power * 2 < inSampleSize) {
+            power = power * 2;
+        }
+
+        return power;
+    }
+
+    /**
+     * Adjusts hypothetical future scale and translate values to keep scale within the allowed range and the image on screen. Minimum scale
+     * is set so one dimension fills the view and the image is centered on the other dimension. Used to calculate what the target of an
+     * animation should be.
+     * @param center Whether the image should be centered in the dimension it's too small to fill. While animating this can be false to avoid changes in direction as bounds are reached.
+     * @param sat The scale we want and the translation we're aiming for. The values are adjusted to be valid.
+     */
+    private void fitToBounds(boolean center, ScaleAndTranslate sat) {
+        if (panLimit == PAN_LIMIT_OUTSIDE && isReady()) {
+            center = false;
+        }
+
+        PointF vTranslate = sat.vTranslate;
+        float scale = limitedScale(sat.scale);
+        float scaleWidth = scale * sWidth();
+        float scaleHeight = scale * sHeight();
+
+        if (panLimit == PAN_LIMIT_CENTER && isReady()) {
+            vTranslate.x = Math.max(vTranslate.x, getWidth()/2 - scaleWidth);
+            vTranslate.y = Math.max(vTranslate.y, getHeight()/2 - scaleHeight);
+        } else if (center) {
+            vTranslate.x = Math.max(vTranslate.x, getWidth() - scaleWidth);
+            vTranslate.y = Math.max(vTranslate.y, getHeight() - scaleHeight);
+        } else {
+            vTranslate.x = Math.max(vTranslate.x, -scaleWidth);
+            vTranslate.y = Math.max(vTranslate.y, -scaleHeight);
+        }
+
+        // Asymmetric padding adjustments
+        float xPaddingRatio = getPaddingLeft() > 0 || getPaddingRight() > 0 ? getPaddingLeft()/(float)(getPaddingLeft() + getPaddingRight()) : 0.5f;
+        float yPaddingRatio = getPaddingTop() > 0 || getPaddingBottom() > 0 ? getPaddingTop()/(float)(getPaddingTop() + getPaddingBottom()) : 0.5f;
+
+        float maxTx;
+        float maxTy;
+        if (panLimit == PAN_LIMIT_CENTER && isReady()) {
+            maxTx = Math.max(0, getWidth()/2);
+            maxTy = Math.max(0, getHeight()/2);
+        } else if (center) {
+            maxTx = Math.max(0, (getWidth() - scaleWidth) * xPaddingRatio);
+            maxTy = Math.max(0, (getHeight() - scaleHeight) * yPaddingRatio);
+        } else {
+            maxTx = Math.max(0, getWidth());
+            maxTy = Math.max(0, getHeight());
+        }
+
+        vTranslate.x = Math.min(vTranslate.x, maxTx);
+        vTranslate.y = Math.min(vTranslate.y, maxTy);
+
+        sat.scale = scale;
+    }
+
+    /**
+     * Adjusts current scale and translate values to keep scale within the allowed range and the image on screen. Minimum scale
+     * is set so one dimension fills the view and the image is centered on the other dimension.
+     * @param center Whether the image should be centered in the dimension it's too small to fill. While animating this can be false to avoid changes in direction as bounds are reached.
+     */
+    private void fitToBounds(boolean center) {
+        boolean init = false;
+        if (vTranslate == null) {
+            init = true;
+            vTranslate = new PointF(0, 0);
+        }
+        if (satTemp == null) {
+            satTemp = new ScaleAndTranslate(0, new PointF(0, 0));
+        }
+        satTemp.scale = scale;
+        satTemp.vTranslate.set(vTranslate);
+        fitToBounds(center, satTemp);
+        scale = satTemp.scale;
+        vTranslate.set(satTemp.vTranslate);
+        if (init && minimumScaleType != SCALE_TYPE_START) {
+            vTranslate.set(vTranslateForSCenter(sWidth()/2, sHeight()/2, scale));
+        }
+    }
+
+    /**
+     * Once source image and view dimensions are known, creates a map of sample size to tile grid.
+     */
+    private void initialiseTileMap(Point maxTileDimensions) {
+        debug("initialiseTileMap maxTileDimensions=%dx%d", maxTileDimensions.x, maxTileDimensions.y);
+        this.tileMap = new LinkedHashMap<>();
+        int sampleSize = fullImageSampleSize;
+        int xTiles = 1;
+        int yTiles = 1;
+        while (true) {
+            int sTileWidth = sWidth()/xTiles;
+            int sTileHeight = sHeight()/yTiles;
+            int subTileWidth = sTileWidth/sampleSize;
+            int subTileHeight = sTileHeight/sampleSize;
+            while (subTileWidth + xTiles + 1 > maxTileDimensions.x || (subTileWidth > getWidth() * 1.25 && sampleSize < fullImageSampleSize)) {
+                xTiles += 1;
+                sTileWidth = sWidth()/xTiles;
+                subTileWidth = sTileWidth/sampleSize;
+            }
+            while (subTileHeight + yTiles + 1 > maxTileDimensions.y || (subTileHeight > getHeight() * 1.25 && sampleSize < fullImageSampleSize)) {
+                yTiles += 1;
+                sTileHeight = sHeight()/yTiles;
+                subTileHeight = sTileHeight/sampleSize;
+            }
+            List<Tile> tileGrid = new ArrayList<>(xTiles * yTiles);
+            for (int x = 0; x < xTiles; x++) {
+                for (int y = 0; y < yTiles; y++) {
+                    Tile tile = new Tile();
+                    tile.sampleSize = sampleSize;
+                    tile.visible = sampleSize == fullImageSampleSize;
+                    tile.sRect = new Rect(
+                        x * sTileWidth,
+                        y * sTileHeight,
+                        x == xTiles - 1 ? sWidth() : (x + 1) * sTileWidth,
+                        y == yTiles - 1 ? sHeight() : (y + 1) * sTileHeight
+                    );
+                    tile.vRect = new Rect(0, 0, 0, 0);
+                    tile.fileSRect = new Rect(tile.sRect);
+                    tileGrid.add(tile);
+                }
+            }
+            tileMap.put(sampleSize, tileGrid);
+            if (sampleSize == 1) {
+                break;
+            } else {
+                sampleSize /= 2;
+            }
+        }
+    }
+
+    /**
+     * Async task used to get image details without blocking the UI thread.
+     */
+    private static class TilesInitTask extends AsyncTask<Void, Void, int[]> {
+        private final WeakReference<SubsamplingScaleImageView> viewRef;
+        private final WeakReference<Context> contextRef;
+        private final WeakReference<DecoderFactory<? extends ImageRegionDecoder>> decoderFactoryRef;
+        private final Uri source;
+        private ImageRegionDecoder decoder;
+        private Exception exception;
+
+        TilesInitTask(SubsamplingScaleImageView view, Context context, DecoderFactory<? extends ImageRegionDecoder> decoderFactory, Uri source) {
+            this.viewRef = new WeakReference<>(view);
+            this.contextRef = new WeakReference<>(context);
+            this.decoderFactoryRef = new WeakReference<DecoderFactory<? extends ImageRegionDecoder>>(decoderFactory);
+            this.source = source;
+        }
+
+        @Override
+        protected int[] doInBackground(Void... params) {
+            try {
+                String sourceUri = source.toString();
+                Context context = contextRef.get();
+                DecoderFactory<? extends ImageRegionDecoder> decoderFactory = decoderFactoryRef.get();
+                SubsamplingScaleImageView view = viewRef.get();
+                if (context != null && decoderFactory != null && view != null) {
+                    view.debug("TilesInitTask.doInBackground");
+                    decoder = decoderFactory.make();
+                    Point dimensions = decoder.init(context, source);
+                    int sWidth = dimensions.x;
+                    int sHeight = dimensions.y;
+                    int exifOrientation = view.getExifOrientation(context, sourceUri);
+                    if (view.sRegion != null) {
+                        view.sRegion.left = Math.max(0, view.sRegion.left);
+                        view.sRegion.top = Math.max(0, view.sRegion.top);
+                        view.sRegion.right = Math.min(sWidth, view.sRegion.right);
+                        view.sRegion.bottom = Math.min(sHeight, view.sRegion.bottom);
+                        sWidth = view.sRegion.width();
+                        sHeight = view.sRegion.height();
+                    }
+                    return new int[] { sWidth, sHeight, exifOrientation };
+                }
+            } catch (Exception e) {
+                Log.e(TAG, "Failed to initialise bitmap decoder", e);
+                this.exception = e;
+            }
+            return null;
+        }
+
+        @Override
+        protected void onPostExecute(int[] xyo) {
+            final SubsamplingScaleImageView view = viewRef.get();
+            if (view != null) {
+                if (decoder != null && xyo != null && xyo.length == 3) {
+                    view.onTilesInited(decoder, xyo[0], xyo[1], xyo[2]);
+                } else if (exception != null && view.onImageEventListener != null) {
+                    view.onImageEventListener.onImageLoadError(exception);
+                }
+            }
+        }
+    }
+
+    /**
+     * Called by worker task when decoder is ready and image size and EXIF orientation is known.
+     */
+    private synchronized void onTilesInited(ImageRegionDecoder decoder, int sWidth, int sHeight, int sOrientation) {
+        debug("onTilesInited sWidth=%d, sHeight=%d, sOrientation=%d", sWidth, sHeight, orientation);
+        // If actual dimensions don't match the declared size, reset everything.
+        if (this.sWidth > 0 && this.sHeight > 0 && (this.sWidth != sWidth || this.sHeight != sHeight)) {
+            reset(false);
+            if (bitmap != null) {
+                if (!bitmapIsCached) {
+                    bitmap.recycle();
+                }
+                bitmap = null;
+                if (onImageEventListener != null && bitmapIsCached) {
+                    onImageEventListener.onPreviewReleased();
+                }
+                bitmapIsPreview = false;
+                bitmapIsCached = false;
+            }
+        }
+        this.decoder = decoder;
+        this.sWidth = sWidth;
+        this.sHeight = sHeight;
+        this.sOrientation = sOrientation;
+        checkReady();
+        if (!checkImageLoaded() && maxTileWidth > 0 && maxTileWidth != TILE_SIZE_AUTO && maxTileHeight > 0 && maxTileHeight != TILE_SIZE_AUTO && getWidth() > 0 && getHeight() > 0) {
+            initialiseBaseLayer(new Point(maxTileWidth, maxTileHeight));
+        }
+        invalidate();
+        requestLayout();
+    }
+
+    /**
+     * Async task used to load images without blocking the UI thread.
+     */
+    private static class TileLoadTask extends AsyncTask<Void, Void, Bitmap> {
+        private final WeakReference<SubsamplingScaleImageView> viewRef;
+        private final WeakReference<ImageRegionDecoder> decoderRef;
+        private final WeakReference<Tile> tileRef;
+        private Exception exception;
+
+        TileLoadTask(SubsamplingScaleImageView view, ImageRegionDecoder decoder, Tile tile) {
+            this.viewRef = new WeakReference<>(view);
+            this.decoderRef = new WeakReference<>(decoder);
+            this.tileRef = new WeakReference<>(tile);
+            tile.loading = true;
+        }
+
+        @Override
+        protected Bitmap doInBackground(Void... params) {
+            try {
+                SubsamplingScaleImageView view = viewRef.get();
+                ImageRegionDecoder decoder = decoderRef.get();
+                Tile tile = tileRef.get();
+                if (decoder != null && tile != null && view != null && decoder.isReady() && tile.visible) {
+                    view.debug("TileLoadTask.doInBackground, tile.sRect=%s, tile.sampleSize=%d", tile.sRect, tile.sampleSize);
+                    view.decoderLock.readLock().lock();
+                    try {
+                        if (decoder.isReady()) {
+                            // Update tile's file sRect according to rotation
+                            view.fileSRect(tile.sRect, tile.fileSRect);
+                            if (view.sRegion != null) {
+                                tile.fileSRect.offset(view.sRegion.left, view.sRegion.top);
+                            }
+                            return decoder.decodeRegion(tile.fileSRect, tile.sampleSize);
+                        } else {
+                            tile.loading = false;
+                        }
+                    } finally {
+                        view.decoderLock.readLock().unlock();
+                    }
+                } else if (tile != null) {
+                    tile.loading = false;
+                }
+            } catch (Exception e) {
+                Log.e(TAG, "Failed to decode tile", e);
+                this.exception = e;
+            } catch (OutOfMemoryError e) {
+                Log.e(TAG, "Failed to decode tile - OutOfMemoryError", e);
+                this.exception = new RuntimeException(e);
+            }
+            return null;
+        }
+
+        @Override
+        protected void onPostExecute(Bitmap bitmap) {
+            final SubsamplingScaleImageView subsamplingScaleImageView = viewRef.get();
+            final Tile tile = tileRef.get();
+            if (subsamplingScaleImageView != null && tile != null) {
+                if (bitmap != null) {
+                    tile.bitmap = bitmap;
+                    tile.loading = false;
+                    subsamplingScaleImageView.onTileLoaded();
+                } else if (exception != null && subsamplingScaleImageView.onImageEventListener != null) {
+                    subsamplingScaleImageView.onImageEventListener.onTileLoadError(exception);
+                }
+            }
+        }
+    }
+
+    /**
+     * Called by worker task when a tile has loaded. Redraws the view.
+     */
+    private synchronized void onTileLoaded() {
+        debug("onTileLoaded");
+        checkReady();
+        checkImageLoaded();
+        if (isBaseLayerReady() && bitmap != null) {
+            if (!bitmapIsCached) {
+                bitmap.recycle();
+            }
+            bitmap = null;
+            if (onImageEventListener != null && bitmapIsCached) {
+                onImageEventListener.onPreviewReleased();
+            }
+            bitmapIsPreview = false;
+            bitmapIsCached = false;
+        }
+        invalidate();
+    }
+
+    /**
+     * Async task used to load bitmap without blocking the UI thread.
+     */
+    private static class BitmapLoadTask extends AsyncTask<Void, Void, Integer> {
+        private final WeakReference<SubsamplingScaleImageView> viewRef;
+        private final WeakReference<Context> contextRef;
+        private final WeakReference<DecoderFactory<? extends ImageDecoder>> decoderFactoryRef;
+        private final Uri source;
+        private final boolean preview;
+        private Bitmap bitmap;
+        private Exception exception;
+
+        BitmapLoadTask(SubsamplingScaleImageView view, Context context, DecoderFactory<? extends ImageDecoder> decoderFactory, Uri source, boolean preview) {
+            this.viewRef = new WeakReference<>(view);
+            this.contextRef = new WeakReference<>(context);
+            this.decoderFactoryRef = new WeakReference<DecoderFactory<? extends ImageDecoder>>(decoderFactory);
+            this.source = source;
+            this.preview = preview;
+        }
+
+        @Override
+        protected Integer doInBackground(Void... params) {
+            try {
+                String sourceUri = source.toString();
+                Context context = contextRef.get();
+                DecoderFactory<? extends ImageDecoder> decoderFactory = decoderFactoryRef.get();
+                SubsamplingScaleImageView view = viewRef.get();
+                if (context != null && decoderFactory != null && view != null) {
+                    view.debug("BitmapLoadTask.doInBackground");
+                    bitmap = decoderFactory.make().decode(context, source);
+                    return view.getExifOrientation(context, sourceUri);
+                }
+            } catch (Exception e) {
+                Log.e(TAG, "Failed to load bitmap", e);
+                this.exception = e;
+            } catch (OutOfMemoryError e) {
+                Log.e(TAG, "Failed to load bitmap - OutOfMemoryError", e);
+                this.exception = new RuntimeException(e);
+            }
+            return null;
+        }
+
+        @Override
+        protected void onPostExecute(Integer orientation) {
+            SubsamplingScaleImageView subsamplingScaleImageView = viewRef.get();
+            if (subsamplingScaleImageView != null) {
+                if (bitmap != null && orientation != null) {
+                    if (preview) {
+                        subsamplingScaleImageView.onPreviewLoaded(bitmap);
+                    } else {
+                        subsamplingScaleImageView.onImageLoaded(bitmap, orientation, false);
+                    }
+                } else if (exception != null && subsamplingScaleImageView.onImageEventListener != null) {
+                    if (preview) {
+                        subsamplingScaleImageView.onImageEventListener.onPreviewLoadError(exception);
+                    } else {
+                        subsamplingScaleImageView.onImageEventListener.onImageLoadError(exception);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Called by worker task when preview image is loaded.
+     */
+    private synchronized void onPreviewLoaded(Bitmap previewBitmap) {
+        debug("onPreviewLoaded");
+        if (bitmap != null || imageLoadedSent) {
+            previewBitmap.recycle();
+            return;
+        }
+        if (pRegion != null) {
+            bitmap = Bitmap.createBitmap(previewBitmap, pRegion.left, pRegion.top, pRegion.width(), pRegion.height());
+        } else {
+            bitmap = previewBitmap;
+        }
+        bitmapIsPreview = true;
+        if (checkReady()) {
+            invalidate();
+            requestLayout();
+        }
+    }
+
+    /**
+     * Called by worker task when full size image bitmap is ready (tiling is disabled).
+     */
+    private synchronized void onImageLoaded(Bitmap bitmap, int sOrientation, boolean bitmapIsCached) {
+        debug("onImageLoaded");
+        // If actual dimensions don't match the declared size, reset everything.
+        if (this.sWidth > 0 && this.sHeight > 0 && (this.sWidth != bitmap.getWidth() || this.sHeight != bitmap.getHeight())) {
+            reset(false);
+        }
+        if (this.bitmap != null && !this.bitmapIsCached) {
+            this.bitmap.recycle();
+        }
+
+        if (this.bitmap != null && this.bitmapIsCached && onImageEventListener!=null) {
+            onImageEventListener.onPreviewReleased();
+        }
+
+        this.bitmapIsPreview = false;
+        this.bitmapIsCached = bitmapIsCached;
+        this.bitmap = bitmap;
+        this.sWidth = bitmap.getWidth();
+        this.sHeight = bitmap.getHeight();
+        this.sOrientation = sOrientation;
+        boolean ready = checkReady();
+        boolean imageLoaded = checkImageLoaded();
+        if (ready || imageLoaded) {
+            invalidate();
+            requestLayout();
+        }
+    }
+
+    /**
+     * Helper method for load tasks. Examines the EXIF info on the image file to determine the orientation.
+     * This will only work for external files, not assets, resources or other URIs.
+     */
+    @AnyThread
+    private int getExifOrientation(Context context, String sourceUri) {
+        int exifOrientation = ORIENTATION_0;
+        if (sourceUri.startsWith(ContentResolver.SCHEME_CONTENT)) {
+            Cursor cursor = null;
+            try {
+                String[] columns = { MediaStore.Images.Media.ORIENTATION };
+                cursor = context.getContentResolver().query(Uri.parse(sourceUri), columns, null, null, null);
+                if (cursor != null) {
+                    if (cursor.moveToFirst()) {
+                        int orientation = cursor.getInt(0);
+                        if (VALID_ORIENTATIONS.contains(orientation) && orientation != ORIENTATION_USE_EXIF) {
+                            exifOrientation = orientation;
+                        } else {
+                            Log.w(TAG, "Unsupported orientation: " + orientation);
+                        }
+                    }
+                }
+            } catch (Exception e) {
+                Log.w(TAG, "Could not get orientation of image from media store");
+            } finally {
+                if (cursor != null) {
+                    cursor.close();
+                }
+            }
+        } else if (sourceUri.startsWith(ImageSource.FILE_SCHEME) && !sourceUri.startsWith(ImageSource.ASSET_SCHEME)) {
+            try {
+                ExifInterface exifInterface = new ExifInterface(sourceUri.substring(ImageSource.FILE_SCHEME.length() - 1));
+                int orientationAttr = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
+                if (orientationAttr == ExifInterface.ORIENTATION_NORMAL || orientationAttr == ExifInterface.ORIENTATION_UNDEFINED) {
+                    exifOrientation = ORIENTATION_0;
+                } else if (orientationAttr == ExifInterface.ORIENTATION_ROTATE_90) {
+                    exifOrientation = ORIENTATION_90;
+                } else if (orientationAttr == ExifInterface.ORIENTATION_ROTATE_180) {
+                    exifOrientation = ORIENTATION_180;
+                } else if (orientationAttr == ExifInterface.ORIENTATION_ROTATE_270) {
+                    exifOrientation = ORIENTATION_270;
+                } else {
+                    Log.w(TAG, "Unsupported EXIF orientation: " + orientationAttr);
+                }
+            } catch (Exception e) {
+                Log.w(TAG, "Could not get EXIF orientation of image");
+            }
+        }
+        return exifOrientation;
+    }
+
+    private void execute(AsyncTask<Void, Void, ?> asyncTask) {
+        asyncTask.executeOnExecutor(executor);
+    }
+
+    private static class Tile {
+
+        private Rect sRect;
+        private int sampleSize;
+        private Bitmap bitmap;
+        private boolean loading;
+        private boolean visible;
+
+        // Volatile fields instantiated once then updated before use to reduce GC.
+        private Rect vRect;
+        private Rect fileSRect;
+
+    }
+
+    private static class Anim {
+
+        private float scaleStart; // Scale at start of anim
+        private float scaleEnd; // Scale at end of anim (target)
+        private PointF sCenterStart; // Source center point at start
+        private PointF sCenterEnd; // Source center point at end, adjusted for pan limits
+        private PointF sCenterEndRequested; // Source center point that was requested, without adjustment
+        private PointF vFocusStart; // View point that was double tapped
+        private PointF vFocusEnd; // Where the view focal point should be moved to during the anim
+        private long duration = 500; // How long the anim takes
+        private boolean interruptible = true; // Whether the anim can be interrupted by a touch
+        private int easing = EASE_IN_OUT_QUAD; // Easing style
+        private int origin = ORIGIN_ANIM; // Animation origin (API, double tap or fling)
+        private long time = System.currentTimeMillis(); // Start time
+        private OnAnimationEventListener listener; // Event listener
+
+    }
+
+    private static class ScaleAndTranslate {
+        private ScaleAndTranslate(float scale, PointF vTranslate) {
+            this.scale = scale;
+            this.vTranslate = vTranslate;
+        }
+        private float scale;
+        private final PointF vTranslate;
+    }
+
+    /**
+     * Set scale, center and orientation from saved state.
+     */
+    private void restoreState(ImageViewState state) {
+        if (state != null && state.getCenter() != null && VALID_ORIENTATIONS.contains(state.getOrientation())) {
+            this.orientation = state.getOrientation();
+            this.pendingScale = state.getScale();
+            this.sPendingCenter = state.getCenter();
+            invalidate();
+        }
+    }
+
+    /**
+     * By default the View automatically calculates the optimal tile size. Set this to override this, and force an upper limit to the dimensions of the generated tiles. Passing {@link #TILE_SIZE_AUTO} will re-enable the default behaviour.
+     *
+     * @param maxPixels Maximum tile size X and Y in pixels.
+     */
+    public void setMaxTileSize(int maxPixels) {
+        this.maxTileWidth = maxPixels;
+        this.maxTileHeight = maxPixels;
+    }
+
+    /**
+     * By default the View automatically calculates the optimal tile size. Set this to override this, and force an upper limit to the dimensions of the generated tiles. Passing {@link #TILE_SIZE_AUTO} will re-enable the default behaviour.
+     *
+     * @param maxPixelsX Maximum tile width.
+     * @param maxPixelsY Maximum tile height.
+     */
+    public void setMaxTileSize(int maxPixelsX, int maxPixelsY) {
+        this.maxTileWidth = maxPixelsX;
+        this.maxTileHeight = maxPixelsY;
+    }
+
+    /**
+     * Use canvas max bitmap width and height instead of the default 2048, to avoid redundant tiling.
+     */
+    private Point getMaxBitmapDimensions(Canvas canvas) {
+        return new Point(Math.min(canvas.getMaximumBitmapWidth(), maxTileWidth), Math.min(canvas.getMaximumBitmapHeight(), maxTileHeight));
+    }
+
+    /**
+     * Get source width taking rotation into account.
+     */
+    @SuppressWarnings("SuspiciousNameCombination")
+    private int sWidth() {
+        int rotation = getRequiredRotation();
+        if (rotation == 90 || rotation == 270) {
+            return sHeight;
+        } else {
+            return sWidth;
+        }
+    }
+
+    /**
+     * Get source height taking rotation into account.
+     */
+    @SuppressWarnings("SuspiciousNameCombination")
+    private int sHeight() {
+        int rotation = getRequiredRotation();
+        if (rotation == 90 || rotation == 270) {
+            return sWidth;
+        } else {
+            return sHeight;
+        }
+    }
+
+    /**
+     * Converts source rectangle from tile, which treats the image file as if it were in the correct orientation already,
+     * to the rectangle of the image that needs to be loaded.
+     */
+    @SuppressWarnings("SuspiciousNameCombination")
+    @AnyThread
+    private void fileSRect(Rect sRect, Rect target) {
+        if (getRequiredRotation() == 0) {
+            target.set(sRect);
+        } else if (getRequiredRotation() == 90) {
+            target.set(sRect.top, sHeight - sRect.right, sRect.bottom, sHeight - sRect.left);
+        } else if (getRequiredRotation() == 180) {
+            target.set(sWidth - sRect.right, sHeight - sRect.bottom, sWidth - sRect.left, sHeight - sRect.top);
+        } else {
+            target.set(sWidth - sRect.bottom, sRect.left, sWidth - sRect.top, sRect.right);
+        }
+    }
+
+    /**
+     * Determines the rotation to be applied to tiles, based on EXIF orientation or chosen setting.
+     */
+    @AnyThread
+    private int getRequiredRotation() {
+        if (orientation == ORIENTATION_USE_EXIF) {
+            return sOrientation;
+        } else {
+            return orientation;
+        }
+    }
+
+    /**
+     * Pythagoras distance between two points.
+     */
+    private float distance(float x0, float x1, float y0, float y1) {
+        float x = x0 - x1;
+        float y = y0 - y1;
+        return (float) Math.sqrt(x * x + y * y);
+    }
+
+    /**
+     * Releases all resources the view is using and resets the state, nulling any fields that use significant memory.
+     * After you have called this method, the view can be re-used by setting a new image. Settings are remembered
+     * but state (scale and center) is forgotten. You can restore these yourself if required.
+     */
+    public void recycle() {
+        reset(true);
+        bitmapPaint = null;
+        debugTextPaint = null;
+        debugLinePaint = null;
+        tileBgPaint = null;
+    }
+
+    /**
+     * Convert screen to source x coordinate.
+     */
+    private float viewToSourceX(float vx) {
+        if (vTranslate == null) { return Float.NaN; }
+        return (vx - vTranslate.x)/scale;
+    }
+
+    /**
+     * Convert screen to source y coordinate.
+     */
+    private float viewToSourceY(float vy) {
+        if (vTranslate == null) { return Float.NaN; }
+        return (vy - vTranslate.y)/scale;
+    }
+
+    /**
+     * Converts a rectangle within the view to the corresponding rectangle from the source file, taking
+     * into account the current scale, translation, orientation and clipped region. This can be used
+     * to decode a bitmap from the source file.
+     *
+     * This method will only work when the image has fully initialised, after {@link #isReady()} returns
+     * true. It is not guaranteed to work with preloaded bitmaps.
+     *
+     * The result is written to the fRect argument. Re-use a single instance for efficiency.
+     * @param vRect rectangle representing the view area to interpret.
+     * @param fRect rectangle instance to which the result will be written. Re-use for efficiency.
+     */
+    public void viewToFileRect(Rect vRect, Rect fRect) {
+        if (vTranslate == null || !readySent) {
+            return;
+        }
+        fRect.set(
+                (int)viewToSourceX(vRect.left),
+                (int)viewToSourceY(vRect.top),
+                (int)viewToSourceX(vRect.right),
+                (int)viewToSourceY(vRect.bottom));
+        fileSRect(fRect, fRect);
+        fRect.set(
+                Math.max(0, fRect.left),
+                Math.max(0, fRect.top),
+                Math.min(sWidth, fRect.right),
+                Math.min(sHeight, fRect.bottom)
+        );
+        if (sRegion != null) {
+            fRect.offset(sRegion.left, sRegion.top);
+        }
+    }
+
+    /**
+     * Find the area of the source file that is currently visible on screen, taking into account the
+     * current scale, translation, orientation and clipped region. This is a convenience method; see
+     * {@link #viewToFileRect(Rect, Rect)}.
+     * @param fRect rectangle instance to which the result will be written. Re-use for efficiency.
+     */
+    public void visibleFileRect(Rect fRect) {
+        if (vTranslate == null || !readySent) {
+            return;
+        }
+        fRect.set(0, 0, getWidth(), getHeight());
+        viewToFileRect(fRect, fRect);
+    }
+
+    /**
+     * Convert screen coordinate to source coordinate.
+     * @param vxy view X/Y coordinate.
+     * @return a coordinate representing the corresponding source coordinate.
+     */
+    public final PointF viewToSourceCoord(PointF vxy) {
+        return viewToSourceCoord(vxy.x, vxy.y, new PointF());
+    }
+
+    /**
+     * Convert screen coordinate to source coordinate.
+     * @param vx view X coordinate.
+     * @param vy view Y coordinate.
+     * @return a coordinate representing the corresponding source coordinate.
+     */
+    public final PointF viewToSourceCoord(float vx, float vy) {
+        return viewToSourceCoord(vx, vy, new PointF());
+    }
+
+    /**
+     * Convert screen coordinate to source coordinate.
+     * @param vxy view coordinates to convert.
+     * @param sTarget target object for result. The same instance is also returned.
+     * @return source coordinates. This is the same instance passed to the sTarget param.
+     */
+    public final PointF viewToSourceCoord(PointF vxy, PointF sTarget) {
+        return viewToSourceCoord(vxy.x, vxy.y, sTarget);
+    }
+
+    /**
+     * Convert screen coordinate to source coordinate.
+     * @param vx view X coordinate.
+     * @param vy view Y coordinate.
+     * @param sTarget target object for result. The same instance is also returned.
+     * @return source coordinates. This is the same instance passed to the sTarget param.
+     */
+    public final PointF viewToSourceCoord(float vx, float vy, PointF sTarget) {
+        if (vTranslate == null) {
+            return null;
+        }
+        sTarget.set(viewToSourceX(vx), viewToSourceY(vy));
+        return sTarget;
+    }
+
+    /**
+     * Convert source to view x coordinate.
+     */
+    private float sourceToViewX(float sx) {
+        if (vTranslate == null) { return Float.NaN; }
+        return (sx * scale) + vTranslate.x;
+    }
+
+    /**
+     * Convert source to view y coordinate.
+     */
+    private float sourceToViewY(float sy) {
+        if (vTranslate == null) { return Float.NaN; }
+        return (sy * scale) + vTranslate.y;
+    }
+
+    /**
+     * Convert source coordinate to view coordinate.
+     * @param sxy source coordinates to convert.
+     * @return view coordinates.
+     */
+    public final PointF sourceToViewCoord(PointF sxy) {
+        return sourceToViewCoord(sxy.x, sxy.y, new PointF());
+    }
+
+    /**
+     * Convert source coordinate to view coordinate.
+     * @param sx source X coordinate.
+     * @param sy source Y coordinate.
+     * @return view coordinates.
+     */
+    public final PointF sourceToViewCoord(float sx, float sy) {
+        return sourceToViewCoord(sx, sy, new PointF());
+    }
+
+    /**
+     * Convert source coordinate to view coordinate.
+     * @param sxy source coordinates to convert.
+     * @param vTarget target object for result. The same instance is also returned.
+     * @return view coordinates. This is the same instance passed to the vTarget param.
+     */
+    @SuppressWarnings("UnusedReturnValue")
+    public final PointF sourceToViewCoord(PointF sxy, PointF vTarget) {
+        return sourceToViewCoord(sxy.x, sxy.y, vTarget);
+    }
+
+    /**
+     * Convert source coordinate to view coordinate.
+     * @param sx source X coordinate.
+     * @param sy source Y coordinate.
+     * @param vTarget target object for result. The same instance is also returned.
+     * @return view coordinates. This is the same instance passed to the vTarget param.
+     */
+    public final PointF sourceToViewCoord(float sx, float sy, PointF vTarget) {
+        if (vTranslate == null) {
+            return null;
+        }
+        vTarget.set(sourceToViewX(sx), sourceToViewY(sy));
+        return vTarget;
+    }
+
+    /**
+     * Convert source rect to screen rect, integer values.
+     */
+    private void sourceToViewRect(Rect sRect, Rect vTarget) {
+        vTarget.set(
+            (int)sourceToViewX(sRect.left),
+            (int)sourceToViewY(sRect.top),
+            (int)sourceToViewX(sRect.right),
+            (int)sourceToViewY(sRect.bottom)
+        );
+    }
+
+    /**
+     * Get the translation required to place a given source coordinate at the center of the screen, with the center
+     * adjusted for asymmetric padding. Accepts the desired scale as an argument, so this is independent of current
+     * translate and scale. The result is fitted to bounds, putting the image point as near to the screen center as permitted.
+     */
+    private PointF vTranslateForSCenter(float sCenterX, float sCenterY, float scale) {
+        int vxCenter = getPaddingLeft() + (getWidth() - getPaddingRight() - getPaddingLeft())/2;
+        int vyCenter = getPaddingTop() + (getHeight() - getPaddingBottom() - getPaddingTop())/2;
+        if (satTemp == null) {
+            satTemp = new ScaleAndTranslate(0, new PointF(0, 0));
+        }
+        satTemp.scale = scale;
+        satTemp.vTranslate.set(vxCenter - (sCenterX * scale), vyCenter - (sCenterY * scale));
+        fitToBounds(true, satTemp);
+        return satTemp.vTranslate;
+    }
+
+    /**
+     * Given a requested source center and scale, calculate what the actual center will have to be to keep the image in
+     * pan limits, keeping the requested center as near to the middle of the screen as allowed.
+     */
+    private PointF limitedSCenter(float sCenterX, float sCenterY, float scale, PointF sTarget) {
+        PointF vTranslate = vTranslateForSCenter(sCenterX, sCenterY, scale);
+        int vxCenter = getPaddingLeft() + (getWidth() - getPaddingRight() - getPaddingLeft())/2;
+        int vyCenter = getPaddingTop() + (getHeight() - getPaddingBottom() - getPaddingTop())/2;
+        float sx = (vxCenter - vTranslate.x)/scale;
+        float sy = (vyCenter - vTranslate.y)/scale;
+        sTarget.set(sx, sy);
+        return sTarget;
+    }
+
+    /**
+     * Returns the minimum allowed scale.
+     */
+    private float minScale() {
+        int vPadding = getPaddingBottom() + getPaddingTop();
+        int hPadding = getPaddingLeft() + getPaddingRight();
+        if (minimumScaleType == SCALE_TYPE_CENTER_CROP || minimumScaleType == SCALE_TYPE_START) {
+            return Math.max((getWidth() - hPadding) / (float) sWidth(), (getHeight() - vPadding) / (float) sHeight());
+        } else if (minimumScaleType == SCALE_TYPE_CUSTOM && minScale > 0) {
+            return minScale;
+        } else {
+            return Math.min((getWidth() - hPadding) / (float) sWidth(), (getHeight() - vPadding) / (float) sHeight());
+        }
+    }
+
+    /**
+     * Adjust a requested scale to be within the allowed limits.
+     */
+    private float limitedScale(float targetScale) {
+        targetScale = Math.max(minScale(), targetScale);
+        targetScale = Math.min(maxScale, targetScale);
+        return targetScale;
+    }
+
+    /**
+     * Apply a selected type of easing.
+     * @param type Easing type, from static fields
+     * @param time Elapsed time
+     * @param from Start value
+     * @param change Target value
+     * @param duration Anm duration
+     * @return Current value
+     */
+    private float ease(int type, long time, float from, float change, long duration) {
+        switch (type) {
+            case EASE_IN_OUT_QUAD:
+                return easeInOutQuad(time, from, change, duration);
+            case EASE_OUT_QUAD:
+                return easeOutQuad(time, from, change, duration);
+            default:
+                throw new IllegalStateException("Unexpected easing type: " + type);
+        }
+    }
+
+    /**
+     * Quadratic easing for fling. With thanks to Robert Penner - http://gizma.com/easing/
+     * @param time Elapsed time
+     * @param from Start value
+     * @param change Target value
+     * @param duration Anm duration
+     * @return Current value
+     */
+    private float easeOutQuad(long time, float from, float change, long duration) {
+        float progress = (float)time/(float)duration;
+        return -change * progress*(progress-2) + from;
+    }
+
+    /**
+     * Quadratic easing for scale and center animations. With thanks to Robert Penner - http://gizma.com/easing/
+     * @param time Elapsed time
+     * @param from Start value
+     * @param change Target value
+     * @param duration Anm duration
+     * @return Current value
+     */
+    private float easeInOutQuad(long time, float from, float change, long duration) {
+        float timeF = time/(duration/2f);
+        if (timeF < 1) {
+            return (change/2f * timeF * timeF) + from;
+        } else {
+            timeF--;
+            return (-change/2f) * (timeF * (timeF - 2) - 1) + from;
+        }
+    }
+
+    /**
+     * Debug logger
+     */
+    @AnyThread
+    private void debug(String message, Object... args) {
+        if (debug) {
+            Log.d(TAG, String.format(message, args));
+        }
+    }
+
+    /**
+     * For debug overlays. Scale pixel value according to screen density.
+     */
+    private int px(int px) {
+        return (int)(density * px);
+    }
+
+    /**
+     *
+     * Swap the default region decoder implementation for one of your own. You must do this before setting the image file or
+     * asset, and you cannot use a custom decoder when using layout XML to set an asset name. Your class must have a
+     * public default constructor.
+     * @param regionDecoderClass The {@link ImageRegionDecoder} implementation to use.
+     */
+    public final void setRegionDecoderClass(Class<? extends ImageRegionDecoder> regionDecoderClass) {
+        if (regionDecoderClass == null) {
+            throw new IllegalArgumentException("Decoder class cannot be set to null");
+        }
+        this.regionDecoderFactory = new CompatDecoderFactory<>(regionDecoderClass);
+    }
+
+    /**
+     * Swap the default region decoder implementation for one of your own. You must do this before setting the image file or
+     * asset, and you cannot use a custom decoder when using layout XML to set an asset name.
+     * @param regionDecoderFactory The {@link DecoderFactory} implementation that produces {@link ImageRegionDecoder}
+     *                             instances.
+     */
+    public final void setRegionDecoderFactory(DecoderFactory<? extends ImageRegionDecoder> regionDecoderFactory) {
+        if (regionDecoderFactory == null) {
+            throw new IllegalArgumentException("Decoder factory cannot be set to null");
+        }
+        this.regionDecoderFactory = regionDecoderFactory;
+    }
+
+    /**
+     * Swap the default bitmap decoder implementation for one of your own. You must do this before setting the image file or
+     * asset, and you cannot use a custom decoder when using layout XML to set an asset name. Your class must have a
+     * public default constructor.
+     * @param bitmapDecoderClass The {@link ImageDecoder} implementation to use.
+     */
+    public final void setBitmapDecoderClass(Class<? extends ImageDecoder> bitmapDecoderClass) {
+        if (bitmapDecoderClass == null) {
+            throw new IllegalArgumentException("Decoder class cannot be set to null");
+        }
+        this.bitmapDecoderFactory = new CompatDecoderFactory<>(bitmapDecoderClass);
+    }
+
+    /**
+     * Swap the default bitmap decoder implementation for one of your own. You must do this before setting the image file or
+     * asset, and you cannot use a custom decoder when using layout XML to set an asset name.
+     * @param bitmapDecoderFactory The {@link DecoderFactory} implementation that produces {@link ImageDecoder} instances.
+     */
+    public final void setBitmapDecoderFactory(DecoderFactory<? extends ImageDecoder> bitmapDecoderFactory) {
+        if (bitmapDecoderFactory == null) {
+            throw new IllegalArgumentException("Decoder factory cannot be set to null");
+        }
+        this.bitmapDecoderFactory = bitmapDecoderFactory;
+    }
+
+    /**
+     * Calculate how much further the image can be panned in each direction. The results are set on
+     * the supplied {@link RectF} and expressed as screen pixels. For example, if the image cannot be
+     * panned any further towards the left, the value of {@link RectF#left} will be set to 0.
+     * @param vTarget target object for results. Re-use for efficiency.
+     */
+    public final void getPanRemaining(RectF vTarget) {
+        if (!isReady()) {
+            return;
+        }
+
+        float scaleWidth = scale * sWidth();
+        float scaleHeight = scale * sHeight();
+
+        if (panLimit == PAN_LIMIT_CENTER) {
+            vTarget.top = Math.max(0, -(vTranslate.y - (getHeight() / 2)));
+            vTarget.left = Math.max(0, -(vTranslate.x - (getWidth() / 2)));
+            vTarget.bottom = Math.max(0, vTranslate.y - ((getHeight() / 2) - scaleHeight));
+            vTarget.right = Math.max(0, vTranslate.x - ((getWidth() / 2) - scaleWidth));
+        } else if (panLimit == PAN_LIMIT_OUTSIDE) {
+            vTarget.top = Math.max(0, -(vTranslate.y - getHeight()));
+            vTarget.left = Math.max(0, -(vTranslate.x - getWidth()));
+            vTarget.bottom = Math.max(0, vTranslate.y + scaleHeight);
+            vTarget.right = Math.max(0, vTranslate.x + scaleWidth);
+        } else {
+            vTarget.top = Math.max(0, -vTranslate.y);
+            vTarget.left = Math.max(0, -vTranslate.x);
+            vTarget.bottom = Math.max(0, (scaleHeight + vTranslate.y) - getHeight());
+            vTarget.right = Math.max(0, (scaleWidth + vTranslate.x) - getWidth());
+        }
+    }
+
+    /**
+     * Set the pan limiting style. See static fields. Normally {@link #PAN_LIMIT_INSIDE} is best, for image galleries.
+     * @param panLimit a pan limit constant. See static fields.
+     */
+    public final void setPanLimit(int panLimit) {
+        if (!VALID_PAN_LIMITS.contains(panLimit)) {
+            throw new IllegalArgumentException("Invalid pan limit: " + panLimit);
+        }
+        this.panLimit = panLimit;
+        if (isReady()) {
+            fitToBounds(true);
+            invalidate();
+        }
+    }
+
+    /**
+     * Set the minimum scale type. See static fields. Normally {@link #SCALE_TYPE_CENTER_INSIDE} is best, for image galleries.
+     * @param scaleType a scale type constant. See static fields.
+     */
+    public final void setMinimumScaleType(int scaleType) {
+        if (!VALID_SCALE_TYPES.contains(scaleType)) {
+            throw new IllegalArgumentException("Invalid scale type: " + scaleType);
+        }
+        this.minimumScaleType = scaleType;
+        if (isReady()) {
+            fitToBounds(true);
+            invalidate();
+        }
+    }
+
+    /**
+     * Set the maximum scale allowed. A value of 1 means 1:1 pixels at maximum scale. You may wish to set this according
+     * to screen density - on a retina screen, 1:1 may still be too small. Consider using {@link #setMinimumDpi(int)},
+     * which is density aware.
+     * @param maxScale maximum scale expressed as a source/view pixels ratio.
+     */
+    public final void setMaxScale(float maxScale) {
+        this.maxScale = maxScale;
+    }
+
+    /**
+     * Set the minimum scale allowed. A value of 1 means 1:1 pixels at minimum scale. You may wish to set this according
+     * to screen density. Consider using {@link #setMaximumDpi(int)}, which is density aware.
+     * @param minScale minimum scale expressed as a source/view pixels ratio.
+     */
+    public final void setMinScale(float minScale) {
+        this.minScale = minScale;
+    }
+
+    /**
+     * This is a screen density aware alternative to {@link #setMaxScale(float)}; it allows you to express the maximum
+     * allowed scale in terms of the minimum pixel density. This avoids the problem of 1:1 scale still being
+     * too small on a high density screen. A sensible starting point is 160 - the default used by this view.
+     * @param dpi Source image pixel density at maximum zoom.
+     */
+    public final void setMinimumDpi(int dpi) {
+        DisplayMetrics metrics = getResources().getDisplayMetrics();
+        float averageDpi = (metrics.xdpi + metrics.ydpi)/2;
+        setMaxScale(averageDpi/dpi);
+    }
+
+    /**
+     * This is a screen density aware alternative to {@link #setMinScale(float)}; it allows you to express the minimum
+     * allowed scale in terms of the maximum pixel density.
+     * @param dpi Source image pixel density at minimum zoom.
+     */
+    public final void setMaximumDpi(int dpi) {
+        DisplayMetrics metrics = getResources().getDisplayMetrics();
+        float averageDpi = (metrics.xdpi + metrics.ydpi)/2;
+        setMinScale(averageDpi / dpi);
+    }
+
+    /**
+     * Returns the maximum allowed scale.
+     * @return the maximum scale as a source/view pixels ratio.
+     */
+    public float getMaxScale() {
+        return maxScale;
+    }
+
+    /**
+     * Returns the minimum allowed scale.
+     * @return the minimum scale as a source/view pixels ratio.
+     */
+    public final float getMinScale() {
+        return minScale();
+    }
+
+    /**
+     * By default, image tiles are at least as high resolution as the screen. For a retina screen this may not be
+     * necessary, and may increase the likelihood of an OutOfMemoryError. This method sets a DPI at which higher
+     * resolution tiles should be loaded. Using a lower number will on average use less memory but result in a lower
+     * quality image. 160-240dpi will usually be enough. This should be called before setting the image source,
+     * because it affects which tiles get loaded. When using an untiled source image this method has no effect.
+     * @param minimumTileDpi Tile loading threshold.
+     */
+    public void setMinimumTileDpi(int minimumTileDpi) {
+        DisplayMetrics metrics = getResources().getDisplayMetrics();
+        float averageDpi = (metrics.xdpi + metrics.ydpi)/2;
+        this.minimumTileDpi = (int)Math.min(averageDpi, minimumTileDpi);
+        if (isReady()) {
+            reset(false);
+            invalidate();
+        }
+    }
+
+    /**
+     * Returns the source point at the center of the view.
+     * @return the source coordinates current at the center of the view.
+     */
+    public final PointF getCenter() {
+        int mX = getWidth()/2;
+        int mY = getHeight()/2;
+        return viewToSourceCoord(mX, mY);
+    }
+
+    /**
+     * Returns the current scale value.
+     * @return the current scale as a source/view pixels ratio.
+     */
+    public final float getScale() {
+        return scale;
+    }
+
+    /**
+     * Externally change the scale and translation of the source image. This may be used with getCenter() and getScale()
+     * to restore the scale and zoom after a screen rotate.
+     * @param scale New scale to set.
+     * @param sCenter New source image coordinate to center on the screen, subject to boundaries.
+     */
+    public final void setScaleAndCenter(float scale, PointF sCenter) {
+        this.anim = null;
+        this.pendingScale = scale;
+        this.sPendingCenter = sCenter;
+        this.sRequestedCenter = sCenter;
+        invalidate();
+    }
+
+    /**
+     * Fully zoom out and return the image to the middle of the screen. This might be useful if you have a view pager
+     * and want images to be reset when the user has moved to another page.
+     */
+    public final void resetScaleAndCenter() {
+        this.anim = null;
+        this.pendingScale = limitedScale(0);
+        if (isReady()) {
+            this.sPendingCenter = new PointF(sWidth()/2, sHeight()/2);
+        } else {
+            this.sPendingCenter = new PointF(0, 0);
+        }
+        invalidate();
+    }
+
+    /**
+     * Call to find whether the view is initialised, has dimensions, and will display an image on
+     * the next draw. If a preview has been provided, it may be the preview that will be displayed
+     * and the full size image may still be loading. If no preview was provided, this is called once
+     * the base layer tiles of the full size image are loaded.
+     * @return true if the view is ready to display an image and accept touch gestures.
+     */
+    public final boolean isReady() {
+        return readySent;
+    }
+
+    /**
+     * Called once when the view is initialised, has dimensions, and will display an image on the
+     * next draw. This is triggered at the same time as {@link OnImageEventListener#onReady()} but
+     * allows a subclass to receive this event without using a listener.
+     */
+    @SuppressWarnings("EmptyMethod")
+    protected void onReady() {
+
+    }
+
+    /**
+     * Call to find whether the main image (base layer tiles where relevant) have been loaded. Before
+     * this event the view is blank unless a preview was provided.
+     * @return true if the main image (not the preview) has been loaded and is ready to display.
+     */
+    public final boolean isImageLoaded() {
+        return imageLoadedSent;
+    }
+
+    /**
+     * Called once when the full size image or its base layer tiles have been loaded.
+     */
+    @SuppressWarnings("EmptyMethod")
+    protected void onImageLoaded() {
+
+    }
+
+    /**
+     * Get source width, ignoring orientation. If {@link #getOrientation()} returns 90 or 270, you can use {@link #getSHeight()}
+     * for the apparent width.
+     * @return the source image width in pixels.
+     */
+    public final int getSWidth() {
+        return sWidth;
+    }
+
+    /**
+     * Get source height, ignoring orientation. If {@link #getOrientation()} returns 90 or 270, you can use {@link #getSWidth()}
+     * for the apparent height.
+     * @return the source image height in pixels.
+     */
+    public final int getSHeight() {
+        return sHeight;
+    }
+
+    /**
+     * Returns the orientation setting. This can return {@link #ORIENTATION_USE_EXIF}, in which case it doesn't tell you
+     * the applied orientation of the image. For that, use {@link #getAppliedOrientation()}.
+     * @return the orientation setting. See static fields.
+     */
+    public final int getOrientation() {
+        return orientation;
+    }
+
+    /**
+     * Returns the actual orientation of the image relative to the source file. This will be based on the source file's
+     * EXIF orientation if you're using ORIENTATION_USE_EXIF. Values are 0, 90, 180, 270.
+     * @return the orientation applied after EXIF information has been extracted. See static fields.
+     */
+    public final int getAppliedOrientation() {
+        return getRequiredRotation();
+    }
+
+    /**
+     * Get the current state of the view (scale, center, orientation) for restoration after rotate. Will return null if
+     * the view is not ready.
+     * @return an {@link ImageViewState} instance representing the current position of the image. null if the view isn't ready.
+     */
+    public final ImageViewState getState() {
+        if (vTranslate != null && sWidth > 0 && sHeight > 0) {
+            return new ImageViewState(getScale(), getCenter(), getOrientation());
+        }
+        return null;
+    }
+
+    /**
+     * Returns true if zoom gesture detection is enabled.
+     * @return true if zoom gesture detection is enabled.
+     */
+    public final boolean isZoomEnabled() {
+        return zoomEnabled;
+    }
+
+    /**
+     * Enable or disable zoom gesture detection. Disabling zoom locks the the current scale.
+     * @param zoomEnabled true to enable zoom gestures, false to disable.
+     */
+    public final void setZoomEnabled(boolean zoomEnabled) {
+        this.zoomEnabled = zoomEnabled;
+    }
+
+    /**
+     * Returns true if double tap &amp; swipe to zoom is enabled.
+     * @return true if double tap &amp; swipe to zoom is enabled.
+     */
+    public final boolean isQuickScaleEnabled() {
+        return quickScaleEnabled;
+    }
+
+    /**
+     * Enable or disable double tap &amp; swipe to zoom.
+     * @param quickScaleEnabled true to enable quick scale, false to disable.
+     */
+    public final void setQuickScaleEnabled(boolean quickScaleEnabled) {
+        this.quickScaleEnabled = quickScaleEnabled;
+    }
+
+    /**
+     * Returns true if pan gesture detection is enabled.
+     * @return true if pan gesture detection is enabled.
+     */
+    public final boolean isPanEnabled() {
+        return panEnabled;
+    }
+
+    /**
+     * Enable or disable pan gesture detection. Disabling pan causes the image to be centered. Pan
+     * can still be changed from code.
+     * @param panEnabled true to enable panning, false to disable.
+     */
+    public final void setPanEnabled(boolean panEnabled) {
+        this.panEnabled = panEnabled;
+        if (!panEnabled && vTranslate != null) {
+            vTranslate.x = (getWidth()/2) - (scale * (sWidth()/2));
+            vTranslate.y = (getHeight()/2) - (scale * (sHeight()/2));
+            if (isReady()) {
+                refreshRequiredTiles(true);
+                invalidate();
+            }
+        }
+    }
+
+    /**
+     * Set a solid color to render behind tiles, useful for displaying transparent PNGs.
+     * @param tileBgColor Background color for tiles.
+     */
+    public final void setTileBackgroundColor(int tileBgColor) {
+        if (Color.alpha(tileBgColor) == 0) {
+            tileBgPaint = null;
+        } else {
+            tileBgPaint = new Paint();
+            tileBgPaint.setStyle(Style.FILL);
+            tileBgPaint.setColor(tileBgColor);
+        }
+        invalidate();
+    }
+
+    /**
+     * Set the scale the image will zoom in to when double tapped. This also the scale point where a double tap is interpreted
+     * as a zoom out gesture - if the scale is greater than 90% of this value, a double tap zooms out. Avoid using values
+     * greater than the max zoom.
+     * @param doubleTapZoomScale New value for double tap gesture zoom scale.
+     */
+    public final void setDoubleTapZoomScale(float doubleTapZoomScale) {
+        this.doubleTapZoomScale = doubleTapZoomScale;
+    }
+
+    /**
+     * A density aware alternative to {@link #setDoubleTapZoomScale(float)}; this allows you to express the scale the
+     * image will zoom in to when double tapped in terms of the image pixel density. Values lower than the max scale will
+     * be ignored. A sensible starting point is 160 - the default used by this view.
+     * @param dpi New value for double tap gesture zoom scale.
+     */
+    public final void setDoubleTapZoomDpi(int dpi) {
+        DisplayMetrics metrics = getResources().getDisplayMetrics();
+        float averageDpi = (metrics.xdpi + metrics.ydpi)/2;
+        setDoubleTapZoomScale(averageDpi/dpi);
+    }
+
+    /**
+     * Set the type of zoom animation to be used for double taps. See static fields.
+     * @param doubleTapZoomStyle New value for zoom style.
+     */
+    public final void setDoubleTapZoomStyle(int doubleTapZoomStyle) {
+        if (!VALID_ZOOM_STYLES.contains(doubleTapZoomStyle)) {
+            throw new IllegalArgumentException("Invalid zoom style: " + doubleTapZoomStyle);
+        }
+        this.doubleTapZoomStyle = doubleTapZoomStyle;
+    }
+
+    /**
+     * Set the duration of the double tap zoom animation.
+     * @param durationMs Duration in milliseconds.
+     */
+    public final void setDoubleTapZoomDuration(int durationMs) {
+        this.doubleTapZoomDuration = Math.max(0, durationMs);
+    }
+
+    /**
+     * <p>
+     * Provide an {@link Executor} to be used for loading images. By default, {@link AsyncTask#THREAD_POOL_EXECUTOR}
+     * is used to minimise contention with other background work the app is doing. You can also choose
+     * to use {@link AsyncTask#SERIAL_EXECUTOR} if you want to limit concurrent background tasks.
+     * Alternatively you can supply an {@link Executor} of your own to avoid any contention. It is
+     * strongly recommended to use a single executor instance for the life of your application, not
+     * one per view instance.
+     * </p><p>
+     * <b>Warning:</b> If you are using a custom implementation of {@link ImageRegionDecoder}, and you
+     * supply an executor with more than one thread, you must make sure your implementation supports
+     * multi-threaded bitmap decoding or has appropriate internal synchronization. From SDK 21, Android's
+     * {@link android.graphics.BitmapRegionDecoder} uses an internal lock so it is thread safe but
+     * there is no advantage to using multiple threads.
+     * </p>
+     * @param executor an {@link Executor} for image loading.
+     */
+    public void setExecutor(Executor executor) {
+        if (executor == null) {
+            throw new NullPointerException("Executor must not be null");
+        }
+        this.executor = executor;
+    }
+
+    /**
+     * 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 enabled to improve
+     * responsiveness, but it can result in tiles being loaded and discarded more rapidly than
+     * necessary and reduce the animation frame rate on old/cheap devices. Disable this on older
+     * devices if you see poor performance. Tiles will then be loaded only when gestures and animations
+     * are completed.
+     * @param eagerLoadingEnabled true to enable loading during gestures, false to delay loading until gestures end
+     */
+    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.
+     */
+    public final void setDebug(boolean debug) {
+        this.debug = debug;
+    }
+
+    /**
+     * Check if an image has been set. The image may not have been loaded and displayed yet.
+     * @return If an image is currently set.
+     */
+    public boolean hasImage() {
+        return uri != null || bitmap != null;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setOnLongClickListener(OnLongClickListener onLongClickListener) {
+        this.onLongClickListener = onLongClickListener;
+    }
+
+    /**
+     * Add a listener allowing notification of load and error events. Extend {@link DefaultOnImageEventListener}
+     * to simplify implementation.
+     * @param onImageEventListener an {@link OnImageEventListener} instance.
+     */
+    public void setOnImageEventListener(OnImageEventListener onImageEventListener) {
+        this.onImageEventListener = onImageEventListener;
+    }
+
+    /**
+     * Add a listener for pan and zoom events. Extend {@link DefaultOnStateChangedListener} to simplify
+     * implementation.
+     * @param onStateChangedListener an {@link OnStateChangedListener} instance.
+     */
+    public void setOnStateChangedListener(OnStateChangedListener onStateChangedListener) {
+        this.onStateChangedListener = onStateChangedListener;
+    }
+
+    private void sendStateChanged(float oldScale, PointF oldVTranslate, int origin) {
+        if (onStateChangedListener != null && scale != oldScale) {
+            onStateChangedListener.onScaleChanged(scale, origin);
+        }
+        if (onStateChangedListener != null && !vTranslate.equals(oldVTranslate)) {
+            onStateChangedListener.onCenterChanged(getCenter(), origin);
+        }
+    }
+
+    /**
+     * Creates a panning animation builder, that when started will animate the image to place the given coordinates of
+     * the image in the center of the screen. If doing this would move the image beyond the edges of the screen, the
+     * image is instead animated to move the center point as near to the center of the screen as is allowed - it's
+     * guaranteed to be on screen.
+     * @param sCenter Target center point
+     * @return {@link AnimationBuilder} instance. Call {@link SubsamplingScaleImageView.AnimationBuilder#start()} to start the anim.
+     */
+    public AnimationBuilder animateCenter(PointF sCenter) {
+        if (!isReady()) {
+            return null;
+        }
+        return new AnimationBuilder(sCenter);
+    }
+
+    /**
+     * Creates a scale animation builder, that when started will animate a zoom in or out. If this would move the image
+     * beyond the panning limits, the image is automatically panned during the animation.
+     * @param scale Target scale.
+     * @return {@link AnimationBuilder} instance. Call {@link SubsamplingScaleImageView.AnimationBuilder#start()} to start the anim.
+     */
+    public AnimationBuilder animateScale(float scale) {
+        if (!isReady()) {
+            return null;
+        }
+        return new AnimationBuilder(scale);
+    }
+
+    /**
+     * Creates a scale animation builder, that when started will animate a zoom in or out. If this would move the image
+     * beyond the panning limits, the image is automatically panned during the animation.
+     * @param scale Target scale.
+     * @param sCenter Target source center.
+     * @return {@link AnimationBuilder} instance. Call {@link SubsamplingScaleImageView.AnimationBuilder#start()} to start the anim.
+     */
+    public AnimationBuilder animateScaleAndCenter(float scale, PointF sCenter) {
+        if (!isReady()) {
+            return null;
+        }
+        return new AnimationBuilder(scale, sCenter);
+    }
+
+    /**
+     * Builder class used to set additional options for a scale animation. Create an instance using {@link #animateScale(float)},
+     * then set your options and call {@link #start()}.
+     */
+    public final class AnimationBuilder {
+
+        private final float targetScale;
+        private final PointF targetSCenter;
+        private final PointF vFocus;
+        private long duration = 500;
+        private int easing = EASE_IN_OUT_QUAD;
+        private int origin = ORIGIN_ANIM;
+        private boolean interruptible = true;
+        private boolean panLimited = true;
+        private OnAnimationEventListener listener;
+
+        private AnimationBuilder(PointF sCenter) {
+            this.targetScale = scale;
+            this.targetSCenter = sCenter;
+            this.vFocus = null;
+        }
+
+        private AnimationBuilder(float scale) {
+            this.targetScale = scale;
+            this.targetSCenter = getCenter();
+            this.vFocus = null;
+        }
+
+        private AnimationBuilder(float scale, PointF sCenter) {
+            this.targetScale = scale;
+            this.targetSCenter = sCenter;
+            this.vFocus = null;
+        }
+
+        private AnimationBuilder(float scale, PointF sCenter, PointF vFocus) {
+            this.targetScale = scale;
+            this.targetSCenter = sCenter;
+            this.vFocus = vFocus;
+        }
+
+        /**
+         * Desired duration of the anim in milliseconds. Default is 500.
+         * @param duration duration in milliseconds.
+         * @return this builder for method chaining.
+         */
+        public AnimationBuilder withDuration(long duration) {
+            this.duration = duration;
+            return this;
+        }
+
+        /**
+         * Whether the animation can be interrupted with a touch. Default is true.
+         * @param interruptible interruptible flag.
+         * @return this builder for method chaining.
+         */
+        public AnimationBuilder withInterruptible(boolean interruptible) {
+            this.interruptible = interruptible;
+            return this;
+        }
+
+        /**
+         * Set the easing style. See static fields. {@link #EASE_IN_OUT_QUAD} is recommended, and the default.
+         * @param easing easing style.
+         * @return this builder for method chaining.
+         */
+        public AnimationBuilder withEasing(int easing) {
+            if (!VALID_EASING_STYLES.contains(easing)) {
+                throw new IllegalArgumentException("Unknown easing type: " + easing);
+            }
+            this.easing = easing;
+            return this;
+        }
+
+        /**
+         * Add an animation event listener.
+         * @param listener The listener.
+         * @return this builder for method chaining.
+         */
+        public AnimationBuilder withOnAnimationEventListener(OnAnimationEventListener listener) {
+            this.listener = listener;
+            return this;
+        }
+
+        /**
+         * Only for internal use. When set to true, the animation proceeds towards the actual end point - the nearest
+         * point to the center allowed by pan limits. When false, animation is in the direction of the requested end
+         * point and is stopped when the limit for each axis is reached. The latter behaviour is used for flings but
+         * nothing else.
+         */
+        private AnimationBuilder withPanLimited(boolean panLimited) {
+            this.panLimited = panLimited;
+            return this;
+        }
+
+        /**
+         * Only for internal use. Indicates what caused the animation.
+         */
+        private AnimationBuilder withOrigin(int origin) {
+            this.origin = origin;
+            return this;
+        }
+
+        /**
+         * Starts the animation.
+         */
+        public void start() {
+            if (anim != null && anim.listener != null) {
+                try {
+                    anim.listener.onInterruptedByNewAnim();
+                } catch (Exception e) {
+                    Log.w(TAG, "Error thrown by animation listener", e);
+                }
+            }
+
+            int vxCenter = getPaddingLeft() + (getWidth() - getPaddingRight() - getPaddingLeft())/2;
+            int vyCenter = getPaddingTop() + (getHeight() - getPaddingBottom() - getPaddingTop())/2;
+            float targetScale = limitedScale(this.targetScale);
+            PointF targetSCenter = panLimited ? limitedSCenter(this.targetSCenter.x, this.targetSCenter.y, targetScale, new PointF()) : this.targetSCenter;
+            anim = new Anim();
+            anim.scaleStart = scale;
+            anim.scaleEnd = targetScale;
+            anim.time = System.currentTimeMillis();
+            anim.sCenterEndRequested = targetSCenter;
+            anim.sCenterStart = getCenter();
+            anim.sCenterEnd = targetSCenter;
+            anim.vFocusStart = sourceToViewCoord(targetSCenter);
+            anim.vFocusEnd = new PointF(
+                vxCenter,
+                vyCenter
+            );
+            anim.duration = duration;
+            anim.interruptible = interruptible;
+            anim.easing = easing;
+            anim.origin = origin;
+            anim.time = System.currentTimeMillis();
+            anim.listener = listener;
+
+            if (vFocus != null) {
+                // Calculate where translation will be at the end of the anim
+                float vTranslateXEnd = vFocus.x - (targetScale * anim.sCenterStart.x);
+                float vTranslateYEnd = vFocus.y - (targetScale * anim.sCenterStart.y);
+                ScaleAndTranslate satEnd = new ScaleAndTranslate(targetScale, new PointF(vTranslateXEnd, vTranslateYEnd));
+                // Fit the end translation into bounds
+                fitToBounds(true, satEnd);
+                // Adjust the position of the focus point at end so image will be in bounds
+                anim.vFocusEnd = new PointF(
+                    vFocus.x + (satEnd.vTranslate.x - vTranslateXEnd),
+                    vFocus.y + (satEnd.vTranslate.y - vTranslateYEnd)
+                );
+            }
+
+            invalidate();
+        }
+
+    }
+
+    /**
+     * An event listener for animations, allows events to be triggered when an animation completes,
+     * is aborted by another animation starting, or is aborted by a touch event. Note that none of
+     * these events are triggered if the activity is paused, the image is swapped, or in other cases
+     * where the view's internal state gets wiped or draw events stop.
+     */
+    @SuppressWarnings("EmptyMethod")
+    public interface OnAnimationEventListener {
+
+        /**
+         * The animation has completed, having reached its endpoint.
+         */
+        void onComplete();
+
+        /**
+         * The animation has been aborted before reaching its endpoint because the user touched the screen.
+         */
+        void onInterruptedByUser();
+
+        /**
+         * The animation has been aborted before reaching its endpoint because a new animation has been started.
+         */
+        void onInterruptedByNewAnim();
+
+    }
+
+    /**
+     * Default implementation of {@link OnAnimationEventListener} for extension. This does nothing in any method.
+     */
+    public static class DefaultOnAnimationEventListener implements OnAnimationEventListener {
+
+        @Override public void onComplete() { }
+        @Override public void onInterruptedByUser() { }
+        @Override public void onInterruptedByNewAnim() { }
+
+    }
+
+    /**
+     * An event listener, allowing subclasses and activities to be notified of significant events.
+     */
+    @SuppressWarnings("EmptyMethod")
+    public interface OnImageEventListener {
+
+        /**
+         * Called when the dimensions of the image and view are known, and either a preview image,
+         * the full size image, or base layer tiles are loaded. This indicates the scale and translate
+         * are known and the next draw will display an image. This event can be used to hide a loading
+         * graphic, or inform a subclass that it is safe to draw overlays.
+         */
+        void onReady();
+
+        /**
+         * Called when the full size image is ready. When using tiling, this means the lowest resolution
+         * base layer of tiles are loaded, and when tiling is disabled, the image bitmap is loaded.
+         * This event could be used as a trigger to enable gestures if you wanted interaction disabled
+         * while only a preview is displayed, otherwise for most cases {@link #onReady()} is the best
+         * event to listen to.
+         */
+        void onImageLoaded();
+
+        /**
+         * Called when a preview image could not be loaded. This method cannot be relied upon; certain
+         * encoding types of supported image formats can result in corrupt or blank images being loaded
+         * and displayed with no detectable error. The view will continue to load the full size image.
+         * @param e The exception thrown. This error is logged by the view.
+         */
+        void onPreviewLoadError(Exception e);
+
+        /**
+         * Indicates an error initiliasing the decoder when using a tiling, or when loading the full
+         * size bitmap when tiling is disabled. This method cannot be relied upon; certain encoding
+         * types of supported image formats can result in corrupt or blank images being loaded and
+         * displayed with no detectable error.
+         * @param e The exception thrown. This error is also logged by the view.
+         */
+        void onImageLoadError(Exception e);
+
+        /**
+         * Called when an image tile could not be loaded. This method cannot be relied upon; certain
+         * encoding types of supported image formats can result in corrupt or blank images being loaded
+         * and displayed with no detectable error. Most cases where an unsupported file is used will
+         * result in an error caught by {@link #onImageLoadError(Exception)}.
+         * @param e The exception thrown. This error is logged by the view.
+         */
+        void onTileLoadError(Exception e);
+
+        /**
+        * Called when a bitmap set using ImageSource.cachedBitmap is no longer being used by the View.
+        * This is useful if you wish to manage the bitmap after the preview is shown
+        */
+        void onPreviewReleased();
+    }
+
+    /**
+     * Default implementation of {@link OnImageEventListener} for extension. This does nothing in any method.
+     */
+    public static class DefaultOnImageEventListener implements OnImageEventListener {
+
+        @Override public void onReady() { }
+        @Override public void onImageLoaded() { }
+        @Override public void onPreviewLoadError(Exception e) { }
+        @Override public void onImageLoadError(Exception e) { }
+        @Override public void onTileLoadError(Exception e) { }
+        @Override public void onPreviewReleased() { }
+
+    }
+
+    /**
+     * An event listener, allowing activities to be notified of pan and zoom events. Initialisation
+     * and calls made by your code do not trigger events; touch events and animations do. Methods in
+     * this listener will be called on the UI thread and may be called very frequently - your
+     * implementation should return quickly.
+     */
+    @SuppressWarnings("EmptyMethod")
+    public interface OnStateChangedListener {
+
+        /**
+         * The scale has changed. Use with {@link #getMaxScale()} and {@link #getMinScale()} to determine
+         * whether the image is fully zoomed in or out.
+         * @param newScale The new scale.
+         * @param origin Where the event originated from - one of {@link #ORIGIN_ANIM}, {@link #ORIGIN_TOUCH}.
+         */
+        void onScaleChanged(float newScale, int origin);
+
+        /**
+         * The source center has been changed. This can be a result of panning or zooming.
+         * @param newCenter The new source center point.
+         * @param origin Where the event originated from - one of {@link #ORIGIN_ANIM}, {@link #ORIGIN_TOUCH}.
+         */
+        void onCenterChanged(PointF newCenter, int origin);
+
+    }
+
+    /**
+     * Default implementation of {@link OnStateChangedListener}. This does nothing in any method.
+     */
+    public static class DefaultOnStateChangedListener implements OnStateChangedListener {
+
+        @Override public void onCenterChanged(PointF newCenter, int origin) { }
+        @Override public void onScaleChanged(float newScale, int origin) { }
+
+    }
+
+}
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.java
new file mode 100644
index 0000000..870489f
--- /dev/null
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.java
@@ -0,0 +1,47 @@
+package com.davemorrissey.labs.subscaleview.decoder;
+
+import android.graphics.Bitmap;
+import android.support.annotation.NonNull;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+
+/**
+ * Compatibility factory to instantiate decoders with empty public constructors.
+ * @param <T> The base type of the decoder this factory will produce.
+ */
+@SuppressWarnings("WeakerAccess")
+public class CompatDecoderFactory<T> implements DecoderFactory<T> {
+
+    private final Class<? extends T> clazz;
+    private final Bitmap.Config bitmapConfig;
+
+    /**
+     * Construct a factory for the given class. This must have a default constructor.
+     * @param clazz a class that implements {@link ImageDecoder} or {@link ImageRegionDecoder}.
+     */
+    public CompatDecoderFactory(@NonNull Class<? extends T> clazz) {
+    this(clazz, null);
+    }
+
+    /**
+     * Construct a factory for the given class. This must have a constructor that accepts a {@link Bitmap.Config} instance.
+     * @param clazz a class that implements {@link ImageDecoder} or {@link ImageRegionDecoder}.
+     * @param bitmapConfig bitmap configuration to be used when loading images.
+     */
+    public CompatDecoderFactory(@NonNull Class<? extends T> clazz, Bitmap.Config bitmapConfig) {
+        this.clazz = clazz;
+        this.bitmapConfig = bitmapConfig;
+    }
+
+    @Override
+    public T make() throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
+        if (bitmapConfig == null) {
+            return clazz.newInstance();
+        } else {
+            Constructor<? extends T> ctor = clazz.getConstructor(Bitmap.Config.class);
+            return ctor.newInstance(bitmapConfig);
+        }
+    }
+
+}
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.java
new file mode 100644
index 0000000..4b521c8
--- /dev/null
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.java
@@ -0,0 +1,21 @@
+package com.davemorrissey.labs.subscaleview.decoder;
+
+import java.lang.reflect.InvocationTargetException;
+
+/**
+ * Interface for {@link ImageDecoder} and {@link ImageRegionDecoder} factories.
+ * @param <T> the class of decoder that will be produced.
+ */
+public interface DecoderFactory<T> {
+
+    /**
+     * Produce a new instance of a decoder with type {@link T}.
+     * @return a new instance of your decoder.
+     * @throws IllegalAccessException if the factory class cannot be instantiated.
+     * @throws InstantiationException if the factory class cannot be instantiated.
+     * @throws NoSuchMethodException if the factory class cannot be instantiated.
+     * @throws InvocationTargetException if the factory class cannot be instantiated.
+     */
+    T make() throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException;
+
+}
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.java
new file mode 100644
index 0000000..004f875
--- /dev/null
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.java
@@ -0,0 +1,29 @@
+package com.davemorrissey.labs.subscaleview.decoder;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.net.Uri;
+
+/**
+ * Interface for image decoding classes, allowing the default {@link android.graphics.BitmapFactory}
+ * based on the Skia library to be replaced with a custom class.
+ */
+public interface ImageDecoder {
+
+    /**
+     * Decode an image. The URI can be in one of the following formats:
+     * <br>
+     * File: <code>file:///scard/picture.jpg</code>
+     * <br>
+     * Asset: <code>file:///android_asset/picture.png</code>
+     * <br>
+     * Resource: <code>android.resource://com.example.app/drawable/picture</code>
+     *
+     * @param context Application context
+     * @param uri URI of the image
+     * @return the decoded bitmap
+     * @throws Exception if decoding fails.
+     */
+    Bitmap decode(Context context, Uri uri) throws Exception;
+
+}
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.java
new file mode 100644
index 0000000..22ee955
--- /dev/null
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/ImageRegionDecoder.java
@@ -0,0 +1,60 @@
+package com.davemorrissey.labs.subscaleview.decoder;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Point;
+import android.graphics.Rect;
+import android.net.Uri;
+
+/**
+ * Interface for image decoding classes, allowing the default {@link android.graphics.BitmapRegionDecoder}
+ * based on the Skia library to be replaced with a custom class.
+ */
+public interface ImageRegionDecoder {
+
+    /**
+     * Initialise the decoder. When possible, perform initial setup work once in this method. The
+     * dimensions of the image must be returned. The URI can be in one of the following formats:
+     * <br>
+     * File: <code>file:///scard/picture.jpg</code>
+     * <br>
+     * Asset: <code>file:///android_asset/picture.png</code>
+     * <br>
+     * Resource: <code>android.resource://com.example.app/drawable/picture</code>
+     * @param context Application context. A reference may be held, but must be cleared on recycle.
+     * @param uri URI of the image.
+     * @return Dimensions of the image.
+     * @throws Exception if initialisation fails.
+     */
+    Point init(Context context, Uri uri) throws Exception;
+
+    /**
+     * <p>
+     * Decode a region of the image with the given sample size. This method is called off the UI
+     * thread so it can safely load the image on the current thread. It is called from
+     * {@link android.os.AsyncTask}s running in an executor that may have multiple threads, so
+     * implementations must be thread safe. Adding <code>synchronized</code> to the method signature
+     * is the simplest way to achieve this, but bear in mind the {@link #recycle()} method can be
+     * called concurrently.
+     * </p><p>
+     * See {@link SkiaImageRegionDecoder} and {@link SkiaPooledImageRegionDecoder} for examples of
+     * internal locking and synchronization.
+     * </p>
+     * @param sRect Source image rectangle to decode.
+     * @param sampleSize Sample size.
+     * @return The decoded region. It is safe to return null if decoding fails.
+     */
+    Bitmap decodeRegion(Rect sRect, int sampleSize);
+
+    /**
+     * Status check. Should return false before initialisation and after recycle.
+     * @return true if the decoder is ready to be used.
+     */
+    boolean isReady();
+
+    /**
+     * This method will be called when the decoder is no longer required. It should clean up any resources still in use.
+     */
+    void recycle();
+
+}
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.java
new file mode 100644
index 0000000..be1cd32
--- /dev/null
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.java
@@ -0,0 +1,102 @@
+package com.davemorrissey.labs.subscaleview.decoder;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.support.annotation.Keep;
+import android.text.TextUtils;
+
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * Default implementation of {@link com.davemorrissey.labs.subscaleview.decoder.ImageDecoder}
+ * using Android's {@link android.graphics.BitmapFactory}, based on the Skia library. This
+ * works well in most circumstances and has reasonable performance, however it has some problems
+ * with grayscale, indexed and CMYK images.
+ */
+public class SkiaImageDecoder implements ImageDecoder {
+
+    private static final String FILE_PREFIX = "file://";
+    private static final String ASSET_PREFIX = FILE_PREFIX + "/android_asset/";
+    private static final String RESOURCE_PREFIX = ContentResolver.SCHEME_ANDROID_RESOURCE + "://";
+
+    private final Bitmap.Config bitmapConfig;
+
+    @Keep
+    @SuppressWarnings("unused")
+    public SkiaImageDecoder() {
+        this(null);
+    }
+
+    @SuppressWarnings({"WeakerAccess", "SameParameterValue"})
+    public SkiaImageDecoder(Bitmap.Config bitmapConfig) {
+        Bitmap.Config globalBitmapConfig = SubsamplingScaleImageView.getPreferredBitmapConfig();
+        if (bitmapConfig != null) {
+            this.bitmapConfig = bitmapConfig;
+        } else if (globalBitmapConfig != null) {
+            this.bitmapConfig = globalBitmapConfig;
+        } else {
+            this.bitmapConfig = Bitmap.Config.RGB_565;
+        }
+    }
+
+    @Override
+    public Bitmap decode(Context context, Uri uri) throws Exception {
+        String uriString = uri.toString();
+        BitmapFactory.Options options = new BitmapFactory.Options();
+        Bitmap bitmap;
+        options.inPreferredConfig = bitmapConfig;
+        if (uriString.startsWith(RESOURCE_PREFIX)) {
+            Resources res;
+            String packageName = uri.getAuthority();
+            if (context.getPackageName().equals(packageName)) {
+                res = context.getResources();
+            } else {
+                PackageManager pm = context.getPackageManager();
+                res = pm.getResourcesForApplication(packageName);
+            }
+
+            int id = 0;
+            List<String> segments = uri.getPathSegments();
+            int size = segments.size();
+            if (size == 2 && segments.get(0).equals("drawable")) {
+                String resName = segments.get(1);
+                id = res.getIdentifier(resName, "drawable", packageName);
+            } else if (size == 1 && TextUtils.isDigitsOnly(segments.get(0))) {
+                try {
+                    id = Integer.parseInt(segments.get(0));
+                } catch (NumberFormatException ignored) {
+                }
+            }
+
+            bitmap = BitmapFactory.decodeResource(context.getResources(), id, options);
+        } else if (uriString.startsWith(ASSET_PREFIX)) {
+            String assetName = uriString.substring(ASSET_PREFIX.length());
+            bitmap = BitmapFactory.decodeStream(context.getAssets().open(assetName), null, options);
+        } else if (uriString.startsWith(FILE_PREFIX)) {
+            bitmap = BitmapFactory.decodeFile(uriString.substring(FILE_PREFIX.length()), options);
+        } else {
+            InputStream inputStream = null;
+            try {
+                ContentResolver contentResolver = context.getContentResolver();
+                inputStream = contentResolver.openInputStream(uri);
+                bitmap = BitmapFactory.decodeStream(inputStream, null, options);
+            } finally {
+                if (inputStream != null) {
+                    try { inputStream.close(); } catch (Exception e) { /* Ignore */ }
+                }
+            }
+        }
+        if (bitmap == null) {
+            throw new RuntimeException("Skia image region decoder returned null bitmap - image format may not be supported");
+        }
+        return bitmap;
+    }
+}
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.java
new file mode 100644
index 0000000..eebe2bb
--- /dev/null
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.java
@@ -0,0 +1,158 @@
+package com.davemorrissey.labs.subscaleview.decoder;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.res.AssetManager;
+import android.content.res.Resources;
+import android.graphics.*;
+import android.net.Uri;
+import android.os.Build;
+import android.support.annotation.Keep;
+import android.text.TextUtils;
+
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+
+import java.io.InputStream;
+import java.util.List;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+/**
+ * Default implementation of {@link com.davemorrissey.labs.subscaleview.decoder.ImageRegionDecoder}
+ * using Android's {@link android.graphics.BitmapRegionDecoder}, based on the Skia library. This
+ * works well in most circumstances and has reasonable performance due to the cached decoder instance,
+ * however it has some problems with grayscale, indexed and CMYK images.
+ *
+ * A {@link ReadWriteLock} is used to delegate responsibility for multi threading behaviour to the
+ * {@link BitmapRegionDecoder} instance on SDK &gt;= 21, whilst allowing this class to block until no
+ * tiles are being loaded before recycling the decoder. In practice, {@link BitmapRegionDecoder} is
+ * synchronized internally so this has no real impact on performance.
+ */
+public class SkiaImageRegionDecoder implements ImageRegionDecoder {
+
+    private BitmapRegionDecoder decoder;
+    private final ReadWriteLock decoderLock = new ReentrantReadWriteLock(true);
+
+    private static final String FILE_PREFIX = "file://";
+    private static final String ASSET_PREFIX = FILE_PREFIX + "/android_asset/";
+    private static final String RESOURCE_PREFIX = ContentResolver.SCHEME_ANDROID_RESOURCE + "://";
+
+    private final Bitmap.Config bitmapConfig;
+
+    @Keep
+    @SuppressWarnings("unused")
+    public SkiaImageRegionDecoder() {
+        this(null);
+    }
+
+    @SuppressWarnings({"WeakerAccess", "SameParameterValue"})
+    public SkiaImageRegionDecoder(Bitmap.Config bitmapConfig) {
+        Bitmap.Config globalBitmapConfig = SubsamplingScaleImageView.getPreferredBitmapConfig();
+        if (bitmapConfig != null) {
+            this.bitmapConfig = bitmapConfig;
+        } else if (globalBitmapConfig != null) {
+            this.bitmapConfig = globalBitmapConfig;
+        } else {
+            this.bitmapConfig = Bitmap.Config.RGB_565;
+        }
+    }
+
+    @Override
+    public Point init(Context context, Uri uri) throws Exception {
+        String uriString = uri.toString();
+        if (uriString.startsWith(RESOURCE_PREFIX)) {
+            Resources res;
+            String packageName = uri.getAuthority();
+            if (context.getPackageName().equals(packageName)) {
+                res = context.getResources();
+            } else {
+                PackageManager pm = context.getPackageManager();
+                res = pm.getResourcesForApplication(packageName);
+            }
+
+            int id = 0;
+            List<String> segments = uri.getPathSegments();
+            int size = segments.size();
+            if (size == 2 && segments.get(0).equals("drawable")) {
+                String resName = segments.get(1);
+                id = res.getIdentifier(resName, "drawable", packageName);
+            } else if (size == 1 && TextUtils.isDigitsOnly(segments.get(0))) {
+                try {
+                    id = Integer.parseInt(segments.get(0));
+                } catch (NumberFormatException ignored) {
+                }
+            }
+
+            decoder = BitmapRegionDecoder.newInstance(context.getResources().openRawResource(id), false);
+        } else if (uriString.startsWith(ASSET_PREFIX)) {
+            String assetName = uriString.substring(ASSET_PREFIX.length());
+            decoder = BitmapRegionDecoder.newInstance(context.getAssets().open(assetName, AssetManager.ACCESS_RANDOM), false);
+        } else if (uriString.startsWith(FILE_PREFIX)) {
+            decoder = BitmapRegionDecoder.newInstance(uriString.substring(FILE_PREFIX.length()), false);
+        } else {
+            InputStream inputStream = null;
+            try {
+                ContentResolver contentResolver = context.getContentResolver();
+                inputStream = contentResolver.openInputStream(uri);
+                decoder = BitmapRegionDecoder.newInstance(inputStream, false);
+            } finally {
+                if (inputStream != null) {
+                    try { inputStream.close(); } catch (Exception e) { /* Ignore */ }
+                }
+            }
+        }
+        return new Point(decoder.getWidth(), decoder.getHeight());
+    }
+
+    @Override
+    public Bitmap decodeRegion(Rect sRect, int sampleSize) {
+        getDecodeLock().lock();
+        try {
+            if (decoder != null && !decoder.isRecycled()) {
+                BitmapFactory.Options options = new BitmapFactory.Options();
+                options.inSampleSize = sampleSize;
+                options.inPreferredConfig = bitmapConfig;
+                Bitmap bitmap = decoder.decodeRegion(sRect, options);
+                if (bitmap == null) {
+                    throw new RuntimeException("Skia image decoder returned null bitmap - image format may not be supported");
+                }
+                return bitmap;
+            } else {
+                throw new IllegalStateException("Cannot decode region after decoder has been recycled");
+            }
+        } finally {
+            getDecodeLock().unlock();
+        }
+    }
+
+    @Override
+    public synchronized boolean isReady() {
+        return decoder != null && !decoder.isRecycled();
+    }
+
+    @Override
+    public synchronized void recycle() {
+        decoderLock.writeLock().lock();
+        try {
+            decoder.recycle();
+            decoder = null;
+        } finally {
+            decoderLock.writeLock().unlock();
+        }
+    }
+
+    /**
+     * Before SDK 21, BitmapRegionDecoder was not synchronized internally. Any attempt to decode
+     * regions from multiple threads with one decoder instance causes a segfault. For old versions
+     * use the write lock to enforce single threaded decoding.
+     */
+    private Lock getDecodeLock() {
+        if (Build.VERSION.SDK_INT < 21) {
+            return decoderLock.writeLock();
+        } else {
+            return decoderLock.readLock();
+        }
+    }
+}
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.java
new file mode 100644
index 0000000..80e415b
--- /dev/null
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.java
@@ -0,0 +1,470 @@
+package com.davemorrissey.labs.subscaleview.decoder;
+
+import android.app.ActivityManager;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.res.AssetFileDescriptor;
+import android.content.res.AssetManager;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.BitmapRegionDecoder;
+import android.graphics.Point;
+import android.graphics.Rect;
+import android.net.Uri;
+import android.os.Build;
+import android.support.annotation.Keep;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.regex.Pattern;
+
+import static android.content.Context.ACTIVITY_SERVICE;
+
+/**
+ * <p>
+ * An implementation of {@link ImageRegionDecoder} using a pool of {@link BitmapRegionDecoder}s,
+ * to provide true parallel loading of tiles. This is only effective if parallel loading has been
+ * enabled in the view by calling {@link com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView#setExecutor(Executor)}
+ * with a multi-threaded {@link Executor} instance.
+ * </p><p>
+ * One decoder is initialised when the class is initialised. This is enough to decode base layer tiles.
+ * Additional decoders are initialised when a subregion of the image is first requested, which indicates
+ * interaction with the view. Creation of additional encoders stops when {@link #allowAdditionalDecoder(int, long)}
+ * returns false. The default implementation takes into account the file size, number of CPU cores,
+ * low memory status and a hard limit of 4. Extend this class to customise this.
+ * </p><p>
+ * <b>WARNING:</b> This class is highly experimental and not proven to be stable on a wide range of
+ * devices. You are advised to test it thoroughly on all available devices, and code your app to use
+ * {@link SkiaImageRegionDecoder} on old or low powered devices you could not test.
+ * </p>
+ */
+public class SkiaPooledImageRegionDecoder implements ImageRegionDecoder {
+
+    private static final String TAG = SkiaPooledImageRegionDecoder.class.getSimpleName();
+
+    private static boolean debug = false;
+
+    private DecoderPool decoderPool = new DecoderPool();
+    private final ReadWriteLock decoderLock = new ReentrantReadWriteLock(true);
+
+    private static final String FILE_PREFIX = "file://";
+    private static final String ASSET_PREFIX = FILE_PREFIX + "/android_asset/";
+    private static final String RESOURCE_PREFIX = ContentResolver.SCHEME_ANDROID_RESOURCE + "://";
+
+    private final Bitmap.Config bitmapConfig;
+
+    private Context context;
+    private Uri uri;
+
+    private long fileLength = Long.MAX_VALUE;
+    private final Point imageDimensions = new Point(0, 0);
+    private final AtomicBoolean lazyInited = new AtomicBoolean(false);
+
+    @Keep
+    @SuppressWarnings("unused")
+    public SkiaPooledImageRegionDecoder() {
+        this(null);
+    }
+
+    @SuppressWarnings({"WeakerAccess", "SameParameterValue"})
+    public SkiaPooledImageRegionDecoder(Bitmap.Config bitmapConfig) {
+        Bitmap.Config globalBitmapConfig = SubsamplingScaleImageView.getPreferredBitmapConfig();
+        if (bitmapConfig != null) {
+            this.bitmapConfig = bitmapConfig;
+        } else if (globalBitmapConfig != null) {
+            this.bitmapConfig = globalBitmapConfig;
+        } else {
+            this.bitmapConfig = Bitmap.Config.RGB_565;
+        }
+    }
+
+    /**
+     * Controls logging of debug messages. All instances are affected.
+     * @param debug true to enable debug logging, false to disable.
+     */
+    @Keep
+    @SuppressWarnings("unused")
+    public static void setDebug(boolean debug) {
+        SkiaPooledImageRegionDecoder.debug = debug;
+    }
+
+    /**
+     * Initialises the decoder pool. This method creates one decoder on the current thread and uses
+     * it to decode the bounds, then spawns an independent thread to populate the pool with an
+     * additional three decoders. The thread will abort if {@link #recycle()} is called.
+     */
+    @Override
+    public Point init(final Context context, final Uri uri) throws Exception {
+        this.context = context;
+        this.uri = uri;
+        initialiseDecoder();
+        return this.imageDimensions;
+    }
+
+    /**
+     * Initialises extra decoders for as long as {@link #allowAdditionalDecoder(int, long)} returns
+     * true and the pool has not been recycled.
+     */
+    private void lazyInit() {
+        if (lazyInited.compareAndSet(false, true) && fileLength < Long.MAX_VALUE) {
+            debug("Starting lazy init of additional decoders");
+            Thread thread = new Thread() {
+                @Override
+                public void run() {
+                    while (decoderPool != null && allowAdditionalDecoder(decoderPool.size(), fileLength)) {
+                        // New decoders can be created while reading tiles but this read lock prevents
+                        // them being initialised while the pool is being recycled.
+                        try {
+                            if (decoderPool != null) {
+                                long start = System.currentTimeMillis();
+                                debug("Starting decoder");
+                                initialiseDecoder();
+                                long end = System.currentTimeMillis();
+                                debug("Started decoder, took " + (end - start) + "ms");
+                            }
+                        } catch (Exception e) {
+                            // A decoder has already been successfully created so we can ignore this
+                            debug("Failed to start decoder: " + e.getMessage());
+                        }
+                    }
+                }
+            };
+            thread.start();
+        }
+    }
+
+    /**
+     * Initialises a new {@link BitmapRegionDecoder} and adds it to the pool, unless the pool has
+     * been recycled while it was created.
+     */
+    private void initialiseDecoder() throws Exception {
+        String uriString = uri.toString();
+        BitmapRegionDecoder decoder;
+        long fileLength = Long.MAX_VALUE;
+        if (uriString.startsWith(RESOURCE_PREFIX)) {
+            Resources res;
+            String packageName = uri.getAuthority();
+            if (context.getPackageName().equals(packageName)) {
+                res = context.getResources();
+            } else {
+                PackageManager pm = context.getPackageManager();
+                res = pm.getResourcesForApplication(packageName);
+            }
+
+            int id = 0;
+            List<String> segments = uri.getPathSegments();
+            int size = segments.size();
+            if (size == 2 && segments.get(0).equals("drawable")) {
+                String resName = segments.get(1);
+                id = res.getIdentifier(resName, "drawable", packageName);
+            } else if (size == 1 && TextUtils.isDigitsOnly(segments.get(0))) {
+                try {
+                    id = Integer.parseInt(segments.get(0));
+                } catch (NumberFormatException ignored) {
+                }
+            }
+            try {
+                AssetFileDescriptor descriptor = context.getResources().openRawResourceFd(id);
+                fileLength = descriptor.getLength();
+            } catch (Exception e) {
+                // Pooling disabled
+            }
+            decoder = BitmapRegionDecoder.newInstance(context.getResources().openRawResource(id), false);
+        } else if (uriString.startsWith(ASSET_PREFIX)) {
+            String assetName = uriString.substring(ASSET_PREFIX.length());
+            try {
+                AssetFileDescriptor descriptor = context.getAssets().openFd(assetName);
+                fileLength = descriptor.getLength();
+            } catch (Exception e) {
+                // Pooling disabled
+            }
+            decoder = BitmapRegionDecoder.newInstance(context.getAssets().open(assetName, AssetManager.ACCESS_RANDOM), false);
+        } else if (uriString.startsWith(FILE_PREFIX)) {
+            decoder = BitmapRegionDecoder.newInstance(uriString.substring(FILE_PREFIX.length()), false);
+            try {
+                File file = new File(uriString);
+                if (file.exists()) {
+                    fileLength = file.length();
+                }
+            } catch (Exception e) {
+                // Pooling disabled
+            }
+        } else {
+            InputStream inputStream = null;
+            try {
+                ContentResolver contentResolver = context.getContentResolver();
+                inputStream = contentResolver.openInputStream(uri);
+                decoder = BitmapRegionDecoder.newInstance(inputStream, false);
+                try {
+                    AssetFileDescriptor descriptor = contentResolver.openAssetFileDescriptor(uri, "r");
+                    if (descriptor != null) {
+                        fileLength = descriptor.getLength();
+                    }
+                } catch (Exception e) {
+                    // Stick with MAX_LENGTH
+                }
+            } finally {
+                if (inputStream != null) {
+                    try { inputStream.close(); } catch (Exception e) { /* Ignore */ }
+                }
+            }
+        }
+
+        this.fileLength = fileLength;
+        this.imageDimensions.set(decoder.getWidth(), decoder.getHeight());
+        decoderLock.writeLock().lock();
+        try {
+            if (decoderPool != null) {
+                decoderPool.add(decoder);
+            }
+        } finally {
+            decoderLock.writeLock().unlock();
+        }
+    }
+
+    /**
+     * Acquire a read lock to prevent decoding overlapping with recycling, then check the pool still
+     * exists and acquire a decoder to load the requested region. There is no check whether the pool
+     * currently has decoders, because it's guaranteed to have one decoder after {@link #init(Context, Uri)}
+     * is called and be null once {@link #recycle()} is called. In practice the view can't call this
+     * method until after {@link #init(Context, Uri)}, so there will be no blocking on an empty pool.
+     */
+    @Override
+    public Bitmap decodeRegion(Rect sRect, int sampleSize) {
+        debug("Decode region " + sRect + " on thread " + Thread.currentThread().getName());
+        if (sRect.width() < imageDimensions.x || sRect.height() < imageDimensions.y) {
+            lazyInit();
+        }
+        decoderLock.readLock().lock();
+        try {
+            if (decoderPool != null) {
+                BitmapRegionDecoder decoder = decoderPool.acquire();
+                try {
+                    // Decoder can't be null or recycled in practice
+                    if (decoder != null && !decoder.isRecycled()) {
+                        BitmapFactory.Options options = new BitmapFactory.Options();
+                        options.inSampleSize = sampleSize;
+                        options.inPreferredConfig = bitmapConfig;
+                        Bitmap bitmap = decoder.decodeRegion(sRect, options);
+                        if (bitmap == null) {
+                            throw new RuntimeException("Skia image decoder returned null bitmap - image format may not be supported");
+                        }
+                        return bitmap;
+                    }
+                } finally {
+                    if (decoder != null) {
+                        decoderPool.release(decoder);
+                    }
+                }
+            }
+            throw new IllegalStateException("Cannot decode region after decoder has been recycled");
+        } finally {
+            decoderLock.readLock().unlock();
+        }
+    }
+
+    /**
+     * Holding a read lock to avoid returning true while the pool is being recycled, this returns
+     * true if the pool has at least one decoder available.
+     */
+    @Override
+    public synchronized boolean isReady() {
+        return decoderPool != null && !decoderPool.isEmpty();
+    }
+
+    /**
+     * Wait until all read locks held by {@link #decodeRegion(Rect, int)} are released, then recycle
+     * and destroy the pool. Elsewhere, when a read lock is acquired, we must check the pool is not null.
+     */
+    @Override
+    public synchronized void recycle() {
+        decoderLock.writeLock().lock();
+        try {
+            if (decoderPool != null) {
+                decoderPool.recycle();
+                decoderPool = null;
+                context = null;
+                uri = null;
+            }
+        } finally {
+            decoderLock.writeLock().unlock();
+        }
+    }
+
+    /**
+     * Called before creating a new decoder. Based on number of CPU cores, available memory, and the
+     * size of the image file, determines whether another decoder can be created. Subclasses can
+     * override and customise this.
+     * @param numberOfDecoders the number of decoders that have been created so far
+     * @param fileLength the size of the image file in bytes. Creating another decoder will use approximately this much native memory.
+     * @return true if another decoder can be created.
+     */
+    @SuppressWarnings("WeakerAccess")
+    protected boolean allowAdditionalDecoder(int numberOfDecoders, long fileLength) {
+        if (numberOfDecoders >= 4) {
+            debug("No additional decoders allowed, reached hard limit (4)");
+            return false;
+        } else if (numberOfDecoders * fileLength > 20 * 1024 * 1024) {
+            debug("No additional encoders allowed, reached hard memory limit (20Mb)");
+            return false;
+        } else if (numberOfDecoders >= getNumberOfCores()) {
+            debug("No additional encoders allowed, limited by CPU cores (" + getNumberOfCores() + ")");
+            return false;
+        } else if (isLowMemory()) {
+            debug("No additional encoders allowed, memory is low");
+            return false;
+        }
+        debug("Additional decoder allowed, current count is " + numberOfDecoders + ", estimated native memory " + ((fileLength * numberOfDecoders)/(1024 * 1024)) + "Mb");
+        return true;
+    }
+
+
+    /**
+     * A simple pool of {@link BitmapRegionDecoder} instances, all loading from the same source.
+     */
+    private static class DecoderPool {
+        private final Semaphore available = new Semaphore(0, true);
+        private final Map<BitmapRegionDecoder, Boolean> decoders = new ConcurrentHashMap<>();
+
+        /**
+         * Returns false if there is at least one decoder in the pool.
+         */
+        private synchronized boolean isEmpty() {
+            return decoders.isEmpty();
+        }
+
+        /**
+         * Returns number of encoders.
+         */
+        private synchronized int size() {
+            return decoders.size();
+        }
+
+        /**
+         * Acquire a decoder. Blocks until one is available.
+         */
+        private BitmapRegionDecoder acquire() {
+            available.acquireUninterruptibly();
+            return getNextAvailable();
+        }
+
+        /**
+         * Release a decoder back to the pool.
+         */
+        private void release(BitmapRegionDecoder decoder) {
+            if (markAsUnused(decoder)) {
+                available.release();
+            }
+        }
+
+        /**
+         * Adds a newly created decoder to the pool, releasing an additional permit.
+         */
+        private synchronized void add(BitmapRegionDecoder decoder) {
+            decoders.put(decoder, false);
+            available.release();
+        }
+
+        /**
+         * While there are decoders in the map, wait until each is available before acquiring,
+         * recycling and removing it. After this is called, any call to {@link #acquire()} will
+         * block forever, so this call should happen within a write lock, and all calls to
+         * {@link #acquire()} should be made within a read lock so they cannot end up blocking on
+         * the semaphore when it has no permits.
+         */
+        private synchronized void recycle() {
+            while (!decoders.isEmpty()) {
+                BitmapRegionDecoder decoder = acquire();
+                decoder.recycle();
+                decoders.remove(decoder);
+            }
+        }
+
+        private synchronized BitmapRegionDecoder getNextAvailable() {
+            for (Map.Entry<BitmapRegionDecoder, Boolean> entry : decoders.entrySet()) {
+                if (!entry.getValue()) {
+                    entry.setValue(true);
+                    return entry.getKey();
+                }
+            }
+            return null;
+        }
+
+        private synchronized boolean markAsUnused(BitmapRegionDecoder decoder) {
+            for (Map.Entry<BitmapRegionDecoder, Boolean> entry : decoders.entrySet()) {
+                if (decoder == entry.getKey()) {
+                    if (entry.getValue()) {
+                        entry.setValue(false);
+                        return true;
+                    } else {
+                        return false;
+                    }
+                }
+            }
+            return false;
+        }
+
+    }
+
+    private int getNumberOfCores() {
+        if (Build.VERSION.SDK_INT >= 17) {
+            return Runtime.getRuntime().availableProcessors();
+        } else {
+            return getNumCoresOldPhones();
+        }
+    }
+
+    /**
+     * Gets the number of cores available in this device, across all processors.
+     * Requires: Ability to peruse the filesystem at "/sys/devices/system/cpu"
+     * @return The number of cores, or 1 if failed to get result
+     */
+    private int getNumCoresOldPhones() {
+        class CpuFilter implements FileFilter {
+            @Override
+            public boolean accept(File pathname) {
+                return Pattern.matches("cpu[0-9]+", pathname.getName());
+            }
+        }
+        try {
+            File dir = new File("/sys/devices/system/cpu/");
+            File[] files = dir.listFiles(new CpuFilter());
+            return files.length;
+        } catch(Exception e) {
+            return 1;
+        }
+    }
+
+    private boolean isLowMemory() {
+        ActivityManager activityManager = (ActivityManager)context.getSystemService(ACTIVITY_SERVICE);
+        if (activityManager != null) {
+            ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
+            activityManager.getMemoryInfo(memoryInfo);
+            return memoryInfo.lowMemory;
+        } else {
+            return true;
+        }
+    }
+
+    private void debug(String message) {
+        if (debug) {
+            Log.d(TAG, message);
+        }
+    }
+
+}
diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml
new file mode 100644
index 0000000..934640a
--- /dev/null
+++ b/library/src/main/res/values/attrs.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <declare-styleable name="SubsamplingScaleImageView">
+        <attr name="src" format="reference"/>
+        <attr name="assetName" format="string"/>
+        <attr name="panEnabled" format="boolean"/>
+        <attr name="zoomEnabled" format="boolean"/>
+        <attr name="quickScaleEnabled" format="boolean"/>
+        <attr name="tileBackgroundColor" format="color"/>
+    </declare-styleable>
+
+</resources>
diff --git a/release.gradle b/release.gradle
new file mode 100644
index 0000000..409eda6
--- /dev/null
+++ b/release.gradle
@@ -0,0 +1,66 @@
+apply plugin: 'maven'
+apply plugin: 'signing'
+
+def isReleaseBuild() {
+    return version.contains("SNAPSHOT") == false
+}
+
+def getMavenRepositoryUrl() {
+    return hasProperty('repositoryUrl') ? property('repositoryUrl') : "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
+}
+
+def getMavenRepositoryUsername() {
+    return hasProperty('sonatypeUsername') ? property('sonatypeUsername') : ""
+}
+
+def getMavenRepositoryPassword() {
+    return hasProperty('sonatypePassword') ? property('sonatypePassword') : ""
+}
+
+afterEvaluate { project ->
+
+    signing {
+        required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
+        sign configurations.archives
+    }
+
+    uploadArchives {
+        configuration = configurations.archives
+        repositories.mavenDeployer {
+            beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
+
+            repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
+                authentication(userName: getMavenRepositoryUsername(), password: getMavenRepositoryPassword())
+            }
+
+            pom.project {
+                name 'SubsamplingScaleImageView'
+                packaging 'aar'
+                description 'Custom image views for Android with pinch to zoom, panning, rotation and animation support, with easy extension so you can add your own overlays and touch event detection.'
+                url 'https://github.com/davemorrissey/subsampling-scale-image-view'
+
+                scm {
+                    url 'scm:git@github.com:davemorrissey/subsampling-scale-image-view.git'
+                    connection 'scm:git@github.com:davemorrissey/subsampling-scale-image-view.git'
+                    developerConnection 'scm:git@github.com:davemorrissey/subsampling-scale-image-view.git'
+                }
+
+                licenses {
+                    license {
+                        name 'The Apache Software License, Version 2.0'
+                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+                        distribution 'repo'
+                    }
+                }
+
+                developers {
+                    developer {
+                        id 'davemorrissey'
+                        name 'Dave Morrissey'
+                    }
+                }
+            }
+        }
+    }
+
+}
diff --git a/sample/assets/card.png b/sample/assets/card.png
new file mode 100644
index 0000000..20f330b
--- /dev/null
+++ b/sample/assets/card.png
Binary files differ
diff --git a/sample/assets/sanmartino.jpg b/sample/assets/sanmartino.jpg
new file mode 100644
index 0000000..faf7a51
--- /dev/null
+++ b/sample/assets/sanmartino.jpg
Binary files differ
diff --git a/sample/assets/swissroad.jpg b/sample/assets/swissroad.jpg
new file mode 100644
index 0000000..3a32151
--- /dev/null
+++ b/sample/assets/swissroad.jpg
Binary files differ
diff --git a/sample/build.gradle b/sample/build.gradle
new file mode 100644
index 0000000..f1096a7
--- /dev/null
+++ b/sample/build.gradle
@@ -0,0 +1,19 @@
+apply plugin: 'com.android.application'
+
+android {
+    compileSdkVersion 27
+    defaultConfig {
+        applicationId "com.davemorrissey.labs.subscaleview.test"
+    }
+
+    sourceSets {
+        main {
+            assets.srcDirs = ['assets']
+        }
+    }
+}
+
+dependencies {
+    implementation project(':library')
+    implementation 'com.android.support:support-v4:27.0.2'
+}
diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..f49b08f
--- /dev/null
+++ b/sample/src/main/AndroidManifest.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:tools="http://schemas.android.com/tools"
+          package="com.davemorrissey.labs.subscaleview.test"
+          android:versionCode="4"
+          android:versionName="3.1.0"
+          android:hardwareAccelerated="true">
+<uses-sdk android:minSdkVersion="17" android:targetSdkVersion="27"/>
+<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove"/>
+<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove"/>
+<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove"/>
+<application android:label="@string/app.name" android:theme="@style/sampleTheme" android:icon="@mipmap/ic_launcher" android:allowBackup="false" tools:ignore="GoogleAppIndexingWarning">
+    <activity android:name=".MainActivity" android:label="@string/app.name">
+        <intent-filter>
+            <action android:name="android.intent.action.MAIN"/>
+            <category android:name="android.intent.category.LAUNCHER"/>
+        </intent-filter>
+    </activity>
+    <activity android:name=".basicfeatures.BasicFeaturesActivity"/>
+    <activity android:name=".imagedisplay.ImageDisplayActivity"/>
+    <activity android:name=".eventhandling.EventHandlingActivity"/>
+    <activity android:name=".eventhandlingadvanced.AdvancedEventHandlingActivity"/>
+    <activity android:name=".viewpager.ViewPagerActivity"/>
+    <activity android:name=".animation.AnimationActivity"/>
+    <activity android:name=".extension.ExtensionActivity"/>
+    <activity android:name=".configuration.ConfigurationActivity"/>
+</application>
+</manifest>
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/AbstractFragmentsActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/AbstractFragmentsActivity.java
new file mode 100644
index 0000000..154c2e4
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/AbstractFragmentsActivity.java
@@ -0,0 +1,82 @@
+package com.davemorrissey.labs.subscaleview.test;
+
+import android.app.ActionBar;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.FragmentActivity;
+import android.view.MenuItem;
+
+import java.util.List;
+
+public abstract class AbstractFragmentsActivity extends FragmentActivity {
+
+    private static final String BUNDLE_PAGE = "page";
+
+    private int page;
+
+    private final int title;
+    private final int layout;
+    private final List<Page> notes;
+
+    protected abstract void onPageChanged(int page);
+
+    protected AbstractFragmentsActivity(int title, int layout, List<Page> notes) {
+        this.title = title;
+        this.layout = layout;
+        this.notes = notes;
+    }
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(layout);
+        ActionBar actionBar = getActionBar();
+        if (actionBar != null) {
+            actionBar.setTitle(getString(title));
+            actionBar.setDisplayHomeAsUpEnabled(true);
+        }
+        if (savedInstanceState != null && savedInstanceState.containsKey(BUNDLE_PAGE)) {
+            page = savedInstanceState.getInt(BUNDLE_PAGE);
+        }
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        updateNotes();
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putInt(BUNDLE_PAGE, page);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        finish();
+        return true;
+    }
+
+    public void next() {
+        page++;
+        updateNotes();
+    }
+
+    public void previous() {
+        page--;
+        updateNotes();
+    }
+
+    private void updateNotes() {
+        if (page > notes.size() - 1) {
+            return;
+        }
+        ActionBar actionBar = getActionBar();
+        if (actionBar != null) {
+            actionBar.setSubtitle(notes.get(page).getSubtitle());
+        }
+        onPageChanged(page);
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/AbstractPagesActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/AbstractPagesActivity.java
new file mode 100644
index 0000000..4ce36de
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/AbstractPagesActivity.java
@@ -0,0 +1,99 @@
+package com.davemorrissey.labs.subscaleview.test;
+
+import android.app.ActionBar;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.FragmentActivity;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.TextView;
+
+import java.util.List;
+
+public abstract class AbstractPagesActivity extends FragmentActivity {
+
+    private static final String BUNDLE_PAGE = "page";
+
+    private int page;
+
+    private final int title;
+    private final int layout;
+    private final List<Page> notes;
+
+    protected AbstractPagesActivity(int title, int layout, List<Page> notes) {
+        this.title = title;
+        this.layout = layout;
+        this.notes = notes;
+    }
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(layout);
+        ActionBar actionBar = getActionBar();
+        if (actionBar != null) {
+            actionBar.setTitle(getString(title));
+            actionBar.setDisplayHomeAsUpEnabled(true);
+        }
+        findViewById(R.id.next).setOnClickListener(new View.OnClickListener() {
+            @Override public void onClick(View v) { next(); }
+        });
+        findViewById(R.id.previous).setOnClickListener(new View.OnClickListener() {
+            @Override public void onClick(View v) { previous(); }
+        });
+        if (savedInstanceState != null && savedInstanceState.containsKey(BUNDLE_PAGE)) {
+            page = savedInstanceState.getInt(BUNDLE_PAGE);
+        }
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        updateNotes();
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putInt(BUNDLE_PAGE, page);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        finish();
+        return true;
+    }
+
+    private void next() {
+        page++;
+        updateNotes();
+    }
+
+    private void previous() {
+        page--;
+        updateNotes();
+    }
+
+    private void updateNotes() {
+        if (page > notes.size() - 1) {
+            return;
+        }
+        ActionBar actionBar = getActionBar();
+        if (actionBar != null) {
+            actionBar.setSubtitle(notes.get(page).getSubtitle());
+        }
+        ((TextView)findViewById(R.id.note)).setText(notes.get(page).getText());
+        findViewById(R.id.next).setVisibility(page >= notes.size() - 1 ? View.INVISIBLE : View.VISIBLE);
+        findViewById(R.id.previous).setVisibility(page <= 0 ? View.INVISIBLE : View.VISIBLE);
+        onPageChanged(page);
+    }
+
+    protected final int getPage() {
+        return page;
+    }
+
+    protected void onPageChanged(int page) {
+
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/MainActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/MainActivity.java
new file mode 100644
index 0000000..8f596bd
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/MainActivity.java
@@ -0,0 +1,71 @@
+package com.davemorrissey.labs.subscaleview.test;
+
+import android.app.ActionBar;
+import android.app.Activity;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.view.View;
+
+import com.davemorrissey.labs.subscaleview.test.R.id;
+import com.davemorrissey.labs.subscaleview.test.animation.AnimationActivity;
+import com.davemorrissey.labs.subscaleview.test.basicfeatures.BasicFeaturesActivity;
+import com.davemorrissey.labs.subscaleview.test.configuration.ConfigurationActivity;
+import com.davemorrissey.labs.subscaleview.test.eventhandling.EventHandlingActivity;
+import com.davemorrissey.labs.subscaleview.test.eventhandlingadvanced.AdvancedEventHandlingActivity;
+import com.davemorrissey.labs.subscaleview.test.extension.ExtensionActivity;
+import com.davemorrissey.labs.subscaleview.test.imagedisplay.ImageDisplayActivity;
+import com.davemorrissey.labs.subscaleview.test.viewpager.ViewPagerActivity;
+
+public class MainActivity extends Activity implements View.OnClickListener {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        ActionBar actionBar = getActionBar();
+        if (actionBar != null) {
+            actionBar.setTitle(R.string.main_title);
+        }
+        setContentView(R.layout.main);
+        findViewById(id.basicFeatures).setOnClickListener(this);
+        findViewById(id.imageDisplay).setOnClickListener(this);
+        findViewById(id.eventHandling).setOnClickListener(this);
+        findViewById(id.advancedEventHandling).setOnClickListener(this);
+        findViewById(id.viewPagerGalleries).setOnClickListener(this);
+        findViewById(id.animation).setOnClickListener(this);
+        findViewById(id.extension).setOnClickListener(this);
+        findViewById(id.configuration).setOnClickListener(this);
+        findViewById(id.github).setOnClickListener(this);
+    }
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case id.basicFeatures: startActivity(BasicFeaturesActivity.class); break;
+            case id.imageDisplay: startActivity(ImageDisplayActivity.class); break;
+            case id.eventHandling: startActivity(EventHandlingActivity.class); break;
+            case id.advancedEventHandling: startActivity(AdvancedEventHandlingActivity.class); break;
+            case id.viewPagerGalleries: startActivity(ViewPagerActivity.class); break;
+            case id.animation: startActivity(AnimationActivity.class); break;
+            case id.extension: startActivity(ExtensionActivity.class); break;
+            case id.configuration: startActivity(ConfigurationActivity.class); break;
+            case id.github: openGitHub(); break;
+        }
+    }
+
+    private void startActivity(Class<? extends Activity> activity) {
+        Intent intent = new Intent(this, activity);
+        startActivity(intent);
+    }
+
+    private void openGitHub() {
+        Intent i = new Intent(Intent.ACTION_VIEW);
+        i.setData(Uri.parse("https://github.com/davemorrissey/subsampling-scale-image-view"));
+        startActivity(i);
+    }
+
+    @Override
+    public void onBackPressed() {
+        moveTaskToBack(true);
+    }
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/Page.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/Page.java
new file mode 100644
index 0000000..903c04f
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/Page.java
@@ -0,0 +1,21 @@
+package com.davemorrissey.labs.subscaleview.test;
+
+public class Page {
+
+    private final int text;
+
+    private final int subtitle;
+
+    public Page(int subtitle, int text) {
+        this.subtitle = subtitle;
+        this.text = text;
+    }
+
+    public int getText() {
+        return text;
+    }
+
+    public int getSubtitle() {
+        return subtitle;
+    }
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/animation/AnimationActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/animation/AnimationActivity.java
new file mode 100644
index 0000000..4166698
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/animation/AnimationActivity.java
@@ -0,0 +1,71 @@
+package com.davemorrissey.labs.subscaleview.test.animation;
+
+import android.graphics.PointF;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.view.View;
+
+import com.davemorrissey.labs.subscaleview.ImageSource;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.AnimationBuilder;
+import com.davemorrissey.labs.subscaleview.test.AbstractPagesActivity;
+import com.davemorrissey.labs.subscaleview.test.Page;
+import com.davemorrissey.labs.subscaleview.test.R.id;
+import com.davemorrissey.labs.subscaleview.test.extension.views.PinView;
+
+import java.util.Arrays;
+import java.util.Random;
+
+import static com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.*;
+import static com.davemorrissey.labs.subscaleview.test.R.string.*;
+import static com.davemorrissey.labs.subscaleview.test.R.layout.*;
+
+public class AnimationActivity extends AbstractPagesActivity {
+
+    private PinView view;
+
+    public AnimationActivity() {
+        super(animation_title, animation_activity, Arrays.asList(
+                new Page(animation_p1_subtitle, animation_p1_text),
+                new Page(animation_p2_subtitle, animation_p2_text),
+                new Page(animation_p3_subtitle, animation_p3_text),
+                new Page(animation_p4_subtitle, animation_p4_text)
+        ));
+    }
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        findViewById(id.play).setOnClickListener(new OnClickListener() {
+            @Override public void onClick(View v) { AnimationActivity.this.play(); }
+        });
+        view = findViewById(id.imageView);
+        view.setImage(ImageSource.asset("sanmartino.jpg"));
+    }
+
+    @Override
+    protected void onPageChanged(int page) {
+        if (page == 2) {
+            view.setPanLimit(PAN_LIMIT_CENTER);
+        } else {
+            view.setPanLimit(PAN_LIMIT_INSIDE);
+        }
+    }
+
+    private void play() {
+        Random random = new Random();
+        if (view.isReady()) {
+            float maxScale = view.getMaxScale();
+            float minScale = view.getMinScale();
+            float scale = (random.nextFloat() * (maxScale - minScale)) + minScale;
+            PointF center = new PointF(random.nextInt(view.getSWidth()), random.nextInt(view.getSHeight()));
+            view.setPin(center);
+            AnimationBuilder animationBuilder = view.animateScaleAndCenter(scale, center);
+            if (getPage() == 3) {
+                animationBuilder.withDuration(2000).withEasing(EASE_OUT_QUAD).withInterruptible(false).start();
+            } else {
+                animationBuilder.withDuration(750).start();
+            }
+        }
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/basicfeatures/BasicFeaturesActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/basicfeatures/BasicFeaturesActivity.java
new file mode 100644
index 0000000..ad8b600
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/basicfeatures/BasicFeaturesActivity.java
@@ -0,0 +1,36 @@
+package com.davemorrissey.labs.subscaleview.test.basicfeatures;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+
+import com.davemorrissey.labs.subscaleview.ImageSource;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+import com.davemorrissey.labs.subscaleview.test.AbstractPagesActivity;
+import com.davemorrissey.labs.subscaleview.test.Page;
+import com.davemorrissey.labs.subscaleview.test.R.id;
+
+import java.util.Arrays;
+
+import static com.davemorrissey.labs.subscaleview.test.R.string.*;
+import static com.davemorrissey.labs.subscaleview.test.R.layout.*;
+
+public class BasicFeaturesActivity extends AbstractPagesActivity {
+
+    public BasicFeaturesActivity() {
+        super(basic_title, pages_activity, Arrays.asList(
+                new Page(basic_p1_subtitle, basic_p1_text),
+                new Page(basic_p2_subtitle, basic_p2_text),
+                new Page(basic_p3_subtitle, basic_p3_text),
+                new Page(basic_p4_subtitle, basic_p4_text),
+                new Page(basic_p5_subtitle, basic_p5_text)
+        ));
+    }
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        SubsamplingScaleImageView view = findViewById(id.imageView);
+        view.setImage(ImageSource.asset("sanmartino.jpg"));
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/configuration/ConfigurationActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/configuration/ConfigurationActivity.java
new file mode 100644
index 0000000..2296581
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/configuration/ConfigurationActivity.java
@@ -0,0 +1,94 @@
+package com.davemorrissey.labs.subscaleview.test.configuration;
+
+import android.graphics.PointF;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+
+import com.davemorrissey.labs.subscaleview.ImageSource;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+import com.davemorrissey.labs.subscaleview.test.AbstractPagesActivity;
+import com.davemorrissey.labs.subscaleview.test.Page;
+import com.davemorrissey.labs.subscaleview.test.R.id;
+
+import java.util.Arrays;
+
+import static com.davemorrissey.labs.subscaleview.test.R.string.*;
+import static com.davemorrissey.labs.subscaleview.test.R.layout.*;
+
+public class ConfigurationActivity extends AbstractPagesActivity {
+
+    private SubsamplingScaleImageView view;
+
+    public ConfigurationActivity() {
+        super(configuration_title, pages_activity, Arrays.asList(
+                new Page(configuration_p1_subtitle, configuration_p1_text),
+                new Page(configuration_p2_subtitle, configuration_p2_text),
+                new Page(configuration_p3_subtitle, configuration_p3_text),
+                new Page(configuration_p4_subtitle, configuration_p4_text),
+                new Page(configuration_p5_subtitle, configuration_p5_text),
+                new Page(configuration_p6_subtitle, configuration_p6_text),
+                new Page(configuration_p7_subtitle, configuration_p7_text),
+                new Page(configuration_p8_subtitle, configuration_p8_text),
+                new Page(configuration_p9_subtitle, configuration_p9_text),
+                new Page(configuration_p10_subtitle, configuration_p10_text)
+        ));
+    }
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        view = findViewById(id.imageView);
+        view.setImage(ImageSource.asset("card.png"));
+    }
+
+    @Override
+    protected void onPageChanged(int page) {
+        if (page == 0) {
+            view.setMinimumDpi(50);
+        } else {
+            view.setMaxScale(2F);
+        }
+        if (page == 1) {
+            view.setMinimumTileDpi(50);
+        } else {
+            view.setMinimumTileDpi(320);
+        }
+        if (page == 4) {
+            view.setDoubleTapZoomStyle(SubsamplingScaleImageView.ZOOM_FOCUS_CENTER);
+        } else if (page == 5) {
+            view.setDoubleTapZoomStyle(SubsamplingScaleImageView.ZOOM_FOCUS_CENTER_IMMEDIATE);
+        } else {
+            view.setDoubleTapZoomStyle(SubsamplingScaleImageView.ZOOM_FOCUS_FIXED);
+        }
+        if (page == 6) {
+            view.setDoubleTapZoomDpi(240);
+        } else {
+            view.setDoubleTapZoomScale(1F);
+        }
+        if (page == 7) {
+            view.setPanLimit(SubsamplingScaleImageView.PAN_LIMIT_CENTER);
+        } else if (page == 8) {
+            view.setPanLimit(SubsamplingScaleImageView.PAN_LIMIT_OUTSIDE);
+        } else {
+            view.setPanLimit(SubsamplingScaleImageView.PAN_LIMIT_INSIDE);
+        }
+        if (page == 9) {
+            view.setDebug(true);
+        } else {
+            view.setDebug(false);
+        }
+        if (page == 2) {
+            view.setScaleAndCenter(0f, new PointF(3900, 3120));
+            view.setPanEnabled(false);
+        } else {
+            view.setPanEnabled(true);
+        }
+        if (page == 3) {
+            view.setScaleAndCenter(1f, new PointF(3900, 3120));
+            view.setZoomEnabled(false);
+        } else {
+            view.setZoomEnabled(true);
+        }
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/eventhandling/EventHandlingActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/eventhandling/EventHandlingActivity.java
new file mode 100644
index 0000000..5ce7b86
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/eventhandling/EventHandlingActivity.java
@@ -0,0 +1,41 @@
+package com.davemorrissey.labs.subscaleview.test.eventhandling;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Toast;
+
+import com.davemorrissey.labs.subscaleview.ImageSource;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+import com.davemorrissey.labs.subscaleview.test.AbstractPagesActivity;
+import com.davemorrissey.labs.subscaleview.test.Page;
+import com.davemorrissey.labs.subscaleview.test.R.id;
+
+import java.util.Arrays;
+
+import static com.davemorrissey.labs.subscaleview.test.R.layout.*;
+import static com.davemorrissey.labs.subscaleview.test.R.string.*;
+
+public class EventHandlingActivity extends AbstractPagesActivity {
+
+    public EventHandlingActivity() {
+        super(event_title, pages_activity, Arrays.asList(
+                new Page(event_p1_subtitle, event_p1_text),
+                new Page(event_p2_subtitle, event_p2_text),
+                new Page(event_p3_subtitle, event_p3_text)
+        ));
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        SubsamplingScaleImageView imageView = findViewById(id.imageView);
+        imageView.setImage(ImageSource.asset("sanmartino.jpg"));
+        imageView.setOnClickListener(new View.OnClickListener() {
+            @Override public void onClick(View v) { Toast.makeText(v.getContext(), "Clicked", Toast.LENGTH_SHORT).show(); }
+        });
+        imageView.setOnLongClickListener(new View.OnLongClickListener() {
+            @Override public boolean onLongClick(View v) { Toast.makeText(v.getContext(), "Long clicked", Toast.LENGTH_SHORT).show(); return true; }
+        });
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/eventhandlingadvanced/AdvancedEventHandlingActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/eventhandlingadvanced/AdvancedEventHandlingActivity.java
new file mode 100644
index 0000000..9e0326a
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/eventhandlingadvanced/AdvancedEventHandlingActivity.java
@@ -0,0 +1,78 @@
+package com.davemorrissey.labs.subscaleview.test.eventhandlingadvanced;
+
+import android.graphics.PointF;
+import android.os.Bundle;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.Toast;
+
+import com.davemorrissey.labs.subscaleview.ImageSource;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+import com.davemorrissey.labs.subscaleview.test.AbstractPagesActivity;
+import com.davemorrissey.labs.subscaleview.test.Page;
+import com.davemorrissey.labs.subscaleview.test.R.id;
+
+import java.util.Arrays;
+
+import static com.davemorrissey.labs.subscaleview.test.R.string.*;
+import static com.davemorrissey.labs.subscaleview.test.R.layout.*;
+
+public class AdvancedEventHandlingActivity extends AbstractPagesActivity {
+
+    public AdvancedEventHandlingActivity() {
+        super(advancedevent_title, pages_activity, Arrays.asList(
+                new Page(advancedevent_p1_subtitle, advancedevent_p1_text),
+                new Page(advancedevent_p2_subtitle, advancedevent_p2_text),
+                new Page(advancedevent_p3_subtitle, advancedevent_p3_text),
+                new Page(advancedevent_p4_subtitle, advancedevent_p4_text),
+                new Page(advancedevent_p5_subtitle, advancedevent_p5_text)
+        ));
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        final SubsamplingScaleImageView imageView = findViewById(id.imageView);
+        final GestureDetector gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
+            @Override
+            public boolean onSingleTapConfirmed(MotionEvent e) {
+                if (imageView.isReady()) {
+                    PointF sCoord = imageView.viewToSourceCoord(e.getX(), e.getY());
+                    Toast.makeText(getApplicationContext(), "Single tap: " + ((int)sCoord.x) + ", " + ((int)sCoord.y), Toast.LENGTH_SHORT).show();
+                } else {
+                    Toast.makeText(getApplicationContext(), "Single tap: Image not ready", Toast.LENGTH_SHORT).show();
+                }
+                return true;
+            }
+            @Override
+            public void onLongPress(MotionEvent e) {
+                if (imageView.isReady()) {
+                    PointF sCoord = imageView.viewToSourceCoord(e.getX(), e.getY());
+                    Toast.makeText(getApplicationContext(), "Long press: " + ((int)sCoord.x) + ", " + ((int)sCoord.y), Toast.LENGTH_SHORT).show();
+                } else {
+                    Toast.makeText(getApplicationContext(), "Long press: Image not ready", Toast.LENGTH_SHORT).show();
+                }
+            }
+            @Override
+            public boolean onDoubleTap(MotionEvent e) {
+                if (imageView.isReady()) {
+                    PointF sCoord = imageView.viewToSourceCoord(e.getX(), e.getY());
+                    Toast.makeText(getApplicationContext(), "Double tap: " + ((int)sCoord.x) + ", " + ((int)sCoord.y), Toast.LENGTH_SHORT).show();
+                } else {
+                    Toast.makeText(getApplicationContext(), "Double tap: Image not ready", Toast.LENGTH_SHORT).show();
+                }
+                return true;
+            }
+        });
+
+        imageView.setImage(ImageSource.asset("sanmartino.jpg"));
+        imageView.setOnTouchListener(new View.OnTouchListener() {
+            @Override
+            public boolean onTouch(View view, MotionEvent motionEvent) {
+                return gestureDetector.onTouchEvent(motionEvent);
+            }
+        });
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionActivity.java
new file mode 100644
index 0000000..89b4344
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionActivity.java
@@ -0,0 +1,51 @@
+package com.davemorrissey.labs.subscaleview.test.extension;
+
+import android.support.v4.app.Fragment;
+import android.util.Log;
+
+import com.davemorrissey.labs.subscaleview.test.AbstractFragmentsActivity;
+import com.davemorrissey.labs.subscaleview.test.Page;
+import com.davemorrissey.labs.subscaleview.test.R.id;
+import com.davemorrissey.labs.subscaleview.test.imagedisplay.ImageDisplayActivity;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static com.davemorrissey.labs.subscaleview.test.R.layout.fragments_activity;
+import static com.davemorrissey.labs.subscaleview.test.R.string.extension_p1_subtitle;
+import static com.davemorrissey.labs.subscaleview.test.R.string.extension_p1_text;
+import static com.davemorrissey.labs.subscaleview.test.R.string.extension_p2_subtitle;
+import static com.davemorrissey.labs.subscaleview.test.R.string.extension_p2_text;
+import static com.davemorrissey.labs.subscaleview.test.R.string.extension_p3_subtitle;
+import static com.davemorrissey.labs.subscaleview.test.R.string.extension_p3_text;
+import static com.davemorrissey.labs.subscaleview.test.R.string.extension_title;
+
+public class ExtensionActivity extends AbstractFragmentsActivity {
+
+    private static final List<Class<? extends Fragment>> FRAGMENTS = Arrays.asList(
+            ExtensionPinFragment.class,
+            ExtensionCircleFragment.class,
+            ExtensionFreehandFragment.class
+    );
+    
+    public ExtensionActivity() {
+        super(extension_title, fragments_activity, Arrays.asList(
+                new Page(extension_p1_subtitle, extension_p1_text),
+                new Page(extension_p2_subtitle, extension_p2_text),
+                new Page(extension_p3_subtitle, extension_p3_text)
+        ));
+    }
+
+    @Override
+    protected void onPageChanged(int page) {
+        try {
+            getSupportFragmentManager()
+                    .beginTransaction()
+                    .replace(id.frame, FRAGMENTS.get(page).newInstance())
+                    .commit();
+        } catch (Exception e) {
+            Log.e(ImageDisplayActivity.class.getName(), "Failed to load fragment", e);
+        }
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionCircleFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionCircleFragment.java
new file mode 100644
index 0000000..47edf07
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionCircleFragment.java
@@ -0,0 +1,34 @@
+package com.davemorrissey.labs.subscaleview.test.extension;
+
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.davemorrissey.labs.subscaleview.ImageSource;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+import com.davemorrissey.labs.subscaleview.test.R.id;
+import com.davemorrissey.labs.subscaleview.test.R.layout;
+
+public class ExtensionCircleFragment extends Fragment {
+
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        View rootView = inflater.inflate(layout.extension_circle_fragment, container, false);
+        final ExtensionActivity activity = (ExtensionActivity)getActivity();
+        if (activity != null) {
+            rootView.findViewById(id.next).setOnClickListener(new View.OnClickListener() {
+                @Override public void onClick(View v) { activity.next(); }
+            });
+            rootView.findViewById(id.previous).setOnClickListener(new View.OnClickListener() {
+                @Override public void onClick(View v) { activity.previous(); }
+            });
+        }
+        SubsamplingScaleImageView imageView = rootView.findViewById(id.imageView);
+        imageView.setImage(ImageSource.asset("sanmartino.jpg"));
+        return rootView;
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionFreehandFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionFreehandFragment.java
new file mode 100644
index 0000000..5ea1467
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionFreehandFragment.java
@@ -0,0 +1,34 @@
+package com.davemorrissey.labs.subscaleview.test.extension;
+
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.davemorrissey.labs.subscaleview.ImageSource;
+import com.davemorrissey.labs.subscaleview.test.R.id;
+import com.davemorrissey.labs.subscaleview.test.R.layout;
+import com.davemorrissey.labs.subscaleview.test.extension.views.FreehandView;
+
+public class ExtensionFreehandFragment extends Fragment {
+
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        View rootView = inflater.inflate(layout.extension_freehand_fragment, container, false);
+        final ExtensionActivity activity = (ExtensionActivity)getActivity();
+        if (activity != null) {
+            rootView.findViewById(id.previous).setOnClickListener(new View.OnClickListener() {
+                @Override public void onClick(View v) { activity.previous(); }
+            });
+        }
+        final FreehandView imageView = rootView.findViewById(id.imageView);
+        imageView.setImage(ImageSource.asset("sanmartino.jpg"));
+        rootView.findViewById(id.reset).setOnClickListener(new View.OnClickListener() {
+            @Override public void onClick(View v) { imageView.reset(); }
+        });
+        return rootView;
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionPinFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionPinFragment.java
new file mode 100644
index 0000000..c7f52f1
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionPinFragment.java
@@ -0,0 +1,33 @@
+package com.davemorrissey.labs.subscaleview.test.extension;
+
+import android.graphics.PointF;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.davemorrissey.labs.subscaleview.ImageSource;
+import com.davemorrissey.labs.subscaleview.test.R.id;
+import com.davemorrissey.labs.subscaleview.test.R.layout;
+import com.davemorrissey.labs.subscaleview.test.extension.views.PinView;
+
+public class ExtensionPinFragment extends Fragment {
+
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        View rootView = inflater.inflate(layout.extension_pin_fragment, container, false);
+        final ExtensionActivity activity = (ExtensionActivity)getActivity();
+        if (activity != null) {
+            rootView.findViewById(id.next).setOnClickListener(new View.OnClickListener() {
+                @Override public void onClick(View v) { activity.next(); }
+            });
+        }
+        PinView imageView = rootView.findViewById(id.imageView);
+        imageView.setImage(ImageSource.asset("sanmartino.jpg"));
+        imageView.setPin(new PointF(1602f, 405f));
+        return rootView;
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/views/CircleView.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/views/CircleView.java
new file mode 100644
index 0000000..084b236
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/views/CircleView.java
@@ -0,0 +1,56 @@
+package com.davemorrissey.labs.subscaleview.test.extension.views;
+
+import android.content.Context;
+import android.graphics.*;
+import android.graphics.Paint.Cap;
+import android.graphics.Paint.Style;
+import android.util.AttributeSet;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+
+public class CircleView extends SubsamplingScaleImageView {
+
+    private int strokeWidth;
+
+    private final PointF sCenter = new PointF();
+    private final PointF vCenter = new PointF();
+    private final Paint paint = new Paint();
+
+    public CircleView(Context context) {
+        this(context, null);
+    }
+
+    public CircleView(Context context, AttributeSet attr) {
+        super(context, attr);
+        initialise();
+    }
+
+    private void initialise() {
+        float density = getResources().getDisplayMetrics().densityDpi;
+        strokeWidth = (int)(density/60f);
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+
+        // Don't draw pin before image is ready so it doesn't move around during setup.
+        if (!isReady()) {
+            return;
+        }
+
+        sCenter.set(getSWidth()/2, getSHeight()/2);
+        sourceToViewCoord(sCenter, vCenter);
+        float radius = (getScale() * getSWidth()) * 0.25f;
+
+        paint.setAntiAlias(true);
+        paint.setStyle(Style.STROKE);
+        paint.setStrokeCap(Cap.ROUND);
+        paint.setStrokeWidth(strokeWidth * 2);
+        paint.setColor(Color.BLACK);
+        canvas.drawCircle(vCenter.x, vCenter.y, radius, paint);
+        paint.setStrokeWidth(strokeWidth);
+        paint.setColor(Color.argb(255, 51, 181, 229));
+        canvas.drawCircle(vCenter.x, vCenter.y, radius, paint);
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/views/FreehandView.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/views/FreehandView.java
new file mode 100644
index 0000000..f4f1403
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/views/FreehandView.java
@@ -0,0 +1,141 @@
+package com.davemorrissey.labs.subscaleview.test.extension.views;
+
+import android.content.Context;
+import android.graphics.*;
+import android.graphics.Paint.Cap;
+import android.graphics.Paint.Style;
+import android.support.annotation.NonNull;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.View.OnTouchListener;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class FreehandView extends SubsamplingScaleImageView implements OnTouchListener {
+
+    private final Paint paint = new Paint();
+    private final Path vPath = new Path();
+    private final PointF vPoint = new PointF();
+    private PointF vPrev = new PointF();
+    private PointF vPrevious;
+    private PointF vStart;
+    private boolean drawing = false;
+
+    private int strokeWidth;
+
+    private List<PointF> sPoints;
+
+    public FreehandView(Context context, AttributeSet attr) {
+        super(context, attr);
+        initialise();
+    }
+
+    public FreehandView(Context context) {
+        this(context, null);
+    }
+
+    private void initialise() {
+        setOnTouchListener(this);
+        float density = getResources().getDisplayMetrics().densityDpi;
+        strokeWidth = (int)(density/60f);
+    }
+
+    @Override
+    public boolean onTouch(View view, MotionEvent motionEvent) {
+        return false;
+    }
+
+    @Override
+    public boolean onTouchEvent(@NonNull MotionEvent event) {
+        if (sPoints != null && !drawing) {
+            return super.onTouchEvent(event);
+        }
+        boolean consumed = false;
+        int touchCount = event.getPointerCount();
+        switch (event.getActionMasked()) {
+            case MotionEvent.ACTION_DOWN:
+                if (event.getActionIndex() == 0) {
+                    vStart = new PointF(event.getX(), event.getY());
+                    vPrevious = new PointF(event.getX(), event.getY());
+                } else {
+                    vStart = null;
+                    vPrevious = null;
+                }
+                break;
+            case MotionEvent.ACTION_MOVE:
+                PointF sCurrentF = viewToSourceCoord(event.getX(), event.getY());
+                PointF sCurrent = new PointF(sCurrentF.x, sCurrentF.y);
+                PointF sStart = vStart == null ? null : new PointF(viewToSourceCoord(vStart).x, viewToSourceCoord(vStart).y);
+
+                if (touchCount == 1 && vStart != null) {
+                    float vDX = Math.abs(event.getX() - vPrevious.x);
+                    float vDY = Math.abs(event.getY() - vPrevious.y);
+                    if (vDX >= strokeWidth * 5 || vDY >= strokeWidth * 5) {
+                        if (sPoints == null) {
+                            sPoints = new ArrayList<>();
+                            sPoints.add(sStart);
+                        }
+                        sPoints.add(sCurrent);
+                        vPrevious.x = event.getX();
+                        vPrevious.y = event.getY();
+                        drawing = true;
+                    }
+                    consumed = true;
+                    invalidate();
+                } else if (touchCount == 1) {
+                    // Consume all one touch drags to prevent odd panning effects handled by the superclass.
+                    consumed = true;
+                }
+                break;
+            case MotionEvent.ACTION_UP:
+            case MotionEvent.ACTION_POINTER_UP:
+                invalidate();
+                drawing = false;
+                vPrevious = null;
+                vStart = null;
+        }
+        // Use parent to handle pinch and two-finger pan.
+        return consumed || super.onTouchEvent(event);
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+
+        // Don't draw anything before image is ready.
+        if (!isReady()) {
+            return;
+        }
+
+        paint.setAntiAlias(true);
+
+        if (sPoints != null && sPoints.size() >= 2) {
+            vPath.reset();
+            sourceToViewCoord(sPoints.get(0).x, sPoints.get(0).y, vPrev);
+            vPath.moveTo(vPrev.x, vPrev.y);
+            for (int i = 1; i < sPoints.size(); i++) {
+                sourceToViewCoord(sPoints.get(i).x, sPoints.get(i).y, vPoint);
+                vPath.quadTo(vPrev.x, vPrev.y, (vPoint.x + vPrev.x) / 2, (vPoint.y + vPrev.y) / 2);
+                vPrev = vPoint;
+            }
+            paint.setStyle(Style.STROKE);
+            paint.setStrokeCap(Cap.ROUND);
+            paint.setStrokeWidth(strokeWidth * 2);
+            paint.setColor(Color.BLACK);
+            canvas.drawPath(vPath, paint);
+            paint.setStrokeWidth(strokeWidth);
+            paint.setColor(Color.argb(255, 51, 181, 229));
+            canvas.drawPath(vPath, paint);
+        }
+
+    }
+
+    public void reset() {
+        this.sPoints = null;
+        invalidate();
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/views/PinView.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/views/PinView.java
new file mode 100644
index 0000000..581dcce
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/views/PinView.java
@@ -0,0 +1,60 @@
+package com.davemorrissey.labs.subscaleview.test.extension.views;
+
+import android.content.Context;
+import android.graphics.*;
+import android.util.AttributeSet;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+import com.davemorrissey.labs.subscaleview.test.R.drawable;
+
+
+public class PinView extends SubsamplingScaleImageView {
+
+    private final Paint paint = new Paint();
+    private final PointF vPin = new PointF();
+    private PointF sPin;
+    private Bitmap pin;
+
+    public PinView(Context context) {
+        this(context, null);
+    }
+
+    public PinView(Context context, AttributeSet attr) {
+        super(context, attr);
+        initialise();
+    }
+
+    public void setPin(PointF sPin) {
+        this.sPin = sPin;
+        initialise();
+        invalidate();
+    }
+
+    private void initialise() {
+        float density = getResources().getDisplayMetrics().densityDpi;
+        pin = BitmapFactory.decodeResource(this.getResources(), drawable.pushpin_blue);
+        float w = (density/420f) * pin.getWidth();
+        float h = (density/420f) * pin.getHeight();
+        pin = Bitmap.createScaledBitmap(pin, (int)w, (int)h, true);
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+
+        // Don't draw pin before image is ready so it doesn't move around during setup.
+        if (!isReady()) {
+            return;
+        }
+
+        paint.setAntiAlias(true);
+
+        if (sPin != null && pin != null) {
+            sourceToViewCoord(sPin, vPin);
+            float vX = vPin.x - (pin.getWidth()/2);
+            float vY = vPin.y - pin.getHeight();
+            canvas.drawBitmap(pin, vX, vY, paint);
+        }
+
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayActivity.java
new file mode 100644
index 0000000..9900e34
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayActivity.java
@@ -0,0 +1,44 @@
+package com.davemorrissey.labs.subscaleview.test.imagedisplay;
+
+import android.support.v4.app.Fragment;
+import android.util.Log;
+
+import com.davemorrissey.labs.subscaleview.test.AbstractFragmentsActivity;
+import com.davemorrissey.labs.subscaleview.test.Page;
+import com.davemorrissey.labs.subscaleview.test.R.id;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static com.davemorrissey.labs.subscaleview.test.R.string.*;
+import static com.davemorrissey.labs.subscaleview.test.R.layout.*;
+
+public class ImageDisplayActivity extends AbstractFragmentsActivity {
+
+    private static final List<Class<? extends Fragment>> FRAGMENTS = Arrays.asList(
+            ImageDisplayLargeFragment.class,
+            ImageDisplayRotateFragment.class,
+            ImageDisplayRegionFragment.class
+    );
+
+    public ImageDisplayActivity() {
+        super(display_title, fragments_activity, Arrays.asList(
+                new Page(display_p1_subtitle, display_p1_text),
+                new Page(display_p2_subtitle, display_p2_text),
+                new Page(display_p3_subtitle, display_p3_text)
+        ));
+    }
+
+    @Override
+    protected void onPageChanged(int page) {
+        try {
+            getSupportFragmentManager()
+                    .beginTransaction()
+                    .replace(id.frame, FRAGMENTS.get(page).newInstance())
+                    .commit();
+        } catch (Exception e) {
+            Log.e(ImageDisplayActivity.class.getName(), "Failed to load fragment", e);
+        }
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayLargeFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayLargeFragment.java
new file mode 100644
index 0000000..70d3445
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayLargeFragment.java
@@ -0,0 +1,31 @@
+package com.davemorrissey.labs.subscaleview.test.imagedisplay;
+
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.davemorrissey.labs.subscaleview.ImageSource;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+import com.davemorrissey.labs.subscaleview.test.R.id;
+import com.davemorrissey.labs.subscaleview.test.R.layout;
+
+public class ImageDisplayLargeFragment extends Fragment {
+
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        View rootView = inflater.inflate(layout.imagedisplay_large_fragment, container, false);
+        final ImageDisplayActivity activity = (ImageDisplayActivity)getActivity();
+        if (activity != null) {
+            rootView.findViewById(id.next).setOnClickListener(new View.OnClickListener() {
+                @Override public void onClick(View v) { activity.next(); }
+            });
+        }
+        SubsamplingScaleImageView imageView = rootView.findViewById(id.imageView);
+        imageView.setImage(ImageSource.asset("card.png"));
+        return rootView;
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRegionFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRegionFragment.java
new file mode 100644
index 0000000..566e144
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRegionFragment.java
@@ -0,0 +1,44 @@
+package com.davemorrissey.labs.subscaleview.test.imagedisplay;
+
+import android.graphics.Bitmap;
+import android.graphics.Rect;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.davemorrissey.labs.subscaleview.ImageSource;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+import com.davemorrissey.labs.subscaleview.decoder.CompatDecoderFactory;
+import com.davemorrissey.labs.subscaleview.decoder.ImageDecoder;
+import com.davemorrissey.labs.subscaleview.decoder.ImageRegionDecoder;
+import com.davemorrissey.labs.subscaleview.decoder.SkiaImageDecoder;
+import com.davemorrissey.labs.subscaleview.decoder.SkiaImageRegionDecoder;
+import com.davemorrissey.labs.subscaleview.test.R.id;
+import com.davemorrissey.labs.subscaleview.test.R.layout;
+
+public class ImageDisplayRegionFragment extends Fragment {
+
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        View rootView = inflater.inflate(layout.imagedisplay_region_fragment, container, false);
+        final SubsamplingScaleImageView imageView = rootView.findViewById(id.imageView);
+        imageView.setBitmapDecoderFactory(new CompatDecoderFactory<ImageDecoder>(SkiaImageDecoder.class, Bitmap.Config.ARGB_8888));
+        imageView.setRegionDecoderFactory(new CompatDecoderFactory<ImageRegionDecoder>(SkiaImageRegionDecoder.class, Bitmap.Config.ARGB_8888));
+        imageView.setOrientation(SubsamplingScaleImageView.ORIENTATION_90);
+        imageView.setImage(ImageSource.asset("card.png").region(new Rect(5200, 651, 8200, 3250)));
+        final ImageDisplayActivity activity = (ImageDisplayActivity)getActivity();
+        if (activity != null) {
+            rootView.findViewById(id.previous).setOnClickListener(new View.OnClickListener() {
+                @Override public void onClick(View v) { activity.previous(); }
+            });
+        }
+        rootView.findViewById(id.rotate).setOnClickListener(new View.OnClickListener() {
+            @Override public void onClick(View v) { imageView.setOrientation((imageView.getOrientation() + 90) % 360); }
+        });
+        return rootView;
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRotateFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRotateFragment.java
new file mode 100644
index 0000000..46465c4
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRotateFragment.java
@@ -0,0 +1,38 @@
+package com.davemorrissey.labs.subscaleview.test.imagedisplay;
+
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.davemorrissey.labs.subscaleview.ImageSource;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+import com.davemorrissey.labs.subscaleview.test.R.id;
+import com.davemorrissey.labs.subscaleview.test.R.layout;
+
+public class ImageDisplayRotateFragment extends Fragment {
+
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        View rootView = inflater.inflate(layout.imagedisplay_rotate_fragment, container, false);
+        final SubsamplingScaleImageView imageView = rootView.findViewById(id.imageView);
+        imageView.setImage(ImageSource.asset("swissroad.jpg"));
+        imageView.setOrientation(90);
+        final ImageDisplayActivity activity = (ImageDisplayActivity)getActivity();
+        if (activity != null) {
+            rootView.findViewById(id.previous).setOnClickListener(new View.OnClickListener() {
+                @Override public void onClick(View v) { activity.previous(); }
+            });
+            rootView.findViewById(id.next).setOnClickListener(new View.OnClickListener() {
+                @Override public void onClick(View v) { activity.next(); }
+            });
+        }
+        rootView.findViewById(id.rotate).setOnClickListener(new View.OnClickListener() {
+            @Override public void onClick(View v) { imageView.setOrientation((imageView.getOrientation() + 90) % 360); }
+        });
+        return rootView;
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/viewpager/VerticalViewPager.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/viewpager/VerticalViewPager.java
new file mode 100644
index 0000000..71131ea
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/viewpager/VerticalViewPager.java
@@ -0,0 +1,68 @@
+package com.davemorrissey.labs.subscaleview.test.viewpager;
+
+import android.content.Context;
+import android.support.annotation.NonNull;
+import android.support.v4.view.ViewPager;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+
+/**
+ * From http://stackoverflow.com/a/22797619/2719186
+ */
+public class VerticalViewPager extends ViewPager {
+
+    public VerticalViewPager(Context context) {
+        super(context);
+        init();
+    }
+
+    public VerticalViewPager(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init();
+    }
+
+    private void init() {
+        setPageTransformer(true, new VerticalPageTransformer());
+        setOverScrollMode(OVER_SCROLL_NEVER);
+    }
+
+    private class VerticalPageTransformer implements ViewPager.PageTransformer {
+
+        @Override
+        public void transformPage(@NonNull View view, float position) {
+            if (position < -1) {
+                view.setAlpha(0);
+            } else if (position <= 1) {
+                view.setAlpha(1);
+                view.setTranslationX(view.getWidth() * -position);
+                float yPosition = position * view.getHeight();
+                view.setTranslationY(yPosition);
+            } else {
+                view.setAlpha(0);
+            }
+        }
+    }
+
+    private MotionEvent swapXY(MotionEvent ev) {
+        float width = getWidth();
+        float height = getHeight();
+        float newX = (ev.getY() / height) * width;
+        float newY = (ev.getX() / width) * height;
+        ev.setLocation(newX, newY);
+        return ev;
+    }
+
+    @Override
+    public boolean onInterceptTouchEvent(MotionEvent ev){
+        boolean intercepted = super.onInterceptTouchEvent(swapXY(ev));
+        swapXY(ev);
+        return intercepted;
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent ev) {
+        return super.onTouchEvent(swapXY(ev));
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/viewpager/ViewPagerActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/viewpager/ViewPagerActivity.java
new file mode 100644
index 0000000..3f9a79d
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/viewpager/ViewPagerActivity.java
@@ -0,0 +1,82 @@
+package com.davemorrissey.labs.subscaleview.test.viewpager;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentStatePagerAdapter;
+import android.support.v4.view.ViewPager;
+import android.view.View;
+
+import com.davemorrissey.labs.subscaleview.test.AbstractPagesActivity;
+import com.davemorrissey.labs.subscaleview.test.Page;
+import com.davemorrissey.labs.subscaleview.test.R;
+
+import java.util.Arrays;
+
+import static com.davemorrissey.labs.subscaleview.test.R.layout.view_pager;
+import static com.davemorrissey.labs.subscaleview.test.R.string.pager_p1_subtitle;
+import static com.davemorrissey.labs.subscaleview.test.R.string.pager_p1_text;
+import static com.davemorrissey.labs.subscaleview.test.R.string.pager_p2_subtitle;
+import static com.davemorrissey.labs.subscaleview.test.R.string.pager_p2_text;
+import static com.davemorrissey.labs.subscaleview.test.R.string.pager_title;
+
+public class ViewPagerActivity extends AbstractPagesActivity {
+
+    private static final String[] IMAGES = { "sanmartino.jpg", "swissroad.jpg" };
+
+    public ViewPagerActivity() {
+        super(pager_title, view_pager, Arrays.asList(
+                new Page(pager_p1_subtitle, pager_p1_text),
+                new Page(pager_p2_subtitle, pager_p2_text)
+        ));
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        ViewPager horizontalPager = findViewById(R.id.horizontal_pager);
+        horizontalPager.setAdapter(new ScreenSlidePagerAdapter(getSupportFragmentManager()));
+        ViewPager verticalPager = findViewById(R.id.vertical_pager);
+        verticalPager.setAdapter(new ScreenSlidePagerAdapter(getSupportFragmentManager()));
+    }
+
+    @Override
+    public void onBackPressed() {
+        ViewPager viewPager = findViewById(getPage() == 0 ? R.id.horizontal_pager : R.id.vertical_pager);
+        if (viewPager.getCurrentItem() == 0) {
+            super.onBackPressed();
+        } else {
+            viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
+        }
+    }
+
+    @Override
+    protected void onPageChanged(int page) {
+        if (getPage() == 0) {
+            findViewById(R.id.horizontal_pager).setVisibility(View.VISIBLE);
+            findViewById(R.id.vertical_pager).setVisibility(View.GONE);
+        } else {
+            findViewById(R.id.horizontal_pager).setVisibility(View.GONE);
+            findViewById(R.id.vertical_pager).setVisibility(View.VISIBLE);
+        }
+    }
+
+    private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
+        ScreenSlidePagerAdapter(FragmentManager fm) {
+            super(fm);
+        }
+
+        @Override
+        public Fragment getItem(int position) {
+            ViewPagerFragment fragment = new ViewPagerFragment();
+            fragment.setAsset(IMAGES[position]);
+            return fragment;
+        }
+
+        @Override
+        public int getCount() {
+            return IMAGES.length;
+        }
+    }
+
+}
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/viewpager/ViewPagerFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/viewpager/ViewPagerFragment.java
new file mode 100644
index 0000000..03e7155
--- /dev/null
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/viewpager/ViewPagerFragment.java
@@ -0,0 +1,54 @@
+package com.davemorrissey.labs.subscaleview.test.viewpager;
+
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.davemorrissey.labs.subscaleview.ImageSource;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+import com.davemorrissey.labs.subscaleview.test.R.id;
+import com.davemorrissey.labs.subscaleview.test.R.layout;
+
+public class ViewPagerFragment extends Fragment {
+
+    private static final String BUNDLE_ASSET = "asset";
+
+    private String asset;
+
+    public ViewPagerFragment() {
+    }
+
+    public void setAsset(String asset) {
+        this.asset = asset;
+    }
+
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        View rootView = inflater.inflate(layout.view_pager_page, container, false);
+
+        if (savedInstanceState != null) {
+            if (asset == null && savedInstanceState.containsKey(BUNDLE_ASSET)) {
+                asset = savedInstanceState.getString(BUNDLE_ASSET);
+            }
+        }
+        if (asset != null) {
+            SubsamplingScaleImageView imageView = rootView.findViewById(id.imageView);
+            imageView.setImage(ImageSource.asset(asset));
+        }
+
+        return rootView;
+    }
+
+    @Override
+    public void onSaveInstanceState(@NonNull Bundle outState) {
+        super.onSaveInstanceState(outState);
+        View rootView = getView();
+        if (rootView != null) {
+            outState.putString(BUNDLE_ASSET, asset);
+        }
+    }
+
+}
diff --git a/sample/src/main/res/drawable-nodpi/button_standout_inactive.xml b/sample/src/main/res/drawable-nodpi/button_standout_inactive.xml
new file mode 100644
index 0000000..dfcefb4
--- /dev/null
+++ b/sample/src/main/res/drawable-nodpi/button_standout_inactive.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+	<solid android:color="#333333" />
+</shape>
diff --git a/sample/src/main/res/drawable-nodpi/button_standout_pressed.xml b/sample/src/main/res/drawable-nodpi/button_standout_pressed.xml
new file mode 100644
index 0000000..857646a
--- /dev/null
+++ b/sample/src/main/res/drawable-nodpi/button_standout_pressed.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+	<solid android:color="#0099CC" />
+</shape>
diff --git a/sample/src/main/res/drawable-nodpi/button_transparent_pressed.xml b/sample/src/main/res/drawable-nodpi/button_transparent_pressed.xml
new file mode 100644
index 0000000..e2ed965
--- /dev/null
+++ b/sample/src/main/res/drawable-nodpi/button_transparent_pressed.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+	<solid android:color="#770099cc" />
+</shape>
diff --git a/sample/src/main/res/drawable-nodpi/buttonstate_standout.xml b/sample/src/main/res/drawable-nodpi/buttonstate_standout.xml
new file mode 100644
index 0000000..71cfcd3
--- /dev/null
+++ b/sample/src/main/res/drawable-nodpi/buttonstate_standout.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+	<item android:state_focused="true" android:state_pressed="false"
+		android:drawable="@drawable/button_standout_pressed" />
+	<item android:state_focused="true" android:state_pressed="true"
+		android:drawable="@drawable/button_standout_pressed" />
+	<item android:state_focused="false" android:state_pressed="true"
+		android:drawable="@drawable/button_standout_pressed" />
+	<item android:drawable="@drawable/button_standout_inactive"/>
+</selector>
diff --git a/sample/src/main/res/drawable-nodpi/buttonstate_transparent.xml b/sample/src/main/res/drawable-nodpi/buttonstate_transparent.xml
new file mode 100644
index 0000000..8ca5594
--- /dev/null
+++ b/sample/src/main/res/drawable-nodpi/buttonstate_transparent.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_focused="true" android:state_pressed="false"
+          android:drawable="@drawable/button_transparent_pressed" />
+    <item android:state_focused="true" android:state_pressed="true"
+          android:drawable="@drawable/button_transparent_pressed" />
+    <item android:state_focused="false" android:state_pressed="true"
+          android:drawable="@drawable/button_transparent_pressed" />
+    <item android:drawable="@drawable/transparent"/>
+</selector>
diff --git a/sample/src/main/res/drawable-nodpi/pushpin_blue.png b/sample/src/main/res/drawable-nodpi/pushpin_blue.png
new file mode 100644
index 0000000..bb6d1ff
--- /dev/null
+++ b/sample/src/main/res/drawable-nodpi/pushpin_blue.png
Binary files differ
diff --git a/sample/src/main/res/drawable-nodpi/transparent.xml b/sample/src/main/res/drawable-nodpi/transparent.xml
new file mode 100644
index 0000000..f4f33d9
--- /dev/null
+++ b/sample/src/main/res/drawable-nodpi/transparent.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+	<solid android:color="#00000000" />
+</shape>
diff --git a/sample/src/main/res/drawable-xhdpi/next.png b/sample/src/main/res/drawable-xhdpi/next.png
new file mode 100644
index 0000000..7dc45c0
--- /dev/null
+++ b/sample/src/main/res/drawable-xhdpi/next.png
Binary files differ
diff --git a/sample/src/main/res/drawable-xhdpi/play.png b/sample/src/main/res/drawable-xhdpi/play.png
new file mode 100644
index 0000000..5112499
--- /dev/null
+++ b/sample/src/main/res/drawable-xhdpi/play.png
Binary files differ
diff --git a/sample/src/main/res/drawable-xhdpi/previous.png b/sample/src/main/res/drawable-xhdpi/previous.png
new file mode 100644
index 0000000..e97e910
--- /dev/null
+++ b/sample/src/main/res/drawable-xhdpi/previous.png
Binary files differ
diff --git a/sample/src/main/res/drawable-xhdpi/reset.png b/sample/src/main/res/drawable-xhdpi/reset.png
new file mode 100644
index 0000000..e1082da
--- /dev/null
+++ b/sample/src/main/res/drawable-xhdpi/reset.png
Binary files differ
diff --git a/sample/src/main/res/drawable-xhdpi/rotate.png b/sample/src/main/res/drawable-xhdpi/rotate.png
new file mode 100644
index 0000000..1ba064f
--- /dev/null
+++ b/sample/src/main/res/drawable-xhdpi/rotate.png
Binary files differ
diff --git a/sample/src/main/res/layout/animation_activity.xml b/sample/src/main/res/layout/animation_activity.xml
new file mode 100644
index 0000000..c8adca9
--- /dev/null
+++ b/sample/src/main/res/layout/animation_activity.xml
@@ -0,0 +1,24 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/fill">
+
+    <RelativeLayout style="@style/footer" android:id="@+id/footer">
+
+        <ImageView style="@style/previousButton" android:id="@+id/previous" android:contentDescription="@string/button.previous"/>
+
+        <ImageView style="@style/nextButton" android:id="@+id/next" android:contentDescription="@string/button.next"/>
+
+        <ImageView style="@style/footerButton"
+                android:id="@+id/play"
+                android:layout_toStartOf="@id/next"
+                android:src="@drawable/play"
+                android:contentDescription="@string/button.animate"/>
+
+        <TextView style="@style/footerNote"
+                android:id="@+id/note"
+                android:layout_toStartOf="@id/play"
+                android:layout_toEndOf="@id/previous"/>
+
+    </RelativeLayout>
+
+    <com.davemorrissey.labs.subscaleview.test.extension.views.PinView style="@style/mainPanel" android:id="@+id/imageView"/>
+
+</RelativeLayout>
diff --git a/sample/src/main/res/layout/extension_circle_fragment.xml b/sample/src/main/res/layout/extension_circle_fragment.xml
new file mode 100644
index 0000000..1ad2add
--- /dev/null
+++ b/sample/src/main/res/layout/extension_circle_fragment.xml
@@ -0,0 +1,19 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/fill">
+
+    <RelativeLayout style="@style/footer" android:id="@+id/footer">
+
+        <ImageView style="@style/previousButton" android:id="@+id/previous" android:contentDescription="@string/button.previous"/>
+
+        <ImageView style="@style/nextButton" android:id="@+id/next" android:contentDescription="@string/button.next"/>
+
+        <TextView style="@style/footerNote"
+                android:id="@+id/note"
+                android:text="@string/extension.p2.text"
+                android:layout_toStartOf="@id/next"
+                android:layout_toEndOf="@id/previous"/>
+
+    </RelativeLayout>
+
+    <com.davemorrissey.labs.subscaleview.test.extension.views.CircleView style="@style/mainPanel" android:id="@+id/imageView"/>
+
+</RelativeLayout>
diff --git a/sample/src/main/res/layout/extension_freehand_fragment.xml b/sample/src/main/res/layout/extension_freehand_fragment.xml
new file mode 100644
index 0000000..4dead6d
--- /dev/null
+++ b/sample/src/main/res/layout/extension_freehand_fragment.xml
@@ -0,0 +1,25 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/fill">
+
+    <RelativeLayout style="@style/footer" android:id="@+id/footer">
+
+        <ImageView style="@style/previousButton" android:id="@+id/previous" android:contentDescription="@string/button.previous"/>
+
+        <ImageView style="@style/nextButton" android:id="@+id/next" android:contentDescription="@string/button.next" android:visibility="invisible"/>
+
+        <ImageView style="@style/footerButton"
+                android:id="@+id/reset"
+                android:layout_toStartOf="@id/next"
+                android:src="@drawable/reset"
+                android:contentDescription="@string/button.reset"/>
+
+        <TextView style="@style/footerNote"
+                android:id="@+id/note"
+                android:text="@string/extension.p3.text"
+                android:layout_toStartOf="@id/reset"
+                android:layout_toEndOf="@id/previous"/>
+
+    </RelativeLayout>
+
+    <com.davemorrissey.labs.subscaleview.test.extension.views.FreehandView style="@style/mainPanel" android:id="@+id/imageView"/>
+
+</RelativeLayout>
diff --git a/sample/src/main/res/layout/extension_pin_fragment.xml b/sample/src/main/res/layout/extension_pin_fragment.xml
new file mode 100644
index 0000000..4b55e59
--- /dev/null
+++ b/sample/src/main/res/layout/extension_pin_fragment.xml
@@ -0,0 +1,19 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/fill">
+
+    <RelativeLayout style="@style/footer" android:id="@+id/footer">
+
+        <ImageView style="@style/previousButton" android:id="@+id/previous" android:contentDescription="@string/button.previous" android:visibility="invisible"/>
+
+        <ImageView style="@style/nextButton" android:id="@+id/next" android:contentDescription="@string/button.next"/>
+
+        <TextView style="@style/footerNote"
+                android:id="@+id/note"
+                android:text="@string/extension.p1.text"
+                android:layout_toStartOf="@id/next"
+                android:layout_toEndOf="@id/previous"/>
+
+    </RelativeLayout>
+
+    <com.davemorrissey.labs.subscaleview.test.extension.views.PinView style="@style/mainPanel" android:id="@+id/imageView"/>
+
+</RelativeLayout>
diff --git a/sample/src/main/res/layout/fragments_activity.xml b/sample/src/main/res/layout/fragments_activity.xml
new file mode 100644
index 0000000..5624f75
--- /dev/null
+++ b/sample/src/main/res/layout/fragments_activity.xml
@@ -0,0 +1,5 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/fill">
+
+    <FrameLayout android:id="@+id/frame" style="@style/fill"/>
+
+</RelativeLayout>
diff --git a/sample/src/main/res/layout/imagedisplay_large_fragment.xml b/sample/src/main/res/layout/imagedisplay_large_fragment.xml
new file mode 100644
index 0000000..442fc67
--- /dev/null
+++ b/sample/src/main/res/layout/imagedisplay_large_fragment.xml
@@ -0,0 +1,19 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/fill">
+
+    <RelativeLayout style="@style/footer" android:id="@+id/footer">
+
+        <ImageView style="@style/previousButton" android:id="@+id/previous" android:contentDescription="@string/button.previous" android:visibility="invisible"/>
+
+        <ImageView style="@style/nextButton" android:id="@+id/next" android:contentDescription="@string/button.next"/>
+
+        <TextView style="@style/footerNote"
+                android:id="@+id/note"
+                android:text="@string/display.p1.text"
+                android:layout_toStartOf="@id/next"
+                android:layout_toEndOf="@id/previous"/>
+
+    </RelativeLayout>
+
+    <com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView style="@style/mainPanel" android:id="@+id/imageView"/>
+
+</RelativeLayout>
diff --git a/sample/src/main/res/layout/imagedisplay_region_fragment.xml b/sample/src/main/res/layout/imagedisplay_region_fragment.xml
new file mode 100644
index 0000000..6c8b3d2
--- /dev/null
+++ b/sample/src/main/res/layout/imagedisplay_region_fragment.xml
@@ -0,0 +1,25 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/fill">
+
+    <RelativeLayout style="@style/footer" android:id="@+id/footer">
+
+        <ImageView style="@style/previousButton" android:id="@+id/previous" android:contentDescription="@string/button.previous"/>
+
+        <ImageView style="@style/nextButton" android:id="@+id/next" android:contentDescription="@string/button.next" android:visibility="invisible"/>
+
+        <ImageView style="@style/footerButton"
+                android:id="@+id/rotate"
+                android:layout_toStartOf="@id/next"
+                android:src="@drawable/rotate"
+                android:contentDescription="@string/button.rotate"/>
+
+        <TextView style="@style/footerNote"
+                android:id="@+id/note"
+                android:text="@string/display.p3.text"
+                android:layout_toStartOf="@id/rotate"
+                android:layout_toEndOf="@id/previous"/>
+
+    </RelativeLayout>
+
+    <com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView style="@style/mainPanel" android:id="@+id/imageView"/>
+
+</RelativeLayout>
diff --git a/sample/src/main/res/layout/imagedisplay_rotate_fragment.xml b/sample/src/main/res/layout/imagedisplay_rotate_fragment.xml
new file mode 100644
index 0000000..9dbf50a
--- /dev/null
+++ b/sample/src/main/res/layout/imagedisplay_rotate_fragment.xml
@@ -0,0 +1,25 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/fill">
+
+    <RelativeLayout style="@style/footer" android:id="@+id/footer">
+
+        <ImageView style="@style/previousButton" android:id="@+id/previous" android:contentDescription="@string/button.previous"/>
+
+        <ImageView style="@style/nextButton" android:id="@+id/next" android:contentDescription="@string/button.next"/>
+
+        <ImageView style="@style/footerButton"
+                android:id="@+id/rotate"
+                android:layout_toStartOf="@id/next"
+                android:src="@drawable/rotate"
+                android:contentDescription="@string/button.rotate"/>
+
+        <TextView style="@style/footerNote"
+                android:id="@+id/note"
+                android:text="@string/display.p2.text"
+                android:layout_toStartOf="@id/rotate"
+                android:layout_toEndOf="@id/previous"/>
+
+    </RelativeLayout>
+
+    <com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView style="@style/mainPanel" android:id="@+id/imageView"/>
+
+</RelativeLayout>
diff --git a/sample/src/main/res/layout/main.xml b/sample/src/main/res/layout/main.xml
new file mode 100644
index 0000000..5205b60
--- /dev/null
+++ b/sample/src/main/res/layout/main.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" style="@style/fill">
+
+    <LinearLayout android:orientation="vertical"
+                  android:layout_width="fill_parent"
+                  android:layout_height="wrap_content">
+
+        <LinearLayout
+                android:layout_width="300dp"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginTop="10dp"
+                android:layout_marginBottom="10dp"
+                android:orientation="vertical">
+
+            <View style="@style/indexDivider"/>
+            <TextView style="@style/indexLink" android:id="@+id/basicFeatures" android:text="@string/basic.link"/>
+            <View style="@style/indexDivider"/>
+            <TextView style="@style/indexLink" android:id="@+id/imageDisplay" android:text="@string/display.link"/>
+            <View style="@style/indexDivider"/>
+            <TextView style="@style/indexLink" android:id="@+id/eventHandling" android:text="@string/event.link"/>
+            <View style="@style/indexDivider"/>
+            <TextView style="@style/indexLink" android:id="@+id/advancedEventHandling" android:text="@string/advancedevent.link"/>
+            <View style="@style/indexDivider"/>
+            <TextView style="@style/indexLink" android:id="@+id/viewPagerGalleries" android:text="@string/pager.link"/>
+            <View style="@style/indexDivider"/>
+            <TextView style="@style/indexLink" android:id="@+id/animation" android:text="@string/animation.link"/>
+            <View style="@style/indexDivider"/>
+            <TextView style="@style/indexLink" android:id="@+id/extension" android:text="@string/extension.link"/>
+            <View style="@style/indexDivider"/>
+            <TextView style="@style/indexLink" android:id="@+id/configuration" android:text="@string/configuration.link"/>
+            <View style="@style/indexDivider"/>
+
+        </LinearLayout>
+
+        <Button
+                android:id="@+id/github"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_margin="10dp"
+                android:layout_gravity="center_horizontal"
+                android:paddingLeft="16dp"
+                android:paddingRight="16dp"
+                android:textSize="16sp"
+                android:text="@string/main.viewongithub"/>
+
+    </LinearLayout>
+</ScrollView>
diff --git a/sample/src/main/res/layout/pages_activity.xml b/sample/src/main/res/layout/pages_activity.xml
new file mode 100644
index 0000000..46014bb
--- /dev/null
+++ b/sample/src/main/res/layout/pages_activity.xml
@@ -0,0 +1,18 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/fill">
+
+    <RelativeLayout style="@style/footer" android:id="@+id/footer">
+
+        <ImageView style="@style/previousButton" android:id="@+id/previous" android:contentDescription="@string/button.previous"/>
+
+        <ImageView style="@style/nextButton" android:id="@+id/next" android:contentDescription="@string/button.next"/>
+
+        <TextView style="@style/footerNote"
+                android:id="@+id/note"
+                android:layout_toStartOf="@id/next"
+                android:layout_toEndOf="@id/previous"/>
+
+    </RelativeLayout>
+
+    <com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView style="@style/mainPanel" android:id="@+id/imageView"/>
+
+</RelativeLayout>
diff --git a/sample/src/main/res/layout/view_pager.xml b/sample/src/main/res/layout/view_pager.xml
new file mode 100644
index 0000000..6188097
--- /dev/null
+++ b/sample/src/main/res/layout/view_pager.xml
@@ -0,0 +1,20 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/fill">
+
+    <RelativeLayout style="@style/footer" android:id="@+id/footer">
+
+        <ImageView style="@style/previousButton" android:id="@+id/previous" android:contentDescription="@string/button.previous"/>
+
+        <ImageView style="@style/nextButton" android:id="@+id/next" android:contentDescription="@string/button.next"/>
+
+        <TextView style="@style/footerNote"
+                android:id="@+id/note"
+                android:layout_toStartOf="@id/next"
+                android:layout_toEndOf="@id/previous"/>
+
+    </RelativeLayout>
+
+    <android.support.v4.view.ViewPager style="@style/mainPanel" android:id="@+id/horizontal_pager" android:visibility="gone" />
+
+    <com.davemorrissey.labs.subscaleview.test.viewpager.VerticalViewPager style="@style/mainPanel" android:id="@+id/vertical_pager" android:visibility="gone"/>
+
+</RelativeLayout>
diff --git a/sample/src/main/res/layout/view_pager_page.xml b/sample/src/main/res/layout/view_pager_page.xml
new file mode 100644
index 0000000..0f1ede4
--- /dev/null
+++ b/sample/src/main/res/layout/view_pager_page.xml
@@ -0,0 +1,5 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/fill">
+
+    <com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView style="@style/fill" android:id="@+id/imageView"/>
+
+</RelativeLayout>
diff --git a/sample/src/main/res/mipmap-hdpi/ic_launcher.png b/sample/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100755
index 0000000..9033709
--- /dev/null
+++ b/sample/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/sample/src/main/res/mipmap-mdpi/ic_launcher.png b/sample/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100755
index 0000000..0678107
--- /dev/null
+++ b/sample/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/sample/src/main/res/mipmap-xhdpi/ic_launcher.png b/sample/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100755
index 0000000..d3ff849
--- /dev/null
+++ b/sample/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/sample/src/main/res/mipmap-xxhdpi/ic_launcher.png b/sample/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100755
index 0000000..02ea3d8
--- /dev/null
+++ b/sample/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100755
index 0000000..c70d438
--- /dev/null
+++ b/sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/sample/src/main/res/values/colors.xml b/sample/src/main/res/values/colors.xml
new file mode 100644
index 0000000..2f29f49
--- /dev/null
+++ b/sample/src/main/res/values/colors.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="background">#111111</color>
+    <color name="actionBarBackground">#282828</color>
+</resources>
diff --git a/sample/src/main/res/values/strings.xml b/sample/src/main/res/values/strings.xml
new file mode 100644
index 0000000..4908cac
--- /dev/null
+++ b/sample/src/main/res/values/strings.xml
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="app.name">SSIV Test App</string>
+
+    <string name="main.title">Subsampling Scale Image View</string>
+
+    <string name="main.viewongithub">View on GitHub</string>
+
+    <string name="button.animate">Animate</string>
+    <string name="button.next">Next</string>
+    <string name="button.previous">Previous</string>
+    <string name="button.rotate">Rotate</string>
+    <string name="button.reset">Reset</string>
+
+    <string name="basic.link">Basic features</string>
+    <string name="basic.title">Basic features</string>
+    <string name="basic.p1.subtitle">Pinch to zoom</string>
+    <string name="basic.p1.text">
+        Use a two finger pinch to zoom in and out. The zoom is centred on the pinch gesture, and you can pan at the same time.
+    </string>
+    <string name="basic.p2.subtitle">Quick scale</string>
+    <string name="basic.p2.text">
+        Double tap and swipe up or down to zoom in or out. The zoom is centred where you tapped.
+    </string>
+    <string name="basic.p3.subtitle">Drag</string>
+    <string name="basic.p3.text">Use one finger to drag the image around.</string>
+    <string name="basic.p4.subtitle">Fling</string>
+    <string name="basic.p4.text">
+        If you drag quickly and let go, fling momentum keeps the image moving.
+    </string>
+    <string name="basic.p5.subtitle">Double tap</string>
+    <string name="basic.p5.text">
+        Double tap the image to zoom in to that spot. Double tap again to zoom out.
+    </string>
+
+    <string name="display.link">Image display</string>
+    <string name="display.title">Image display</string>
+    <string name="display.p1.subtitle">Large images</string>
+    <string name="display.p1.text">
+        This image is 7,800 x 6,240 pixels. On most devices it will be subsampled, and higher quality tiles are loaded as you zoom in.
+    </string>
+    <string name="display.p2.subtitle">Rotation</string>
+    <string name="display.p2.text">
+        This image has been rotated 90 degrees. Tap the button to rotate it. EXIF rotation is supported for external files.
+    </string>
+    <string name="display.p3.subtitle">Display region</string>
+    <string name="display.p3.text">Set the region to display instead of the whole image.</string>
+
+    <string name="event.link">Event handling</string>
+    <string name="event.title">Event handling</string>
+    <string name="event.p1.subtitle">Simple events</string>
+    <string name="event.p1.text">
+        Touch handling by the image view doesn\'t prevent normal events from working.
+    </string>
+    <string name="event.p2.subtitle">OnClickListener</string>
+    <string name="event.p2.text">
+        This view has an OnClickListener. Tap once to activate the click.
+    </string>
+    <string name="event.p3.subtitle">OnLongClickListener</string>
+    <string name="event.p3.text">
+        This view has an OnLongClickListener. Press and hold to activate it.
+    </string>
+
+    <string name="advancedevent.link">Advanced event handling</string>
+    <string name="advancedevent.title">Advanced event handling</string>
+    <string name="advancedevent.p1.subtitle">Overriding gestures</string>
+    <string name="advancedevent.p1.text">Some gestures can be overridden with your own
+        GestureDetector without affecting the image view. This allows you to get the coordinates of
+        the event.
+    </string>
+    <string name="advancedevent.p2.subtitle">onSingleTapConfirmed</string>
+    <string name="advancedevent.p2.text">onSingleTapConfirmed has been overridden. Tap the image to
+        see coordinates.
+    </string>
+    <string name="advancedevent.p3.subtitle">onDoubleTap</string>
+    <string name="advancedevent.p3.text">onDoubleTap has been overridden. Tap the image to see
+        coordinates. This overrides the default zoom in behaviour.
+    </string>
+    <string name="advancedevent.p4.subtitle">onLongPress</string>
+    <string name="advancedevent.p4.text">onLongPress has been overridden. Press and hold the image
+        to see coordinates.
+    </string>
+    <string name="advancedevent.p5.subtitle">Other events</string>
+    <string name="advancedevent.p5.text">You can override any event you want, but customising swipe,
+        fling and zoom gestures will stop the view working normally.
+    </string>
+
+
+    <string name="pager.link">View pager galleries</string>
+    <string name="pager.title">View pager gallery</string>
+    <string name="pager.p1.subtitle">Horizontal</string>
+    <string name="pager.p1.text">
+        This gallery has two images in a ViewPager. Swipe to move to the
+        next image. If you\'re zoomed in on an image, you need to pan to the right of it, then swipe
+        again to activate the pager.
+    </string>
+    <string name="pager.p2.subtitle">Vertical</string>
+    <string name="pager.p2.text">
+        Vertical view pagers are also supported. Swipe up to move to the
+        next image. If you\'re zoomed in on an image, you need to pan to the bottom of it, then
+        swipe again to activate the pager.
+    </string>
+
+    <string name="animation.link">Animation</string>
+    <string name="animation.title">Animation</string>
+    <string name="animation.p1.subtitle">A demo</string>
+    <string name="animation.p1.text">
+        Tap the play button. The image will scale and zoom to a random point, shown by a marker.
+    </string>
+    <string name="animation.p2.subtitle">Limited pan</string>
+    <string name="animation.p2.text">
+        If the target point is near the edge of the image, it will be moved as near to the center as possible.
+    </string>
+    <string name="animation.p3.subtitle">Unlimited pan</string>
+    <string name="animation.p3.text">
+        With unlimited or center-limited pan, the target point can always be animated to the center.
+    </string>
+    <string name="animation.p4.subtitle">Customisation</string>
+    <string name="animation.p4.text">
+        Duration and easing are configurable. You can also make animations non-interruptible.
+    </string>
+
+    <string name="extension.link">Extension</string>
+    <string name="extension.title">Extension</string>
+    <string name="extension.p1.subtitle">Location pin</string>
+    <string name="extension.p1.text">
+        This view class extends the image view, and adds a pin anchored to a point on the image.
+    </string>
+    <string name="extension.p2.subtitle">Overlaid circle</string>
+    <string name="extension.p2.text">
+        A slightly more advanced example, this shows a circle that will
+        move and scale with the image. (Due to a limitation in Android, this circle may disappear
+        when it\'s larger than 2048px.)
+    </string>
+    <string name="extension.p3.subtitle">Freehand drawing</string>
+    <string name="extension.p3.text">
+        This subclass adds event detection. Draw a freehand line; it
+        will move with the image. (Due to a limitation in Android, your drawing may disappear when
+        it\'s larger than 2048px.)
+    </string>
+
+    <string name="configuration.link">Configuration</string>
+    <string name="configuration.title">Configuration</string>
+    <string name="configuration.p1.subtitle">Maximum scale</string>
+    <string name="configuration.p1.text">
+        The maximum scale has been set to 50dpi. You can zoom in until the image is very pixellated.
+    </string>
+    <string name="configuration.p2.subtitle">Minimum tile DPI</string>
+    <string name="configuration.p2.text">
+        The minimum tile DPI has been set to 50dpi, to reduce
+        memory usage. The next layer of tiles will not be loaded until the image is very pixellated.
+    </string>
+    <string name="configuration.p3.subtitle">Pan disabled</string>
+    <string name="configuration.p3.text">
+        Dragging has been disabled. You can only zoom in to the centre point.
+    </string>
+    <string name="configuration.p4.subtitle">Zoom disabled</string>
+    <string name="configuration.p4.text">
+        Zooming has been disabled. You can drag the image around.
+    </string>
+    <string name="configuration.p5.subtitle">Double tap style</string>
+    <string name="configuration.p5.text">
+        On double tap, the tapped point is now zoomed to the center of the screen instead of remaining in the same place.
+    </string>
+    <string name="configuration.p6.subtitle">Double tap style</string>
+    <string name="configuration.p6.text">On double tap, the zoom now happens immediately.</string>
+    <string name="configuration.p7.subtitle">Double tap scale</string>
+    <string name="configuration.p7.text">The double tap zoom scale has been set to 240dpi.</string>
+    <string name="configuration.p8.subtitle">Pan limit center</string>
+    <string name="configuration.p8.text">
+        The pan limit has been changed to PAN_LIMIT_CENTER. Panning stops when a corner reaches the centre of the screen.
+    </string>
+    <string name="configuration.p9.subtitle">Pan limit outside</string>
+    <string name="configuration.p9.text">
+        The pan limit has been changed to PAN_LIMIT_OUTSIDE. Panning stops when the image is just off screen.
+    </string>
+    <string name="configuration.p10.subtitle">Debug</string>
+    <string name="configuration.p10.text">
+        Debug has been enabled. This shows the tile boundaries and sizes.
+    </string>
+
+</resources>
\ No newline at end of file
diff --git a/sample/src/main/res/values/style.xml b/sample/src/main/res/values/style.xml
new file mode 100644
index 0000000..023db6e
--- /dev/null
+++ b/sample/src/main/res/values/style.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <style name="sampleTheme" parent="@android:style/Theme.Holo">
+        <item name="android:actionBarStyle">@style/sampleActionBar</item>
+        <item name="android:windowBackground">@color/background</item>
+    </style>
+
+    <style name="sampleActionBar" parent="@android:style/Widget.Holo.ActionBar">
+        <item name="android:background">@color/actionBarBackground</item>
+    </style>
+
+    <style name="indexDivider">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">1px</item>
+        <item name="android:background">#333333</item>
+    </style>
+
+    <style name="indexLink">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:background">@drawable/buttonstate_transparent</item>
+        <item name="android:gravity">center_horizontal</item>
+        <item name="android:padding">10dp</item>
+        <item name="android:textSize">18sp</item>
+    </style>
+
+    <style name="fill">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">match_parent</item>
+    </style>
+
+    <style name="mainPanel">
+        <item name="android:layout_alignParentTop">true</item>
+        <item name="android:layout_above">@+id/footer</item>
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">match_parent</item>
+    </style>
+
+    <style name="footer">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_alignParentBottom">true</item>
+        <item name="android:background">#333</item>
+    </style>
+
+    <style name="footerNote">
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_centerVertical">true</item>
+        <item name="android:padding">10dp</item>
+        <item name="android:textSize">14sp</item>
+        <item name="android:textColor">#FFFFFF</item>
+    </style>
+
+    <style name="footerButton">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_centerVertical">true</item>
+        <item name="android:background">@drawable/buttonstate_transparent</item>
+        <item name="android:paddingLeft">8dp</item>
+        <item name="android:paddingRight">8dp</item>
+        <item name="android:paddingTop">18dp</item>
+        <item name="android:paddingBottom">18dp</item>
+        <item name="android:src">@drawable/previous</item>
+    </style>
+
+    <style name="previousButton" parent="@style/footerButton">
+        <item name="android:layout_alignParentStart">true</item>
+        <item name="android:src">@drawable/previous</item>
+    </style>
+
+    <style name="nextButton" parent="@style/footerButton">
+        <item name="android:layout_alignParentEnd">true</item>
+        <item name="android:src">@drawable/next</item>
+    </style>
+
+</resources>
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..612d9e4
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,2 @@
+include ':library'
+include ':sample'
