summaryrefslogtreecommitdiff
path: root/platform/android/src/com/artifex/mupdfdemo/Stepper.java
diff options
context:
space:
mode:
authorPaul Gardiner <paul.gardiner@artifex.com>2014-01-06 12:24:27 +0000
committerPaul Gardiner <paul.gardiner@artifex.com>2014-01-06 12:24:27 +0000
commitf6fe26922653b45519d406bd07840719cef1d979 (patch)
treee4171ddec980749f36654e6b2099c09ddcdf5669 /platform/android/src/com/artifex/mupdfdemo/Stepper.java
parent2a1d51fe1459908625764dd3f1f367cb64a471be (diff)
downloadmupdf-f6fe26922653b45519d406bd07840719cef1d979.tar.xz
Android: for scroll steps, use postOnAnimation when available
Using postOnAnimation in place of post noticably improves scroll smoothness. Also avoid posting multiple runnables unnecessarily.
Diffstat (limited to 'platform/android/src/com/artifex/mupdfdemo/Stepper.java')
-rw-r--r--platform/android/src/com/artifex/mupdfdemo/Stepper.java42
1 files changed, 42 insertions, 0 deletions
diff --git a/platform/android/src/com/artifex/mupdfdemo/Stepper.java b/platform/android/src/com/artifex/mupdfdemo/Stepper.java
new file mode 100644
index 00000000..d22240ef
--- /dev/null
+++ b/platform/android/src/com/artifex/mupdfdemo/Stepper.java
@@ -0,0 +1,42 @@
+package com.artifex.mupdfdemo;
+
+import android.annotation.SuppressLint;
+import android.os.Build;
+import android.view.View;
+
+public class Stepper {
+ protected final View mPoster;
+ protected final Runnable mTask;
+ protected boolean mPending;
+
+ public Stepper(View v, Runnable r) {
+ mPoster = v;
+ mTask = r;
+ mPending = false;
+ }
+
+ @SuppressLint("NewApi")
+ public void prod() {
+ if (!mPending) {
+ mPending = true;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+ mPoster.postOnAnimation(new Runnable() {
+ @Override
+ public void run() {
+ mPending = false;
+ mTask.run();
+ }
+ });
+ } else {
+ mPoster.post(new Runnable() {
+ @Override
+ public void run() {
+ mPending = false;
+ mTask.run();
+ }
+ });
+
+ }
+ }
+ }
+}