Android 國際貨幣格式化的示例代碼
簡評(píng):今天介紹下 Android 中國際貨幣格式化的一個(gè)小小知識(shí)點(diǎn)。
目前為止,貨幣格式化最簡單的方式是調(diào)用 NumberFormat.getCurrencyInstance() 獲得 NumberFormat 實(shí)例來把數(shù)字格式化為貨幣格式的字符串(當(dāng)然也可以把字符串轉(zhuǎn)換成數(shù)字)。可以根據(jù)當(dāng)前設(shè)備的位置來獲取 java.util.Currency 實(shí)例再以此進(jìn)行貨幣的格式化。
但如果我們的應(yīng)用只接受特定的幾種貨幣,那這種隨著用戶設(shè)備位置而修改貨幣格式就不是一個(gè)好的做法。
你可能會(huì)說「這簡單啊,那就在國內(nèi)默認(rèn)顯示人民幣,其他國家就顯示美元嘛」。
嗯,你很有想法。。。
這里就要講到這篇文章的重點(diǎn)了。
假設(shè)你給美國地區(qū)展示的是 $1,那他們會(huì)默認(rèn)這是 1 美元,這沒問題。
但世界上還有超過二十個(gè)國家和地區(qū)的本地貨幣也叫 dollar ($),比如加拿大、澳大利亞和新西蘭。這時(shí)候如果你還是展示 $1,那這些國家的用戶就會(huì)默認(rèn)這是指他們的貨幣,這就會(huì)造成誤解,讓用戶覺得你們的收費(fèi)不對(duì)。
因此,如果當(dāng)前用戶是在加拿大的,而商品價(jià)格需要為美元,那么在進(jìn)行格式化時(shí)還需要明確符號(hào),以表明顯示的是美元而不是加元。
下面是 Kotlin 代碼的一個(gè)例子:
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" } }
展示效果,從上到下分別是美國、加拿大和澳大利亞:
這里對(duì)于加拿大顯示 US$,而澳大利亞顯示 USD。雖然兩者都能理解,但能符合各語言環(huán)境的具體情況當(dāng)然還是更好的。
雖然這可能只是一個(gè)小知識(shí)點(diǎn),但我個(gè)人覺得知道了還是蠻有用的。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- AndroidStudio修改Code Style來格式化自定義標(biāo)簽的xml文件方式
- 解決Android Studio 格式化 Format代碼快捷鍵問題
- 解決Android Studio xml 格式化不自動(dòng)換行的問題
- Android Studio實(shí)現(xiàn)格式化XML代碼順序
- AndroidStudio 設(shè)置格式化斷行寬度教程
- Android Studio 3.5格式化布局代碼時(shí)錯(cuò)位、錯(cuò)亂bug的解決
- Android studio kotlin代碼格式化操作
- 解決Android Studio 格式化快捷鍵和QQ 鎖鍵盤快捷鍵沖突問題
- Android中使用 AutoCompleteTextView 實(shí)現(xiàn)手機(jī)號(hào)格式化附帶清空歷史的操作
- Android實(shí)現(xiàn)的數(shù)字格式化用法示例
- Android 優(yōu)雅的實(shí)現(xiàn)通用格式化編輯
相關(guān)文章
Android Listview上下拉動(dòng)刷新tab滑動(dòng)切換功能
這篇文章主要介紹了Android Listview上下拉動(dòng)刷新tab滑動(dòng)切換功能的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-04-04Android多點(diǎn)觸控實(shí)現(xiàn)圖片自由縮放
這篇文章主要為大家詳細(xì)介紹了Android多點(diǎn)觸控實(shí)現(xiàn)圖片自由縮放,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12Android使用JobScheduler定期推送本地通知實(shí)例代碼
本篇文章主要介紹了Android使用JobScheduler定期推送本地通知實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Android編程實(shí)現(xiàn)自定義分享列表ACTION_SEND功能的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)自定義分享列表ACTION_SEND功能的方法,結(jié)合實(shí)例形式詳細(xì)分析了自定義分享列表功能的步驟與具體操作技巧,需要的朋友可以參考下2017-02-02Android進(jìn)階NestedScroll嵌套滑動(dòng)機(jī)制實(shí)現(xiàn)吸頂效果詳解
這篇文章主要為大家介紹了Android進(jìn)階NestedScroll嵌套滑動(dòng)機(jī)制實(shí)現(xiàn)吸頂效果詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01Android用HandlerThread模擬AsyncTask功能(ThreadTask)
本文主要講用HandlerThread模擬AsyncTask功能,這里提供實(shí)例代碼以便參考,有需要的小伙伴可以參考下2016-07-07Android Metro菜單實(shí)現(xiàn)思路及代碼
在安卓平臺(tái)上實(shí)現(xiàn)一下Metro菜單效果,之前有介紹過了,相信大家對(duì)此不會(huì)陌生了吧,感興趣的朋友可以了解下哈2013-06-06