文章目录

  • 前言
  • 一、效果展示
  • 二、代码
    • 主代码
  • 总结

前言

速度转换工具的开发与实现。


一、效果展示


二、代码

准备工作和样式布局与我开发的另一个小工具(长度转换工具)所用一致,详情请看我上一篇文章。
链接: Android开发实用小工具二——长度转换工具

主代码

SpeedConversionActivity.java :

public class SpeedConversionActivity extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemSelectedListener {// 定义下拉列表需要显示的单位名称private static final String[] nameArray = {"米/秒", "千米/小时", "千米/秒", "海里/小时", "英里/小时", "英寸/秒","英尺/秒", "光速", "马赫"};// 定义下拉列表需要显示的单位数组private static final String[] unitArray = {"m/s", "km/h", "km/s", "kn", "mph", "ips","fps", "c", "Ma"};private Spinner sp_select1;private Spinner sp_select2;TextView tv_value1;TextView tv_unit1;TextView tv_value2;TextView tv_unit2;private List<Button> buttonList = new ArrayList<>();ImageButton iv_del;// 单位一private String unit1 = "米/秒";// 单位二private String unit2 = "千米/小时";// 数值一private String value1 = "0";// 数值二private String value2 = "0";// 临时数值private BigDecimal tempValue;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_value_conversion);// 获取控件,并添加点击事件findViewById(R.id.iv_back).setOnClickListener(this);sp_select1 = findViewById(R.id.sp_select1);sp_select2 = findViewById(R.id.sp_select2);tv_value1 = findViewById(R.id.tv_value1);tv_unit1 = findViewById(R.id.tv_unit1);tv_value2 = findViewById(R.id.tv_value2);tv_unit2 = findViewById(R.id.tv_unit2);buttonList.add(findViewById(R.id.btn_0));buttonList.add(findViewById(R.id.btn_1));buttonList.add(findViewById(R.id.btn_2));buttonList.add(findViewById(R.id.btn_3));buttonList.add(findViewById(R.id.btn_4));buttonList.add(findViewById(R.id.btn_5));buttonList.add(findViewById(R.id.btn_6));buttonList.add(findViewById(R.id.btn_7));buttonList.add(findViewById(R.id.btn_8));buttonList.add(findViewById(R.id.btn_9));buttonList.add(findViewById(R.id.btn_pt));buttonList.add(findViewById(R.id.btn_clr));iv_del = findViewById(R.id.iv_del);// 给按钮设置的点击事件for (Button button : buttonList) {button.setOnClickListener(this);}iv_del.setOnClickListener(this);// 声明一个映射对象的列表,用于保存名称与单位配对信息List<Map<String, Object>> list = new ArrayList<>();// name是名称,unit是单位for (int i = 0; i < nameArray.length; i++) {Map<String, Object> item = new HashMap<>();item.put("name", nameArray[i]);item.put("unit", unitArray[i]);list.add(item);}// 声明一个下拉列表的简易适配器,其中指定了名称与单位两组数据SimpleAdapter adapter = new SimpleAdapter(this, list,R.layout.item_value_conversion,new String[]{"name", "unit"},new int[]{R.id.tv_name, R.id.tv_unit});sp_select1.setAdapter(adapter);sp_select2.setAdapter(adapter);// 设置下拉列表默认显示sp_select1.setSelection(0);sp_select2.setSelection(1);// 给下拉框设置选择监听器,一旦用户选中某一项,就触发监听器的 onItemSelected 方法sp_select1.setOnItemSelectedListener(this);sp_select2.setOnItemSelectedListener(this);}@Overridepublic void onClick(View v) {if (v.getId() != R.id.iv_back && v.getId() != R.id.iv_del && v.getId() != R.id.btn_clr && value1.length() >= 20)return;String inputText = "";// 如果不是删除按钮和返回按钮if (v.getId() != R.id.iv_del && v.getId() != R.id.iv_back) {inputText = ((TextView) v).getText().toString();}switch (v.getId()) {// 点击了返回按钮case R.id.iv_back:finish();break;// 点击了清除按钮case R.id.btn_clr:clear();break;// 点击了删除按钮case R.id.iv_del:delete();break;// 点击了小数点按钮case R.id.btn_pt:if (value1.indexOf(".") == -1)value1 = value1 + ".";refreshText();break;// 点击了数字按钮default:if (value1.equals("0")) {value1 = inputText;} else {value1 = value1 + inputText;}operation();refreshText();break;}}// 清空并初始化private void clear() {value1 = value2 = "0";refreshText();}// 刷新文本显示private void refreshText() {tv_value1.setText(value1);tv_value2.setText(value2);}// 回退private void delete() {if (value1.length() != 0) {value1 = value1.substring(0, value1.length() - 1);if (value1.length() == 0)value1 = "0";operation();refreshText();}}// 运算private void operation() {// 将value1转换为临时数值tempValue(米/秒)BigDecimal d1 = new BigDecimal(value1);switch (unit1) {case "米/秒":tempValue = d1;break;case "千米/小时":tempValue = d1.divide(new BigDecimal(3.6), 20, BigDecimal.ROUND_HALF_UP);break;case "千米/秒":tempValue = d1.divide(new BigDecimal(0.001), 20, BigDecimal.ROUND_HALF_UP);break;case "海里/小时":tempValue = d1.divide(new BigDecimal(1.943844492440604751), 20, BigDecimal.ROUND_HALF_UP);break;case "英里/小时":tempValue = d1.multiply(new BigDecimal(0.44704));break;case "英寸/秒":tempValue = d1.multiply(new BigDecimal(0.0254));break;case "英尺/秒":tempValue = d1.multiply(new BigDecimal(0.3048));break;case "光速":tempValue = d1.multiply(new BigDecimal(299792458));break;case "马赫":tempValue = d1.multiply(new BigDecimal(340.3));break;}// 将临时数值tempValue(米/秒)转换为value2BigDecimal d2 = new BigDecimal(0);switch (unit2) {case "米/秒":d2 = tempValue;break;case "千米/小时":d2 = tempValue.multiply(new BigDecimal(3.6));break;case "千米/秒":d2 = tempValue.multiply(new BigDecimal(0.001));break;case "海里/小时":d2 = tempValue.multiply(new BigDecimal(1.943844492440604751));break;case "英里/小时":d2 = tempValue.divide(new BigDecimal(0.44704), 20, BigDecimal.ROUND_HALF_UP);break;case "英寸/秒":d2 = tempValue.divide(new BigDecimal(0.0254), 20, BigDecimal.ROUND_HALF_UP);break;case "英尺/秒":d2 = tempValue.divide(new BigDecimal(0.3048), 20, BigDecimal.ROUND_HALF_UP);break;case "光速":d2 = tempValue.divide(new BigDecimal(299792458), 20, BigDecimal.ROUND_HALF_UP);break;case "马赫":d2 = tempValue.divide(new BigDecimal(340.3), 20, BigDecimal.ROUND_HALF_UP);break;}String str = String.valueOf(d2.doubleValue());String str1 = str.substring(str.length() - 2);if (str1.equals(".0"))str = str.substring(0, str.length() - 2);value2 = str;}// 选中某一项之后触发的回调方法@SuppressLint("ResourceAsColor")@Overridepublic void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {TextView tv_unit = adapterView.findViewById(R.id.tv_unit);tv_unit.setVisibility(GridView.GONE);if (adapterView.getId() == R.id.sp_select1) {tv_unit1.setText(unitArray[i]);unit1 = nameArray[i];operation();refreshText();} else {tv_unit2.setText(unitArray[i]);unit2 = nameArray[i];operation();refreshText();}}// 什么也没选执行的回调方法@Overridepublic void onNothingSelected(AdapterView<?> adapterView) {}
}

