简评:今天介绍下 Android 中国际货币格式化的一个小小知识点。

目前为止,货币格式化最简单的方式是调用 NumberFormat.getCurrencyInstance() 获得 NumberFormat 实例来把数字格式化为货币格式的字符串(当然也可以把字符串转换成数字)。可以根据当前设备的位置来获取 java.util.Currency 实例再以此进行货币的格式化。

但如果我们的应用只接受特定的几种货币,那这种随着用户设备位置而修改货币格式就不是一个好的做法。

你可能会说「这简单啊,那就在国内默认显示人民币,其他国家就显示美元嘛」。

嗯,你很有想法。。。

这里就要讲到这篇文章的重点了。

假设你给美国地区展示的是 $1,那他们会默认这是 1 美元,这没问题。

但世界上还有超过二十个国家和地区的本地货币也叫 dollar ($),比如加拿大、澳大利亚和新西兰。这时候如果你还是展示 $1,那这些国家的用户就会默认这是指他们的货币,这就会造成误解,让用户觉得你们的收费不对。

因此,如果当前用户是在加拿大的,而商品价格需要为美元,那么在进行格式化时还需要明确符号,以表明显示的是美元而不是加元。

下面是 Kotlin 代码的一个例子:

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

textView1.text = formatCurrency(1f, CURRENCY_US_DOLLARS, LANGUAGE_ENGLISH, COUNTRY_US)

textView2.text = formatCurrency(1f, CURRENCY_US_DOLLARS, LANGUAGE_ENGLISH, COUNTRY_CANADA)

textView3.text = formatCurrency(1f, CURRENCY_US_DOLLARS, LANGUAGE_ENGLISH, COUNTRY_AUSTRALIA)

}

private fun formatCurrency(amount: Float, currency: String, language: String, country: String) =

currencyInLocale(currency, language, country).format(amount)

private fun currencyInLocale(

currencyCode: String,

language: String,

country: String = "",

variant: String = ""): NumberFormat =

Locale(language, country, variant).let {

NumberFormat.getCurrencyInstance(it).apply {

currency = Currency.getInstance(currencyCode)

}

}

companion object {

private const val CURRENCY_US_DOLLARS: String = "USD"

private const val LANGUAGE_ENGLISH: String = "EN"

private const val COUNTRY_US: String = "US"

private const val COUNTRY_CANADA: String = "CA"

private const val COUNTRY_AUSTRALIA: String = "AU"

}

}

展示效果,从上到下分别是美国、加拿大和澳大利亚:

这里对于加拿大显示 US$,而澳大利亚显示 USD。虽然两者都能理解,但能符合各语言环境的具体情况当然还是更好的。

虽然这可能只是一个小知识点,但我个人觉得知道了还是蛮有用的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

