在移动应用开发中,货币转换工具是常见的需求之一,本文将详细介绍如何使用Android Studio实现一个人民币转换功能,支持人民币与美元、欧元等主流货币的双向转换,并实时更新汇率数据。
项目环境搭建
确保已安装Android Studio并创建一个新的Empty Activity项目,在build.gradle文件中添加网络请求依赖库,用于获取实时汇率数据:
implementation 'com.android.volley:volley:1.2.1' implementation 'com.google.code.gson:gson:2.8.9'
核心功能实现
汇率数据获取
创建一个CurrencyAPI类,使用Volley请求中国银行外汇牌价接口:
public void fetchExchangeRates(Context context, final VolleyCallback callback) {
String url = "https://api.exchangerate-api.com/v4/latest/CNY";
RequestQueue queue = Volley.newRequestQueue(context);
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
response -> {
try {
JSONObject rates = response.getJSONObject("rates");
double usdRate = rates.getDouble("USD");
double eurRate = rates.getDouble("EUR");
callback.onSuccess(usdRate, eurRate);
} catch (JSONException e) {
e.printStackTrace();
}
}, error -> callback.onError(error));
queue.add(request);
}
转换逻辑实现
在MainActivity中实现转换逻辑:
public void convertCurrency() {
String inputAmount = etAmount.getText().toString();
if (input.isEmpty()) return;
double amount = Double.parseDouble(inputAmount);
double result = 0;
if (rbCNYToUSD.isChecked()) {
result = amount * usdRate;
} else if (rbCNYToEUR.isChecked()) {
result = amount * eurRate;
} else if (rbUSDtoCNY.isChecked()) {
result = amount / usdRate;
} else if (rbEURtoCNY.isChecked()) {
result = amount / eurRate;
}
tvResult.setText(String.format("%.2f&qu
ot;, result));
}
UI布局设计
在activity_main.xml中设计包含以下元素的界面:
- 输入框(
EditText)用于输入金额 - 单选按钮组(
RadioGroup)选择转换方向 - 结果显示文本(
TextView) - 转换按钮(
Button)
优化与扩展
- 数据缓存:使用
SharedPreferences缓存汇率数据,避免频繁网络请求 - 错误处理:添加网络异常提示和输入验证
- 多币种支持:扩展API支持更多货币类型
- 历史记录:使用SQLite数据库保存转换历史
通过以上步骤,即可实现一个功能完整的人民币转换应用,该应用不仅具备基础的转换功能,还通过实时汇率数据确保了准确性,为用户提供了便捷的货币换算体验,开发者可根据实际需求进一步优化界面设计和功能扩展。