1
私はAndroidのコードエディタを開発していますが、構文の強調表示を適用すると非常に遅くなります。ここでEditTextを最適化するSyntax Highlighting(Spannable)
は私のコードです:
protected void onCreate(Bundle savedInstanceState) {
scriptEditor.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
applySyntax(s);
}
};
}
public void applySyntax(Spannable spannable) {
matchz = WORDPat.matcher(spannable);
while (matchz.find()) {
Integer color = null;
if (StringKeyword.contains(matchz.group())) {
color = Integer.valueOf(keyColor);
type = "keyword";
}
if (StringKeyword2.contains(matchz.group())) {
color = Integer.valueOf(keyColor2);
type = "keyword";
}
if (StringKeyword3.contains(matchz.group())) {
color = Integer.valueOf(keyColor3);
type = "keyword";
}
if (color != null) {
spannable.setSpan(new ForegroundColorSpan(color.intValue()), matchz.start(), matchz.end(), 0);
color = null;
} else {
spannable.setSpan(new ForegroundColorSpan(Color.WHITE), matchz.start(), matchz.end(), 0);
}
}
}
}