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