我正在开发一个应用程序,它希望以厘米 (cm) 或英寸 (") 为单位显示长度。有没有办法从区域设置中选择正确的单位?无论如何我也会放入一个选项,以便用户可以覆盖区域设置。
美国、利比里亚和缅甸应使用英制单位和世界其他地区的普通单位。一种方法是将此逻辑放入我自己的类中,但如果可用,我更喜欢使用任何内置逻辑。有什么指点吗?
最佳答案
最后我选择了以下解决方案。
public class UnitLocale {
public static UnitLocale Imperial = new UnitLocale();
public static UnitLocale Metric = new UnitLocale();
public static UnitLocale getDefault() {
return getFrom(Locale.getDefault());
}
public static UnitLocale getFrom(Locale locale) {
String countryCode = locale.getCountry();
if ("US".equals(countryCode)) return Imperial; // USA
if ("LR".equals(countryCode)) return Imperial; // Liberia
if ("MM".equals(countryCode)) return Imperial; // Myanmar
return Metric;
}
}
例如这样使用它。
if (UnitLocale.getDefault() == UnitLocale.Imperial) convertToimperial();
如果还需要转换方法,最好将它们添加到 UnitLocale 的子类中。我只需要检测是否使用英制单位并将其发送到服务器。
在 java 对象上使用 int
的性能提升非常小,并且使代码更难阅读。在 java 中比较两个引用在速度上与比较两个 ints
相当。同样使用对象允许我们向 UnitLocale
类或子类(例如 convertToMetric 等)添加方法。
如果您愿意,也可以使用枚举来代替。
关于android - 使用区域设置来检测是否使用英制单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4898237/