例如 有 字节数组内容是 : 123 0xff0xff 456 oxffoxff 789 用 0xff0xff 作为 分割符 ,分割后放在字符串数组中 例如 : str[0]="123" str[1]="456" str[2]="789"
解决方案 »
- 布局问题
- 当手机处于待机状态下(屏幕没光+已锁屏),比如长按菜单键或返回键,怎么打开一个应用程序
- 找了一圈,请教一下START_STICKY
- Android GPS小程序,真机上不工作....
- 开机,怎么知道GSM搜到网络了?
- Andriod模拟机运行时显示很大怎样调整
- 原来说错了:右边两个按钮并排靠右,左边一个按钮填满其他空间,有代码和图片
- 新手求助,霓虹灯问题
- 如何判断从应用列表下的应用已经打开过一次 (点击送android开发视频)
- 安卓推送消息Eclipse导入Androidpn-client项目出现错误,求问怎么解决,刚接触Android推送,希望可以帮忙解决~
- getSystemService出错,不知道该怎么改,大家帮帮忙吧~
- 自定义View显示超出屏幕怎么办?
* 根据要求分割字符串
*/
public static String[] getLineStrs(String content, Paint paint, float width, float textSize) {
paint.setTextSize(textSize);//Note1:测量的工具首先需要定义单位
int index = 0;
int start = 0;
int end = 0;
float textLength = paint.measureText(content);
int lineNum = (int) Math.ceil(1.5*textLength / width) ;//Note2:计算行数因为判断的不准确,所以增加余量1.5倍,最后处理
String[] mSplitTextParts = new String[lineNum];
for (int i = 0; i <= content.length(); i++) {
end = i;
float measureLength = paint.measureText(content, start, end);//Note3:[start,end)范围的字符串
if (measureLength >= width) {
mSplitTextParts[index] = content.substring(start, end);//Note4:[start,end)范围的字符串
start = end;
index++;
}
if (end == content.length()) {
mSplitTextParts[index] = content.substring(start, end);
return Arrays.copyOf(mSplitTextParts, index);//Note5:因为行数判断的不准确,所以需要清除掉未赋值的null值字符串
}
}
return null; 猜测分割不准的原因是:中英文混杂。可能是半角全角的问题。
测试后发现:
1, 全英文状态下,半角全角计算的标准行数(未经过1.5倍的余量修正)都ok。
2, 全中文状态下,半角全角计算的标准行数(未经过1.5倍的余量修正)都ok。
3, 在中英文混杂状态下,计算的标准行数比实际截取的行数要大。在这里存疑。