diff options
author | Thomas <tschneider.ac@gmail.com> | 2023-01-16 14:35:14 +0100 |
---|---|---|
committer | Thomas <tschneider.ac@gmail.com> | 2023-01-16 14:35:14 +0100 |
commit | 25ad71080e261de9b418341c8e3c0f21fff6b405 (patch) | |
tree | 51ba32f5ef6286ee00a4ace2c9b5a50f95a9cd06 /mathjaxandroid/src/main | |
parent | 458463088350ee148e711841a52174edc06c7b9a (diff) |
improvementsmaths
Diffstat (limited to 'mathjaxandroid/src/main')
-rw-r--r-- | mathjaxandroid/src/main/java/de/timfreiheit/mathjax/android/MathJaxView.java | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/mathjaxandroid/src/main/java/de/timfreiheit/mathjax/android/MathJaxView.java b/mathjaxandroid/src/main/java/de/timfreiheit/mathjax/android/MathJaxView.java index b474d6d8c..401f2d661 100644 --- a/mathjaxandroid/src/main/java/de/timfreiheit/mathjax/android/MathJaxView.java +++ b/mathjaxandroid/src/main/java/de/timfreiheit/mathjax/android/MathJaxView.java @@ -9,13 +9,17 @@ import android.os.Handler; import android.text.TextUtils; import android.util.AttributeSet; import android.view.Gravity; +import android.view.MotionEvent; import android.view.View; +import android.view.ViewConfiguration; import android.view.ViewGroup; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.FrameLayout; +import java.util.concurrent.atomic.AtomicReference; + /** * Containerview for an WebView which renders LaTex using MathJax @@ -148,6 +152,32 @@ public class MathJaxView extends FrameLayout { mWebView.setVerticalScrollBarEnabled(verticalScrollbarsEnabled); mWebView.setHorizontalScrollBarEnabled(horizontalScrollbarsEnabled); mWebView.setBackgroundColor(0); + mWebView.getSettings().setLoadWithOverviewMode(true); + float touchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop(); + final boolean[] scrollFlag = {true}; + AtomicReference<Float> downX = new AtomicReference<>((float) 0); + AtomicReference<Float> downY = new AtomicReference<>((float) 0); + mWebView.setOnTouchListener((View v, MotionEvent event) -> { + if (!scrollFlag[0] && event.getY() < getHeight() / 2) { + + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + downX.set(event.getX()); + downY.set(event.getY()); + break; + case MotionEvent.ACTION_MOVE: + if (Math.abs(event.getY() - downY.get()) < touchSlop && Math.abs(event.getX() - downX.get()) > touchSlop) { + getParent().requestDisallowInterceptTouchEvent(true); + scrollFlag[0] = true; + } + break; + } + } + if (event.getAction() == MotionEvent.ACTION_UP) + scrollFlag[0] = false; + + return false; + }); } /** |