2

我正在编写一个具有自定义文本布局引擎的应用程序,为此我必须使用 Paint 类上的 .getTextBounds() 方法测量大量(数千个)字符串。

它确实有效。但在某些设备上,这种测量非常缓慢。

例如,测量 10,000 个 5-6 字符长的单词

  • 三星 Galaxy S2 手机(或三星 Galaxy 系列的任何其他类型的设备):1.5 秒
  • HTC Desire HD:约 90 秒。
  • 华硕变压器 TF300:~30 秒
  • 等等。

我已经完成了方法分析,我可以看到,在某些设备上,测量方法的本机 Skia 实现需要更长的时间。

在测量过程中我没有做任何花哨的事情,我的代码看起来像这样:

Paint paint = new Paint();
Rect bounds = new Rect();
paint.setTextSize(22.0f);

for (int i = 0; i < input.length; i++) {
    paint.getTextBounds(input[i], 0, input[i].length(), bounds);
}

测量文本尺寸时有什么需要注意的吗?制造商是否搞砸了与 ROM 中的字体缓存实现相关的内容?对此我能做些什么吗?

4

0 回答 0