Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中字体的物理大小(以点为单位)_Android_Text_Fonts_Size_Points - Fatal编程技术网

Android中字体的物理大小(以点为单位)

Android中字体的物理大小(以点为单位),android,text,fonts,size,points,Android,Text,Fonts,Size,Points,我有两个设备-HTC纹身和索尼爱立信Xperia X10。一个有145个新闻部,另一个有245个新闻部 当我以点为文本视图指定字体大小时,如下所示: textView.setTextSize(TypedValue.COMPLEX_UNIT_PT, 6.5f); 我在这两个设备上得到不同物理大小的文本。在245 DPI上,文本几乎不可读 现在,“pt”的大小应该是物理的。也就是说,在我的测试中,两个文本块应该有相同物理高度的字母。事实并非如此 这里有什么问题 谢谢你的帮助, Yuri.单位是点,

我有两个设备-HTC纹身和索尼爱立信Xperia X10。一个有145个新闻部,另一个有245个新闻部

当我以点为文本视图指定字体大小时,如下所示:

textView.setTextSize(TypedValue.COMPLEX_UNIT_PT, 6.5f);
我在这两个设备上得到不同物理大小的文本。在245 DPI上,文本几乎不可读

现在,“pt”的大小应该是物理的。也就是说,在我的测试中,两个文本块应该有相同物理高度的字母。事实并非如此

这里有什么问题

谢谢你的帮助,
Yuri.

单位是点,不会根据密度进行缩放。对于您想要的非文本
dip
(或
dp
),它们是与密度无关的像素。这些将根据密度进行缩放。对于文本,您需要
,它将根据密度和用户首选的字体大小进行缩放

这里有一些关于它的信息,也散布在Android文档的其他地方

更新:这里是对每个尺寸单位的描述,正如Yuri正确指出的那样,这确实表明
pt
在物理屏幕上应始终为1/72英寸。它似乎不是这样工作的,答案就是使用
dp
sp
-如果你想向用户公开类似点的内容,只需做一些数学运算(
dp
可以假设在160dpi屏幕上为1px,即1/160英寸)


事实上,只要底层设备给出正确的显示指标,点总是有效的

例如,我测试了五台设备:

NAME      OS    metrics.ydpi  REAL_DPI  DDPI  SD
XPERIA    1.6   159.49677     325       240   1.5
Liquid    1.6   263.8958      285       240   1.5
Tattoo    1.6   145.14067     match     120   0.75
Hero      1.5   179.29352     match     -     1.0
Galaxy    1.6   160.41878     180       160   1.0
可以看出,只有HTC纹身和HTC英雄为Android API提供了正确的显示信息

这就是为什么点在不同的设备上有不同的物理大小(但不是全部)


我发现粗略缩放字体/图像的唯一方法是假设所有内容都是160 DPI,并使用DisplayMetrics#scaledDensity-这是错误的,但我看不到任何其他方法。

根据文档:“点-基于屏幕的物理大小的1/72英寸。”无论密度如何。不管怎样。就像一毫米在任何显示器上都是一毫米一样。1/72英寸等于1/72英寸,无论需要多少像素。让我解释一下我的选择。点是许多应用程序的标准字体单位。用户不希望基于某些新的度量单位指定字体大小。分数是标准的和普通的。在您的电脑浏览器中,使用Microsoft Word、记事本和Mac应用程序。是的,文档读起来好像pt的物理尺寸应该始终相同,这有点误导。但dp和sp似乎是推荐的机组。1dp在160dpi屏幕上是1px(即1/160英寸),因此,如果您想显示与用户等效的点,只需进行简单的数学转换。其他方法可能是使用设备数据库,至少对于最受欢迎的。有人知道这是否在6年后效果更好吗?请参阅我关于点数的博客文章?。这加上下面的答案就是你需要知道的全部!