setTextSize()能否与密度无关?

时间:2011-12-04 14:04:06

标签: android text canvas pixel

如果我要初始化一个Paint,并设置它的文本大小如下:

Paint = new Paint();
Paint.setAntiAlias(true);
Paint.setARGB(255, 255, 0, 0); 
Paint.setTextSize(screenWidth/100);

//screenWidth is the width of the screen in pixels given via display metrics.

然后像这样在画布上绘制文字:

String text = "Hello"
canvas.drawText(text, (screenWidth/13), (screenHeight/5), Paint);

无论屏幕指标如何,文本是否会在相同的相对位置显示相同的相对大小?我问,因为我只有一台设备而且我的多核机器上的仿真器运行得不好。

到目前为止,我一直在做的是简单地使用带有在背景上写入的文本的位图,但是我的内存使用量变得非常繁重,所以我希望减少加载的位图数量。

我的另一个选择是将文本保存为具有透明背景的位图,并将其覆盖在单个位图背景上。但这似乎只有生产力的一半,因为它实际上创建了1个位图,只是减少了存储的所有位图的总大小。我也不喜欢这个想法,因为我最终想要更多地控制对象的生命周期,这会降低效率。

此外,是否有任何方法可以向文本添加样式(例如复杂的字体和颜色模式,除了使用预制的Drawables),以便文本可以绘制到画布? (尽可能便宜)

1 个答案:

答案 0 :(得分:0)

NVM,Solved By整天逛逛我发现DP单元可以从res文件夹调用,并且会给出相当统一的文本位置。而且这种油漆不像我希望的那样定制友好。