您好我根据不同的屏幕尺寸使用不同的文本。 像:
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吗?或者正常吗?或者下一个较小的值 - 大?
谢谢
答案 0 :(得分:3)
我想知道是否有一个公式可以根据小,大,xlarge设置正确的大小,而不是通过在不同的屏幕上测试来设置sp大小
不是真的。许多应用程序根据屏幕大小完全不改变字体大小,就像大多数Web应用程序不会根据浏览器窗口大小更改字体大小一样。当然,我们当然欢迎您为不同的屏幕尺寸指定不同的<dimen>
资源,包括用于文本的尺寸。没有什么可以阻止你使用像其他人建议的算法;只是明白没有真正的理由使用该算法。换句话说,平面设计师应该告诉你制作文字有多大,而不是计算器。
此外,-small
,-normal
等广告系列不再使用,支持更灵活的-wNNNdp
,-hNNNdp
和{{1桶。
isnt“values”folder == values-normal?
没有
假设您有-swNNNdp
,res/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 DP和scalable Font方法。
Android项目结构本身允许通过在dimens.xml文件中为支持的屏幕尺寸定义它们来指定不同的字体大小(SP)和边距值(DP)。但仍然存在的问题是 - 要使用什么价值? UX设计师通常仅为一组(例如360x640 DP屏幕尺寸)提供样式指南,并且不提供所有其他支持的屏幕尺寸。因此,对其他支持的屏幕尺寸使用正确的值的问题仍然没有答案。
一个好的解决方案(根据我的说法)是使用现成的dimens.xml文件的可缩放字典,类似于this库提供的文件字典。将这些xml文件添加到项目后,您只需要使用布局中的键,然后Android会自动使用各个目录中的字体/边距值。无论有没有这种方法,请参考here的视觉差异。
答案 2 :(得分:1)
我使用的比率 0.75:1:1.5:2 与DPI相同。它工作正常。