From 907f97cef441244241ecfc2bc4fc57a76fc2c4a1 Mon Sep 17 00:00:00 2001 From: duy Date: Mon, 1 Jul 2019 00:40:54 +0700 Subject: [PATCH 1/2] "Disable touch event" attr --- .gitignore | 2 + .idea/.name | 1 - .idea/caches/build_file_checksums.ser | Bin 0 -> 583 bytes .idea/caches/gradle_models.ser | Bin 0 -> 66757 bytes .idea/gradle.xml | 4 + .idea/modules.xml | 4 +- .idea/vcs.xml | 6 - MathView/MathView-MathView.iml | 106 +++++++++------- MathView/MathView.iml | 94 -------------- MathView/build.gradle | 1 - .../io/github/kexanie/library/MathView.java | 31 +++-- MathView/src/main/res/values/attrs.xml | 2 + app/app.iml | 116 ++++++++++++------ app/build.gradle | 1 - app/src/main/res/layout/activity_main.xml | 29 ++--- build.gradle | 12 +- MathViewTest.iml => github-MathView.iml | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 +- 18 files changed, 199 insertions(+), 216 deletions(-) delete mode 100644 .idea/.name create mode 100644 .idea/caches/build_file_checksums.ser create mode 100644 .idea/caches/gradle_models.ser delete mode 100644 .idea/vcs.xml delete mode 100644 MathView/MathView.iml rename MathViewTest.iml => github-MathView.iml (71%) diff --git a/.gitignore b/.gitignore index 9c4de582..9572d414 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ /local.properties /.idea/workspace.xml /.idea/libraries +/.idea/vcs.xml +/.idea/codeStyles .DS_Store /build /captures diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index d3cb6d9b..00000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -MathViewTest \ No newline at end of file diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser new file mode 100644 index 0000000000000000000000000000000000000000..dc49f5ff106806259b2ce2c9ca2f75d1f580cb22 GIT binary patch literal 583 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 diff --git a/.idea/modules.xml b/.idea/modules.xml index b1c9c413..0cb29122 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,9 +2,9 @@ - - + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 6564d52d..00000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/MathView/MathView-MathView.iml b/MathView/MathView-MathView.iml index 1e8fc3cf..128a6ac6 100644 --- a/MathView/MathView-MathView.iml +++ b/MathView/MathView-MathView.iml @@ -1,5 +1,5 @@ - + @@ -9,92 +9,114 @@ - - - + + + - - + + - + - - + + - + + - + + + + + + + + + + + + + + + - + - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + - + + - + + - - - - - + + + + \ No newline at end of file diff --git a/MathView/MathView.iml b/MathView/MathView.iml deleted file mode 100644 index ab410b28..00000000 --- a/MathView/MathView.iml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/MathView/build.gradle b/MathView/build.gradle index 69bcf311..9366b4ad 100644 --- a/MathView/build.gradle +++ b/MathView/build.gradle @@ -6,7 +6,6 @@ version = '0.0.6' android { compileSdkVersion 23 - buildToolsVersion "23.0.1" defaultConfig { minSdkVersion 14 diff --git a/MathView/src/main/java/io/github/kexanie/library/MathView.java b/MathView/src/main/java/io/github/kexanie/library/MathView.java index 14e1759d..16465f86 100644 --- a/MathView/src/main/java/io/github/kexanie/library/MathView.java +++ b/MathView/src/main/java/io/github/kexanie/library/MathView.java @@ -4,9 +4,7 @@ import android.content.res.TypedArray; import android.graphics.Color; import android.util.AttributeSet; -import android.util.Log; import android.view.MotionEvent; -import android.view.View; import android.webkit.WebSettings; import android.webkit.WebView; @@ -18,6 +16,8 @@ public class MathView extends WebView { private String mText; private String mConfig; private int mEngine; + private boolean mDarkTextColor = true; + private boolean mDisableTouchEvent; public MathView(Context context, AttributeSet attrs) { super(context, attrs); @@ -25,34 +25,40 @@ public MathView(Context context, AttributeSet attrs) { getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); setBackgroundColor(Color.TRANSPARENT); - TypedArray mTypeArray = context.getTheme().obtainStyledAttributes( + TypedArray typeArray = context.getTheme().obtainStyledAttributes( attrs, R.styleable.MathView, 0, 0 ); try { // the order of execution of setEngine() and setText() matters - setEngine(mTypeArray.getInteger(R.styleable.MathView_engine, 0)); - setText(mTypeArray.getString(R.styleable.MathView_text)); + setDisableTouchEvent(typeArray.getBoolean(R.styleable.MathView_disableTouchEvent, true)); + setEngine(typeArray.getInteger(R.styleable.MathView_engine, 0)); + setText(typeArray.getString(R.styleable.MathView_text)); } finally { - mTypeArray.recycle(); + typeArray.recycle(); } } // disable touch event on MathView @Override public boolean onTouchEvent(MotionEvent event) { - return false; + return mDisableTouchEvent; } + private Chunk getChunk() { String TEMPLATE_KATEX = "katex"; String TEMPLATE_MATHJAX = "mathjax"; String template = TEMPLATE_KATEX; AndroidTemplates loader = new AndroidTemplates(getContext()); switch (mEngine) { - case Engine.KATEX: template = TEMPLATE_KATEX; break; - case Engine.MATHJAX: template = TEMPLATE_MATHJAX; break; + case Engine.KATEX: + template = TEMPLATE_KATEX; + break; + case Engine.MATHJAX: + template = TEMPLATE_MATHJAX; + break; } return new Theme(loader).makeChunk(template); @@ -73,6 +79,10 @@ public String getText() { return mText; } + public void setDisableTouchEvent(boolean disableTouchEvent) { + this.mDisableTouchEvent = disableTouchEvent; + } + /** * Tweak the configuration of MathJax. * The `config` string is a call statement for MathJax.Hub.Config(). @@ -109,7 +119,8 @@ public void setEngine(int engine) { mEngine = Engine.MATHJAX; break; } - default: mEngine = Engine.KATEX; + default: + mEngine = Engine.KATEX; } } diff --git a/MathView/src/main/res/values/attrs.xml b/MathView/src/main/res/values/attrs.xml index ba8c1940..cff8ce97 100644 --- a/MathView/src/main/res/values/attrs.xml +++ b/MathView/src/main/res/values/attrs.xml @@ -6,5 +6,7 @@ + + \ No newline at end of file diff --git a/app/app.iml b/app/app.iml index 6b7b009d..9193583a 100644 --- a/app/app.iml +++ b/app/app.iml @@ -1,5 +1,5 @@ - + @@ -9,88 +9,130 @@ - - - + + + - - + + - + - - + + - + + - + + + + + + + + + + + + + + + - + + + + + + + + - - - - - - - - + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + - + + + + + + - - - - - - + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 57b8683b..8931cef8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.application' android { compileSdkVersion 23 - buildToolsVersion "23.0.1" defaultConfig { applicationId "io.github.kexanie.mathviewtest" diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 88cd7b40..c45ea02f 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,57 +1,52 @@ + tools:context=".MainActivity"> + android:textStyle="bold" /> - + auto:text="When \\(a \\ne 0\\), there are two solutions to \\(ax^2 + bx + c = 0\\) + and they are $$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$" /> + android:textStyle="bold" /> - + auto:engine="KaTeX" /> + android:textStyle="bold" /> - + auto:engine="MathJax" /> diff --git a/build.gradle b/build.gradle index 74f3e089..44cba15a 100644 --- a/build.gradle +++ b/build.gradle @@ -3,11 +3,15 @@ buildscript { repositories { jcenter() + maven { + url 'https://maven.google.com/' + name 'Google' + } } dependencies { - classpath 'com.android.tools.build:gradle:1.3.0' + classpath 'com.android.tools.build:gradle:3.4.1' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2' - classpath "com.github.dcendents:android-maven-gradle-plugin:1.3" + classpath "com.github.dcendents:android-maven-gradle-plugin:2.1" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -17,5 +21,9 @@ buildscript { allprojects { repositories { jcenter() + maven { + url 'https://maven.google.com/' + name 'Google' + } } } diff --git a/MathViewTest.iml b/github-MathView.iml similarity index 71% rename from MathViewTest.iml rename to github-MathView.iml index fd0e4e6f..3dcc6114 100644 --- a/MathViewTest.iml +++ b/github-MathView.iml @@ -1,5 +1,5 @@ - + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 660251df..6d312869 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Sep 18 16:25:15 CST 2015 +#Mon Jul 01 00:32:31 ICT 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip From 7b20125c992ef4646de03bf5b3308da6fbdcefde Mon Sep 17 00:00:00 2001 From: duy Date: Mon, 1 Jul 2019 00:48:08 +0700 Subject: [PATCH 2/2] Dark/Light theme (only support KaTex) --- .../src/main/assets/themes/lightkatex.chtml | 19 +++++++++++ .../src/main/assets/themes/lightstyle.css | 7 ++++ MathView/src/main/assets/themes/style.css | 1 + .../io/github/kexanie/library/MathView.java | 33 +++++++++++-------- app/src/main/res/layout/activity_main.xml | 20 +++++++++++ 5 files changed, 67 insertions(+), 13 deletions(-) create mode 100644 MathView/src/main/assets/themes/lightkatex.chtml create mode 100644 MathView/src/main/assets/themes/lightstyle.css diff --git a/MathView/src/main/assets/themes/lightkatex.chtml b/MathView/src/main/assets/themes/lightkatex.chtml new file mode 100644 index 00000000..3465f784 --- /dev/null +++ b/MathView/src/main/assets/themes/lightkatex.chtml @@ -0,0 +1,19 @@ + + + + + Auto-render test + + + + + + + {$formula} + + + \ No newline at end of file diff --git a/MathView/src/main/assets/themes/lightstyle.css b/MathView/src/main/assets/themes/lightstyle.css new file mode 100644 index 00000000..6ab6d2fc --- /dev/null +++ b/MathView/src/main/assets/themes/lightstyle.css @@ -0,0 +1,7 @@ +body { + margin: 0; + -webkit-touch-callout: none!important; + -webkit-user-select: none!important; + user-select: none!important; + color: white; +} \ No newline at end of file diff --git a/MathView/src/main/assets/themes/style.css b/MathView/src/main/assets/themes/style.css index effcedbd..b04ac1cf 100644 --- a/MathView/src/main/assets/themes/style.css +++ b/MathView/src/main/assets/themes/style.css @@ -3,4 +3,5 @@ body { -webkit-touch-callout: none!important; -webkit-user-select: none!important; user-select: none!important; + color: black; } \ No newline at end of file diff --git a/MathView/src/main/java/io/github/kexanie/library/MathView.java b/MathView/src/main/java/io/github/kexanie/library/MathView.java index 16465f86..74e2eec7 100644 --- a/MathView/src/main/java/io/github/kexanie/library/MathView.java +++ b/MathView/src/main/java/io/github/kexanie/library/MathView.java @@ -33,6 +33,7 @@ public MathView(Context context, AttributeSet attrs) { try { // the order of execution of setEngine() and setText() matters setDisableTouchEvent(typeArray.getBoolean(R.styleable.MathView_disableTouchEvent, true)); + setDarkTextColor(typeArray.getBoolean(R.styleable.MathView_darkTextColor, true)); setEngine(typeArray.getInteger(R.styleable.MathView_engine, 0)); setText(typeArray.getString(R.styleable.MathView_text)); } finally { @@ -48,7 +49,7 @@ public boolean onTouchEvent(MotionEvent event) { private Chunk getChunk() { - String TEMPLATE_KATEX = "katex"; + String TEMPLATE_KATEX = (mDarkTextColor ? "" : "light") + "katex"; String TEMPLATE_MATHJAX = "mathjax"; String template = TEMPLATE_KATEX; AndroidTemplates loader = new AndroidTemplates(getContext()); @@ -64,6 +65,10 @@ private Chunk getChunk() { return new Theme(loader).makeChunk(template); } + public String getText() { + return mText; + } + public void setText(String text) { mText = text; Chunk chunk = getChunk(); @@ -75,27 +80,28 @@ public void setText(String text) { this.loadDataWithBaseURL(null, chunk.toString(), "text/html", "utf-8", "about:blank"); } - public String getText() { - return mText; - } - public void setDisableTouchEvent(boolean disableTouchEvent) { this.mDisableTouchEvent = disableTouchEvent; } + public void setDarkTextColor(boolean darkTextColor) { + this.mDarkTextColor = darkTextColor; + } + /** * Tweak the configuration of MathJax. * The `config` string is a call statement for MathJax.Hub.Config(). * For example, to enable auto line breaking, you can call: * config.("MathJax.Hub.Config({ - * CommonHTML: { linebreaks: { automatic: true } }, - * "HTML-CSS": { linebreaks: { automatic: true } }, - * SVG: { linebreaks: { automatic: true } } - * });"); - * + * CommonHTML: { linebreaks: { automatic: true } }, + * "HTML-CSS": { linebreaks: { automatic: true } }, + * SVG: { linebreaks: { automatic: true } } + * });"); + *

* This method should be call BEFORE setText() and AFTER setEngine(). * PLEASE PAY ATTENTION THAT THIS METHOD IS FOR MATHJAX ONLY. - * @param config + * + * @param config */ public void config(String config) { if (mEngine == Engine.MATHJAX) { @@ -105,9 +111,10 @@ public void config(String config) { /** * Set the js engine used for rendering the formulas. - * @param engine must be one of the constants in class Engine * - * This method should be call BEFORE setText(). + * @param engine must be one of the constants in class Engine + *

+ * This method should be call BEFORE setText(). */ public void setEngine(int engine) { switch (engine) { diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index c45ea02f..e1757f8c 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -49,4 +49,24 @@ android:layout_height="wrap_content" auto:engine="MathJax" /> + + + + + + +