diff options
author | Paul Gardiner <paul.gardiner@artifex.com> | 2014-01-06 12:24:27 +0000 |
---|---|---|
committer | Paul Gardiner <paul.gardiner@artifex.com> | 2014-01-06 12:24:27 +0000 |
commit | f6fe26922653b45519d406bd07840719cef1d979 (patch) | |
tree | e4171ddec980749f36654e6b2099c09ddcdf5669 /platform/android/src/com/artifex/mupdfdemo/Stepper.java | |
parent | 2a1d51fe1459908625764dd3f1f367cb64a471be (diff) | |
download | mupdf-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.java | 42 |
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(); + } + }); + + } + } + } +} |