总结

以上就是速度转换工具的开发与实现的内容。

Android开发实用小工具五——速度转换工具相关推荐

  1. Android开发实用小工具三——面积转换工具

    文章目录 前言 一.效果展示 二.代码 主代码 总结 前言 面积转换工具的开发与实现. 一.效果展示 二.代码 准备工作和样式布局与我开发的另一个小工具(长度转换工具)所用一致,详情请看我上一篇文章. ...

  2. Android开发实用小工具九——温度转换工具

    文章目录 前言 一.效果展示 二.代码 1.样式布局 2.主代码 总结 前言 温度转换工具的开发与实现. 一.效果展示 二.代码 准备工作与我开发的另一个小工具(长度转换工具)所用一致,详情请看我上一 ...

  3. Android开发实用小工具十——进制转换工具

    文章目录 前言 一.效果展示 二.代码 1.样式布局 2.主代码 总结 前言 进制转换工具的开发与实现. 一.效果展示 二.代码 准备工作与我开发的另一个小工具(长度转换工具)所用一致,详情请看我上一 ...

  4. Android开发实用小工具十一——亲戚称呼计算器

    文章目录 前言 一.效果展示 二.代码 1.样式布局 2.获取亲戚关系表 3.主代码 总结 前言 亲戚称呼计算器的开发与实现. 一.效果展示 二.代码 准备工作与我开发的另一个小工具(长度转换工具)所 ...

  5. Android 开发实用小技巧

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/75647437 本文出自[赵彦军的博客] Android Studio 实用插件传送 ...

  6. Android开发实用小工具十三——BMI指数计算工具

    文章目录 前言 一.效果展示 二.代码 1.准备工作 2.样式布局 3."BMI指数计算"活动页面 4."BMI计算结果"活动页面 总结 前言 BMI指数计算工 ...

  7. Android开发实用小技巧九——内嵌WebView的使用(内置浏览器)

    文章目录 前言 一.效果展示 二.代码 1.样式布局 2.活动页面 总结 前言 内嵌WebView的使用(内置浏览器). 一.效果展示 二.代码 1.样式布局 res/layout/activity_ ...

  8. Android开发实用小技巧六——根据网址跳转第三方浏览器

    文章目录 前言 代码 总结 前言 根据网址跳转第三方浏览器. 代码 方法 : // 根据网址跳转第三方浏览器 public static void jumpUriToBrowser(Context c ...

  9. Android开发笔记(九十五)自定义Drawable

    Drawable Bitmap是Android对图像的定义描述,而Drawable则是对图像的展现描述,在View视图中显示图像都是通过Drawable来实现的.其中有关Bitmap的介绍参见< ...

