android 货币格式化,Android 国际货币格式化的示例代码
简评:今天介绍下 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 国际货币格式化的示例代码相关推荐
- java无线投屏代码,Android PC投屏功能实现的示例代码
本文介绍了Android PC投屏功能实现的示例代码,分享给大家,具体如下: 效果预览 投屏效果预览 简单说明: 使用Android MediaProjection Api来完成视频的截图 通过Web ...
- android播放mp3功能,Android Studio实现简单音乐播放功能的示例代码
项目要求 基于Broadcast,BroadcastReceiver等与广播相关的知识实现简单的音乐播放功能,包括音乐的播放.暂停.切换.进度选择.音量调整. 设计效果 (进度条时间刷新功能还没有实现 ...
- android 谷歌定位demo,android实现定位与目的地的导航示例代码
今天无意中看到技术大神利用百度地图定位并实现目的地导航的Demo.觉得很不错,就转载过来一起分享,下面我们看实现效果: 进入后首先会得到当前位置,在地图上显示出来,在输入框中输入目的地后,就会在地图上 ...
- android进度条课设报告,Android开发之进度条ProgressBar的示例代码
说明 ProgressBar一般用于显示一个过程,例如数据加载过程,文件下载进度,音乐播放进度等. 默认形式ProgressBar 默认方式下,ProgressBar显示为圆形进度,循环转圈,不显示具 ...
- android studio 反编译修改versioncode,在android studio 中修改versioncode 跟versionname(示例代码)...
在android studio 中修改versioncode 和versionname 最写了一个新版的软件准备发布到应用平台上,但是versioncode 和versionname的值一直修改不成 ...
- android 进度条 代码,Android 进度条使用详解及示例代码
在这里,总结一下loading进度条的使用简单总结一下. 一.说起进度条,必须说说条形进度条,经常都会使用到嘛,特别是下载文件进度等等,还有像腾讯QQ安装进度条一样,有个进度总给人良好的用户体验. 先 ...
- android百度地图例子,使用百度地图API进行Android地图应用开发(Eclipse)(示例代码)...
随着基于位置的服务的兴起,地图类App呈现爆发趋势.随着而来的是地图供应商开放大量的API.供开发人员开发基于PC或者移动端的应用程序. 如今我们研究使用百度地图SDK进行Android项目的开发. ...
- android+xposed+实例,Android Studio 上第一个 Xposed 模块(示例代码)
环境: 已root手机一枚 Android Studio一枚 官方文档参考 这里 . 准备工作 我们需要事先下载一个 Xposed installer 安装在手机上,用来管理所有的模块. 安装完成后打 ...
- Android 6种触摸事件,Android 的触摸事件详解及示例代码
由于触摸(Touch)而触发的事件 Android的事件:onClick, onScroll,onFling等等,都是由许多个Touch组成的.其中Touch的第一个状态肯定是ACTION_DOWN, ...
- android根据拍摄url获取格式,Android如何通过URI获取文件路径示例代码
前言 最近在工作的过程中,遇到不同 Android 版本下 URI 采用不同方式来获取文件路径的问题. 因为需求的原因,要求拍照上传或者从相册中选择图片上传,而且图片是需要经过压缩的,大小不能超过2M ...
最新文章
- 血亏 1.5 亿、华为断供、Linux 之父怒删代码,2020 IT 大事记盘点
- --- struts数据源配置(详解)---
- 详解凸优化、贝叶斯、MCMC、GCN
- MySQL(root用户)密码重置
- 【报告分享】2022年零售行业消费趋势新主张-京东+罗兰贝格.pdf(附下载链接)...
- 吴恩达机器学习作业5.偏差和方差
- UCan下午茶杭州站:突破困惑,为大数据商业化变现探寻出路
- 在线运行java代码并得到结果_Java代码是如何运行的?
- 电商扣减库存_竞争激烈的电商市场,小型仓储外包服务解决了中小电商的后顾之忧...
- JSONP - 从理论到实践
- 跳槽 ,你跳的是工资,还是阶层?
- 重标极差(R/S)分析法计算Hurst指数(Python)
- 用python批量下载网易云音乐_网易云音乐歌单/排行榜批量下载——Python实现
- TCP可以从我们的视听感知中借鉴些什么
- 闲时整理3--Android调用指纹验证
- 青箬笠,绿蓑衣,斜风细雨不须归
- hello,这里是cathy的技术blog~
- Mapgis to shp数据转换
- 论文笔记:Editing-Based SQL Query Generation for Cross-Domain Context-Dependent Questions
- 什么是permit-inside功能