Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.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 - Fatal编程技术网

Android 计量单位的处理

Android 计量单位的处理,android,Android,每个国家都使用自己的测量单位,例如美国人用F来测量温度,而加拿大和大多数欧洲国家用C来测量温度。同样的方法也适用于测量重量、距离等。 我在应用程序中将度量单位定义为 <string-array name="measure_units"> <item>lb</item> <item>oz</item> <item>cwt</item> <item>ft</item&

每个国家都使用自己的测量单位,例如美国人用F来测量温度,而加拿大和大多数欧洲国家用C来测量温度。同样的方法也适用于测量重量、距离等。 我在应用程序中将度量单位定义为

<string-array name="measure_units">
    <item>lb</item>
    <item>oz</item>
    <item>cwt</item>
    <item>ft</item>
    <item>yd</item>

磅
奥兹
cwt
英尺
yd
对于默认语言环境,然后对于法国,我定义如下

<string-array name="measure_units">
    <item>kg</item>
    <item>ml</item>
    <item>tn</item>
    <item>dm</item>
    <item>m</item>     

公斤
毫升
总氮
dm
M

然而,到目前为止,很好地定义了每个国家的价值,这是一项巨大的工作。所以我想介绍2-4个基本的度量系统,并且只为它们指定值,但是如何在Android上实现它呢?操作系统中是否嵌入了测量系统映射?如果没有这样的功能,你怎么处理这个问题呢?

所以这种事情是应用程序本地化的一部分。一般来说,规则是-在应用程序内部使用一个系统(通常是公制的,但任何东西都可以)。仅在显示之前或输入数据之后转换为本地单位,切勿以内部格式以外的任何格式存储数据

您可能可以找到一个库来为您完成这项工作,但它并没有内置到Android或Java中。通常情况下,虽然您没有将每种语言映射到长度、温度等,但您只是按照您的建议进行操作—构建两个链接选项,并将区域设置映射到一组特定的选项。如果您选择公制作为默认值,则只需对2或3个国家/地区进行覆盖-几乎所有人都使用公制。

我有一个建议

首先以国际单位存储值。(距离以米为单位,重量以千克为单位,温度以摄氏度为单位等)。然后使用一些方法将国际单位转换为其他单位。如果需要非国际单位,请使用这些方法获取转换后的值。您可以使用if语句或开关来相应地获取值

例如

if(/*international unit ?*/){
    Log.D("International unit : ", temperature + "C");
}else{
    Log.D("Non - International unit : ", getTemperatureInFahrenheit(temperature) + "F");
}

float getTemperatureInFahrenheit(float celsius){
    return ((celsius * 9 / 5.0) + 32)
}

这些单位系统被称为公制(表示“国际”)和英制(表示“非国际”)。我的用例更简单,我不做任何计算,我的测量系统只是用于表示目的。假设某人正在写日记,今天我在美国跑了一英里,在法国跑了1.5公里。然而,我的用户并不免费输入,他/她只是填写一些表格,选择预定义的活动,并将数字数据与伴随的单位放在一起。我想我们不能给用户一个选项,让他们填写自己的单位系统,然后直接使用它。它也允许使用混合系统。我的建议是只保存公制格式的值。仅在将帝国转换为度量以及将度量转换为帝国时才需要计算。我认为在演示之前,您必须格式化字符串。谢谢@ArtooDetoo提供您的信息。我也会这么做的。只要使用一个“比例因子”,即:1公里=0.621371192英里(将公里乘以这个“神奇数字”,你就完成了)。我想他需要两种方式,1公里=0.621371192英里,1英里=1.609344公里。因为他计划让用户在填写表单中选择单位,并以不同的语言以不同的单位显示。