android 货币格式化,Android 国际货币格式化的示例代码相关推荐

  1. java无线投屏代码,Android PC投屏功能实现的示例代码

    本文介绍了Android PC投屏功能实现的示例代码,分享给大家,具体如下: 效果预览 投屏效果预览 简单说明: 使用Android MediaProjection Api来完成视频的截图 通过Web ...

  2. android播放mp3功能,Android Studio实现简单音乐播放功能的示例代码

    项目要求 基于Broadcast,BroadcastReceiver等与广播相关的知识实现简单的音乐播放功能,包括音乐的播放.暂停.切换.进度选择.音量调整. 设计效果 (进度条时间刷新功能还没有实现 ...

  3. android 谷歌定位demo,android实现定位与目的地的导航示例代码

    今天无意中看到技术大神利用百度地图定位并实现目的地导航的Demo.觉得很不错,就转载过来一起分享,下面我们看实现效果: 进入后首先会得到当前位置,在地图上显示出来,在输入框中输入目的地后,就会在地图上 ...

  4. android进度条课设报告,Android开发之进度条ProgressBar的示例代码

    说明 ProgressBar一般用于显示一个过程,例如数据加载过程,文件下载进度,音乐播放进度等. 默认形式ProgressBar 默认方式下,ProgressBar显示为圆形进度,循环转圈,不显示具 ...

  5. android studio 反编译修改versioncode,在android studio 中修改versioncode 跟versionname(示例代码)...

    在android studio 中修改versioncode 和versionname 最写了一个新版的软件准备发布到应用平台上,但是versioncode  和versionname的值一直修改不成 ...

  6. android 进度条 代码,Android 进度条使用详解及示例代码

    在这里,总结一下loading进度条的使用简单总结一下. 一.说起进度条,必须说说条形进度条,经常都会使用到嘛,特别是下载文件进度等等,还有像腾讯QQ安装进度条一样,有个进度总给人良好的用户体验. 先 ...

  7. android百度地图例子,使用百度地图API进行Android地图应用开发(Eclipse)(示例代码)...

    随着基于位置的服务的兴起,地图类App呈现爆发趋势.随着而来的是地图供应商开放大量的API.供开发人员开发基于PC或者移动端的应用程序. 如今我们研究使用百度地图SDK进行Android项目的开发. ...

  8. android+xposed+实例,Android Studio 上第一个 Xposed 模块(示例代码)

    环境: 已root手机一枚 Android Studio一枚 官方文档参考 这里 . 准备工作 我们需要事先下载一个 Xposed installer 安装在手机上,用来管理所有的模块. 安装完成后打 ...

  9. Android 6种触摸事件,Android 的触摸事件详解及示例代码

    由于触摸(Touch)而触发的事件 Android的事件:onClick, onScroll,onFling等等,都是由许多个Touch组成的.其中Touch的第一个状态肯定是ACTION_DOWN, ...

  10. android根据拍摄url获取格式,Android如何通过URI获取文件路径示例代码

    前言 最近在工作的过程中,遇到不同 Android 版本下 URI 采用不同方式来获取文件路径的问题. 因为需求的原因,要求拍照上传或者从相册中选择图片上传,而且图片是需要经过压缩的,大小不能超过2M ...

最新文章

  1. 血亏 1.5 亿、华为断供、Linux 之父怒删代码,2020 IT 大事记盘点
  2. --- struts数据源配置(详解)---
  3. 详解凸优化、贝叶斯、MCMC、GCN
  4. MySQL(root用户)密码重置
  5. 【报告分享】2022年零售行业消费趋势新主张-京东+罗兰贝格.pdf(附下载链接)...
  6. 吴恩达机器学习作业5.偏差和方差
  7. UCan下午茶杭州站:突破困惑,为大数据商业化变现探寻出路
  8. 在线运行java代码并得到结果_Java代码是如何运行的?
  9. 电商扣减库存_竞争激烈的电商市场,小型仓储外包服务解决了中小电商的后顾之忧...
  10. JSONP - 从理论到实践
  11. 跳槽 ,你跳的是工资,还是阶层?
  12. 重标极差(R/S)分析法计算Hurst指数(Python)
  13. 用python批量下载网易云音乐_网易云音乐歌单/排行榜批量下载——Python实现
  14. TCP可以从我们的视听感知中借鉴些什么
  15. 闲时整理3--Android调用指纹验证
  16. 青箬笠,绿蓑衣,斜风细雨不须归
  17. hello,这里是cathy的技术blog~
  18. Mapgis to shp数据转换
  19. 论文笔记:Editing-Based SQL Query Generation for Cross-Domain Context-Dependent Questions
  20. 什么是permit-inside功能

热门文章

  1. 随机过程中的独立与不相关
  2. 电磁场与电磁波 复习(3-4)
  3. 单链表的从小到大排序
  4. 前端该如何评估开发时间
  5. node.js ajax语法
  6. 数据库中删除重复数据并保留一条。
  7. 大数据运维HBase
  8. 爱普生Me330 打印机改装连供系统计划
  9. Google数字图书馆
  10. 汤因比的《历史研究》所感之一