2016-08-08 4 views
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); 
      } 
     } 
    } 
} 

答えて

0

あなたは、このプロジェクトのようにコードを強調構文を使用することができます。https://github.com/vmihalachi/turbo-editor

(MainActivity.javaに "エディタ" クラスを参照してください)

を表示する部分はですが、すべてのテキストを一度にハイライト表示する必要はありません。

(テキストにエラーがある場合、私は謝罪P.Sは、私が悪い英語を知っている)