我需要知道当我增加paint.getTextSize()
n倍时文本的宽度如何变化。我以为这是成比例的,但第一次测试表明它不是。我得到了如下的结果,其中
-
1号-
Paint.setTextSize(float)
设置的文本大小 -
2号-用
Paint.measureText(String)
测量文本宽度1;1.0 2;1.0 3;2.0 4;2.0 5;3.0 6;3.0 7;4.0 8;4.0 9;5.0 10;5.0 11;6.0 12;7.0 13;7.0 14;8.0 15;8.0 16;9.0 17;9.0 18;10.0 19;10.0 20;11.0 21;11.0 22;12.0 23;13.0 24;13.0 25;14.0 26;14.0 27;15.0 28;15.0 29;16.0 30;16.0 31;17.0 32;17.0 33;18.0 34;19.0 35;19.0 36;20.0 37;20.0 38;21.0 39;21.0 40;22.0 41;22.0 42;23.0 43;23.0 44;24.0 45;24.0 46;25.0 47;26.0 48;26.0 49;27.0 50;27.0 51;28.0 52;28.0 53;29.0
是否有可能计算文本宽度在改变文本大小n
次后会如何变化?
我不想每次改变大小时都使用Paint.measureText(String)
方法,因为这对性能不利。
提前感谢!
参见在渲染到布局之前获取文本视图的高度。也许它会更快地测量文本。下面是一个关于高度的例子:
public static int getHeight(TextView t) {
int widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(screenWidth(t.getContext()), View.MeasureSpec.AT_MOST);
int heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
t.measure(widthMeasureSpec, heightMeasureSpec);
return t.getMeasuredHeight();
}
public static int screenWidth(Context context)
{
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
return display.getWidth();
}
你也可以试着估计一个变化的公式。