Android开发实用小工具五——速度转换工具
文章目录
- 前言
- 一、效果展示
- 二、代码
- 主代码
- 总结
前言
速度转换工具的开发与实现。
一、效果展示
二、代码
准备工作和样式布局与我开发的另一个小工具(长度转换工具)所用一致,详情请看我上一篇文章。
链接: 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开发实用小工具五——速度转换工具相关推荐
- Android开发实用小工具三——面积转换工具
文章目录 前言 一.效果展示 二.代码 主代码 总结 前言 面积转换工具的开发与实现. 一.效果展示 二.代码 准备工作和样式布局与我开发的另一个小工具(长度转换工具)所用一致,详情请看我上一篇文章. ...
- Android开发实用小工具九——温度转换工具
文章目录 前言 一.效果展示 二.代码 1.样式布局 2.主代码 总结 前言 温度转换工具的开发与实现. 一.效果展示 二.代码 准备工作与我开发的另一个小工具(长度转换工具)所用一致,详情请看我上一 ...
- Android开发实用小工具十——进制转换工具
文章目录 前言 一.效果展示 二.代码 1.样式布局 2.主代码 总结 前言 进制转换工具的开发与实现. 一.效果展示 二.代码 准备工作与我开发的另一个小工具(长度转换工具)所用一致,详情请看我上一 ...
- Android开发实用小工具十一——亲戚称呼计算器
文章目录 前言 一.效果展示 二.代码 1.样式布局 2.获取亲戚关系表 3.主代码 总结 前言 亲戚称呼计算器的开发与实现. 一.效果展示 二.代码 准备工作与我开发的另一个小工具(长度转换工具)所 ...
- Android 开发实用小技巧
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/75647437 本文出自[赵彦军的博客] Android Studio 实用插件传送 ...
- Android开发实用小工具十三——BMI指数计算工具
文章目录 前言 一.效果展示 二.代码 1.准备工作 2.样式布局 3."BMI指数计算"活动页面 4."BMI计算结果"活动页面 总结 前言 BMI指数计算工 ...
- Android开发实用小技巧九——内嵌WebView的使用(内置浏览器)
文章目录 前言 一.效果展示 二.代码 1.样式布局 2.活动页面 总结 前言 内嵌WebView的使用(内置浏览器). 一.效果展示 二.代码 1.样式布局 res/layout/activity_ ...
- Android开发实用小技巧六——根据网址跳转第三方浏览器
文章目录 前言 代码 总结 前言 根据网址跳转第三方浏览器. 代码 方法 : // 根据网址跳转第三方浏览器 public static void jumpUriToBrowser(Context c ...
- Android开发笔记(九十五)自定义Drawable
Drawable Bitmap是Android对图像的定义描述,而Drawable则是对图像的展现描述,在View视图中显示图像都是通过Drawable来实现的.其中有关Bitmap的介绍参见< ...
最新文章
- systemd下supervisord服务开机自启动以及注意事项
- mysql基础(九) 索引和视图
- java 中流的使用
- NYOJ 84 阶乘的0
- 零基础如何高效学好Java?Java怎么学?
- python中时间处理去空格去冒号_Python实用日期时间处理方法汇总
- request.setAttribute()与request.getAttribute()取值问题
- JavaScript 操作剪贴板
- iphone xcode for lion 下载地址
- 【操作系统】处理机调度与死锁(三)
- Android-SDK下载及安装配置教程
- 【XJOI】燃烧的远征
- Androidx跟Android的区别
- PPT文档打不开提示访问出错怎么办
- 60行C代码的shell领略Unix哲学之美
- Oracle数据库常见问题及解决办法
- 少儿编程scratch课程-海底世界
- java scp 传文件乱码_转-linux 打开移动硬盘中的文本文件显示为乱码
- ipad越狱常用软件
- vim 全局替换_有一说一,Intellij IDEA 自带的 Vim 插件真心不错!