最新文章

  1. systemd下supervisord服务开机自启动以及注意事项
  2. mysql基础(九) 索引和视图
  3. java 中流的使用
  4. NYOJ 84 阶乘的0
  5. 零基础如何高效学好Java?Java怎么学?
  6. python中时间处理去空格去冒号_Python实用日期时间处理方法汇总
  7. request.setAttribute()与request.getAttribute()取值问题
  8. JavaScript 操作剪贴板
  9. iphone xcode for lion 下载地址
  10. 【操作系统】处理机调度与死锁(三)
  11. Android-SDK下载及安装配置教程
  12. 【XJOI】燃烧的远征
  13. Androidx跟Android的区别
  14. PPT文档打不开提示访问出错怎么办
  15. 60行C代码的shell领略Unix哲学之美
  16. Oracle数据库常见问题及解决办法
  17. 少儿编程scratch课程-海底世界
  18. java scp 传文件乱码_转-linux 打开移动硬盘中的文本文件显示为乱码
  19. ipad越狱常用软件
  20. vim 全局替换_有一说一,Intellij IDEA 自带的 Vim 插件真心不错!

热门文章

  1. x11苹果_Apple中国 - Mac OS X - X11
  2. 中国AI投资报告:真格、创新工厂、红杉排名前三
  3. [js]vee-validate自定义告警信息和自定义规则
  4. 面向对象和C++基础—面向对象(构造与析构函数篇)
  5. ActiveMQ消息消费流程及优化
  6. 技嘉主板Z370 HD3后背音频有杂音
  7. DMCNN–2018TIP
  8. 干货 | 携程容器偶发性超时问题案例分析(一)
  9. 软件性能并发量测试,性能测试流程-JMeter工具进行系统最大并发数测试
  10. 《京东大鼓——别》(董湘昆)(唱词文本)