不同的文字大小适用于不同的屏幕尺寸,使用什么比例因子?

时间:2015-02-07 14:05:58

标签: android

您好我根据不同的屏幕尺寸使用不同的文本。 像:

values-small: dimens.xml -> ?
values-normal: dimens.xml -> 10sp
values-large: dimens.xml -> ?
values-xlarge: dimens.xml -> ?

我想知道是否有一个公式可以根据小,大,xlarge设置正确的大小,而不是通过在不同的屏幕上测试来设置sp大小^^?

第二个问题:值是否正常,是不是“值”文件夹==值 - 正常?

第三个问题:当我宣布dimens.xml为small,normal和large时会发生什么,而且设备是XLARGE设备,它会使用来自values的dimens.xml吗?或者正常吗?或者下一个较小的值 - 大?

谢谢

3 个答案:

答案 0 :(得分:3)

  

我想知道是否有一个公式可以根据小,大,xlarge设置正确的大小,而不是通过在不同的屏幕上测试来设置sp大小

不是真的。许多应用程序根据屏幕大小完全不改变字体大小,就像大多数Web应用程序不会根据浏览器窗口大小更改字体大小一样。当然,我们当然欢迎您为不同的屏幕尺寸指定不同的<dimen>资源,包括用于文本的尺寸。没有什么可以阻止你使用像其他人建议的算法;只是明白没有真正的理由使用该算法。换句话说,平面设计师应该告诉你制作文字有多大,而不是计算器。

此外,-small-normal等广告系列不再使用,支持更灵活的-wNNNdp-hNNNdp和{{1桶。

  

isnt“values”folder == values-normal?

没有

假设您有-swNNNdpres/values-small/res/values/res/values-large/。进一步假设每个资源集定义了res/values-xlarge/维度资源,并在布局中使用它(例如,text_size)。 然后,@dimen/text_size设备将从-normal拉出,res/values-small/用于-small屏幕或更大。您的small版资源永远不会被使用。因此,典型模式没有res/values/,将res/values-small/资源放在-small中,并覆盖res/values/res/values-normal/和{中的默认值{1}}。

  

当我声明dimens.xml为small,normal和large时会发生什么,而设备是XLARGE设备会使用来自values的dimens.xml吗?或者正常吗?或者下一个较小的值 - 大?

它应该从res/values-large/拉出,因为这是合格资源集中最接近的匹配。

答案 1 :(得分:2)

这是大多数Android项目中支持各种屏幕尺寸的常见问题。

简而言之,您可以使用scalable DPscalable Font方法。

Android项目结构本身允许通过在dimens.xml文件中为支持的屏幕尺寸定义它们来指定不同的字体大小(SP)和边距值(DP)。但仍然存在的问题是 - 要使用什么价值? UX设计师通常仅为一组(例如360x640 DP屏幕尺寸)提供样式指南,并且不提供所有其他支持的屏幕尺寸。因此,对其他支持的屏幕尺寸使用正确的值的问题仍然没有答案。

一个好的解决方案(根据我的说法)是使用现成的dimens.xml文件的可缩放字典,类似于this库提供的文件字典。将这些xml文件添加到项目后,您只需要使用布局中的键,然后Android会自动使用各个目录中的字体/边距值。无论有没有这种方法,请参考here的视觉差异。

答案 2 :(得分:1)

我使用的比率 0.75:1:1.5:2 与DPI相同。它工作正常。