通过SpannableString来给特殊的字符加特别的颜色。
主要的函数内容如下
private void initData() {
AssetManager am = getAssets();//得到Assets对象
InputStream in = null;
try {
in = am.open("test/english.txt");//打开assets目录下面的文件并赋值给InputStream对象
} catch (IOException e2) {
e2.printStackTrace();
}
String result = "";
long size = 0;
try {
size = in.available();
} catch (IOException e1) {
e1.printStackTrace();
}
byte[] buffer = new byte[(int) size];
try {
in.read(buffer);
} catch (IOException e) {
e.printStackTrace();
}
result = EncodingUtils.getString(buffer, "UTF-8");//字符转换,默认使用UTF-8
SpannableString ss = new SpannableString(result);
int length = result.length();//此字符串数
int i = 0;
char ch;
int start = 0, end = 0;
boolean bSpecial = false;
while (length > 0)
{
ch = result.charAt(i);
if (ch == '[') {
bSpecial = true;
start = i;//记录限定字符的开始位置
}
if (ch == ']' && bSpecial) {
end = i;//记录限定字符的结束位置
//给限定字符之间的字符着色
ss.setSpan(new ForegroundColorSpan(Color.RED), start+1, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
bSpecial = false;
start = 0;
end = 0;
}
length--;
i++;
}
tv.setText(ss);//显示
}