MathView
MathView 是第三方视图库,它可以帮助你更轻松地在Android应用程序上显示数学公式。 两个渲染引擎可用:MathJax 和 KaTeX。 支持Android版本 4.1 ( Jelly Bean ) 和更新版本。
设置
在 Android Studio 中,可以通过两种方式将 MathView 添加到项目中:从远程 Maven 存储库( jcenter )。
从本地. aar 文件中。
1从远程 Maven 存储库( jcenter ) 安装
添加 compile 'io.github.kexanie.library:MathView:0.0.6' 为你收费的模块 build.gradle 文件中的 dependencies dependencies。 例如:dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.0.0' compile 'io.github.kexanie.library:MathView:0.0.6'}
2从本地. aar-文件设置
你可以从 Bintray 下载最新版本的MathView。从本地. aar 文件导入 MODULE
单击 File -> New -> New Module ( 是,不是 import Module ) -> Import. JAR/.AAR Package ,并找出文件所在的位置。添加依赖项
单击 File -> Project Structure -> Dependencies ,然后单击加号 icon,选择 3. Module Dependency。用于 Eclipse 用户的
迁移到 Android Studio。
用法
除了将代码自动呈现为数学公式外,MathView的行为几乎与 TextView的行为是一样的。 请看一下这个教程,了解基本教程和快速参考。
小心应将公式括在 (...) 中,而不是用 $...$ 来包含 inline 公式。
你需要在Java代码中转义空格。引号等空格字符。
如果要使 MathView的高度实际为 wrap_content,请将视图扭曲为 NestedScrollView。
引擎
在移动环境中KaTeX比MathJax快,但是MathJax支持更多的特性,而且更漂亮。 选择适合你需要的东西。
在布局文件中定义 MathView
例如:
android:id="@+id/formula_one"android:layout_width="match_parent"android:layout_height="wrap_content"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}.$$"auto:engine="MathJax">
android:id="@+id/formula_two"android:layout_width="match_parent"android:layout_height="wrap_content"auto:engine="KaTeX">
从你的Activity 获取一个实例publicclassMainActivityextendsAppCompatActivity {
MathView formula_two;
String tex ="This come from string. You can insert inline formula:"+" (ax^2 + bx + c = 0) "+"or displayed formula: $$sum_{i=0}^n i^2 = frac{(n^2+n)(2n+1)}{6}$$";
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@OverrideprotectedvoidonResume() {
super.onResume();
formula_two = (MathView) findViewById(R.id.formula_two);
formula_two.setText(tex);
}
}
注意到 MatView.getText() 将返回原始的TeX代码( Java String )。
配置
我不是MathJax的专家。 我没有提供MathJax的预先配置版本,而是选择将另一个方法 config() ( 仅适用于 MathJax ) 添加到版本 0.0.5 中的MathView。 你可以用更复杂的配置来调整 MathJax。 例如要启用自动换行,可以调用MathView.config("MathJax.Hub.Config({n"+" CommonHTML: { linebreaks: { automatic: true } },n"+""HTML-CSS": { linebreaks: { automatic: true } },n"+" SVG: { linebreaks: { automatic: true } }n"+"});");
在 setText() 之前。
工作原理
MathView 继承自 Android WebView,并使用 javascript (。MathJax 或者 KaTeX ) 进行渲染。 另一个库调用块只是一个轻量级的Java模板引擎,用于将TeX代码填充到html文件中。 所以我们可以把它呈现出来。 它还是相当原始的但至少是功能上的。 检查代码以获得更多详细信息。
已知问题当使用MathJax呈现时,由于 WebView 中的MathJax Bug,某些字符是空白的( 像字符'b'黑板粗体字)。
并非所有TeX命令都支持 KaTeX,请检查这里链接以获得更详细的信息。
反馈
如果你有任何问题或者需要帮助,请不要犹豫创建一个问题票。