2014-05-02 5 views
9

Ich entwickle ein Android-Projekt, und ich möchte einige chemische Formel zu machen.Formel für die Chemie auf Android

Ich schrieb den folgenden Code und ich habe das folgende Ergebnis.

Ich erstelle eine benutzerdefinierte Zeichenfolge und zeige sie in einer Textansicht.

Aber meine Frage ist das: Ist das der beste Weg, dies zu tun? Und gibt es einen anderen Weg, damit umzugehen?

str = new SpannableString(Html.fromHtml("2H<sup>+</sup> + So<sub size = 2>4</sub><sup size = 2>2-</sup> --> H<sub size =2>2</sub>So<sub size = 2>4</sub>")); 
ss1.setSpan(new RelativeSizeSpan(0.6f), 2,3, 0); // set size 
ss1.setSpan(new RelativeSizeSpan(0.6f), 8,11, 0); // set size 
ss1.setSpan(new RelativeSizeSpan(0.6f), 17,18, 0); // set size 
ss1.setSpan(new RelativeSizeSpan(0.6f), 20,21, 0); // set size 
TempF.setText(ss1,TextView.BufferType.SPANNABLE); 

Example Chemical Formula

+1

Sie haben eine gute Lösung gefunden, die für viele chemische Formeln einfach zu implementieren ist. Unter Android hätten Sie spezielle benutzerdefinierte Schriftarten auf einem Canvas, LaTeX, Vektorgrafiken (über eine Bibliothek) und viele andere Möglichkeiten verwenden können, um das gleiche Ergebnis zu erzielen, aber ich mag Ihre Lösung am besten (vorausgesetzt, Sie haben keine anderen) besondere Anforderungen, die ich nicht berücksichtigt habe). –

+0

Danke! Große Antwort :) SpannableString spannableString = neuer SpannableString ( Html.fromHtml ("C H 14 N ")); spannableString.setSpan (neu RelativeSizeSpan (0.6f), 1, 3, 0); spannableString.setSpan (neu RelativeSizeSpan (0.6f), 4, 6, 0); spannableString.setSpan (neu RelativeSizeSpan (0.6f), 7, 8, 0); –

Antwort

4

Ich glaube nicht, dass es einen besseren Weg gibt.

Leider ignoriert Html.fromHtml()<font size="n"> Tags, so dass diese Spannen manuell hinzugefügt werden müssen, wie Sie getan haben.

0

Ich denke, Sie haben eine Lösung gefunden, die Ihnen passt. Vielleicht, wenn es eine Regel gibt, zu wissen, wann ein Symbol ein Tief- oder Hochgestelltes ist, oder die Spannengröße, die Sie verwenden müssen, können Sie eine Methode schreiben, um eine gegebene Formel als String zu analysieren und automatisch die formatierte HTML-Ausgabe bereitzustellen .

Um dies zu tun, und unter der Annahme, dass es bestimmte Regeln gibt, können Sie einen endlichen Automaten verwenden, der eine Textzeichenfolge zu der von Ihnen benötigten HTML-Ausgabe "kompiliert".

Wenn Sie nach so etwas suchen, lassen Sie es mich wissen und wir können in der Lage sein, es auszuarbeiten.

Eine andere Option wäre zu sehen, wenn Sie (im Internet) eine Schriftart finden, die Ihre Bedürfnisse erfüllt (oder vielleicht Ihre eigenen bauen). Sie können eine Schriftart importieren, indem Sie die Schriftartdatei in den Ordner "Assets" einfügen und sie dort in der Quelle festlegen.

0

Ich hatte ein ähnliches Problem zu lösen. Ich habe eine einfache Bibliothek erstellt, indem ich WebView erweitert und JavaScript im Hintergrund verwendet habe. https://github.com/RanaRanvijaySingh/EquationView

String strChem = "Chemistry: \\(\\ce{CO2 + C -> 2 CO}\\)"; 
EquationView equationViewChem = findViewById(R.id.equationViewChem); 
equationViewChem.setText(strChem); 

In Ihrem Layout-Datei:

<com.rana.equationview.EquationView 
android:id="@+id/equationViewChem" 
android:layout_width="match_parent" 
android:layout_height="wrap_content"/> 

enter image description here

hoffe, das hilft jemand.

Verwandte Themen