文章目录

  • 前言
  • 一、效果展示
  • 二、代码
    • 1.样式布局
    • 2.主代码
  • 总结

前言

进制转换工具的开发与实现。


一、效果展示


二、代码

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

1.样式布局

本项目相较于前几个小工具的开发,多了几个数值按钮。

res/layout/activity_decimal_conversion.xml.xml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#ffe9ecf1"android:orientation="vertical"><RelativeLayout android:layout_width="match_parent"android:layout_height="50dp"android:background="@color/white"><ImageViewandroid:id="@+id/iv_back"android:layout_width="40dp"android:layout_height="match_parent"android:layout_alignParentLeft="true"android:padding="10dp"android:scaleType="fitCenter"android:src="@drawable/ic_back" /><TextViewandroid:id="@+id/tv_title"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_centerInParent="true"android:gravity="center"android:textColor="#ff000000"android:textSize="17sp"android:text="进制转换工具" /></RelativeLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:orientation="horizontal"><Spinnerandroid:id="@+id/sp_select1"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="5"android:dropDownWidth="215dp"android:popupBackground="@drawable/shape_module"android:spinnerMode="dropdown" /><LinearLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="6"android:orientation="vertical"><TextViewandroid:id="@+id/tv_value1"android:layout_width="match_parent"android:layout_height="0dp"android:layout_marginRight="10dp"android:layout_weight="2"android:gravity="right|bottom"android:text="0"android:textColor="#ffff8800"android:textSize="30sp" /><TextViewandroid:id="@+id/tv_unit1"android:layout_width="match_parent"android:layout_height="0dp"android:layout_marginRight="10dp"android:layout_weight="1"android:gravity="right"android:textColor="#FF959595"android:textSize="13sp"tools:text="m" /></LinearLayout></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:orientation="horizontal"><Spinnerandroid:id="@+id/sp_select2"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="5"android:dropDownWidth="215dp"android:popupBackground="@drawable/shape_module"android:spinnerMode="dropdown" /><LinearLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="6"android:orientation="vertical"><TextViewandroid:id="@+id/tv_value2"android:layout_width="match_parent"android:layout_height="0dp"android:layout_marginRight="10dp"android:layout_weight="2"android:gravity="right|bottom"android:text="0"android:textColor="#ff000000"android:textSize="30sp" /><TextViewandroid:id="@+id/tv_unit2"android:layout_width="match_parent"android:layout_height="0dp"android:layout_marginRight="10dp"android:layout_weight="1"android:gravity="right"android:textColor="#FF959595"android:textSize="13sp"tools:text="chi" /></LinearLayout></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="@drawable/shape_module"android:orientation="vertical"android:padding="20dp"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="4"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:orientation="horizontal"><Buttonandroid:id="@+id/btn_clr"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="C"android:textColor="#FF0080FF"android:textSize="35sp" /><ImageButtonandroid:id="@+id/iv_del"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:src="@drawable/ic_delete" /><Buttonandroid:id="@+id/btn_f"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="F"android:textColor="#ff000000"android:textSize="35sp" /><Buttonandroid:id="@+id/btn_e"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="E"android:textColor="#ff000000"android:textSize="35sp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:orientation="horizontal"><Buttonandroid:id="@+id/btn_7"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="7"android:textColor="#ff000000"android:textSize="35sp" /><Buttonandroid:id="@+id/btn_8"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="8"android:textColor="#ff000000"android:textSize="35sp" /><Buttonandroid:id="@+id/btn_9"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="9"android:textColor="#ff000000"android:textSize="35sp" /><Buttonandroid:id="@+id/btn_d"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="D"android:textColor="#ff000000"android:textSize="35sp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:orientation="horizontal"><Buttonandroid:id="@+id/btn_4"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="4"android:textColor="#ff000000"android:textSize="35sp" /><Buttonandroid:id="@+id/btn_5"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="5"android:textColor="#ff000000"android:textSize="35sp" /><Buttonandroid:id="@+id/btn_6"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="6"android:textColor="#ff000000"android:textSize="35sp" /><Buttonandroid:id="@+id/btn_c"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="C"android:textColor="#ff000000"android:textSize="35sp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:orientation="horizontal"><Buttonandroid:id="@+id/btn_1"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="1"android:textColor="#ff000000"android:textSize="35sp" /><Buttonandroid:id="@+id/btn_2"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="2"android:textColor="#ff000000"android:textSize="35sp" /><Buttonandroid:id="@+id/btn_3"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="3"android:textColor="#ff000000"android:textSize="35sp" /><Buttonandroid:id="@+id/btn_b"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="B"android:textColor="#ff000000"android:textSize="35sp" /></LinearLayout></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:orientation="horizontal"><LinearLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="3"><Viewandroid:layout_width="0dp"android:layout_height="0dp"android:layout_weight="1"android:layout_margin="6dp"/><Buttonandroid:id="@+id/btn_0"android:layout_width="0dp"android:layout_height="match_parent"android:layout_margin="6dp"android:layout_weight="1"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="0"android:textColor="#ff000000"android:textSize="35sp" /><Viewandroid:layout_width="0dp"android:layout_height="0dp"android:layout_weight="1"android:layout_margin="6dp"/></LinearLayout><LinearLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"><Buttonandroid:id="@+id/btn_a"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_margin="6dp"android:background="@drawable/radio_button_selector"android:padding="10dp"android:text="A"android:textColor="#ff000000"android:textSize="35sp" /></LinearLayout></LinearLayout></LinearLayout></LinearLayout>

2.主代码

DecimalConversionActivity.java :

public class DecimalConversionActivity extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemSelectedListener {// 定义下拉列表需要显示的单位名称private static final String[] nameArray = {"二进制", "八进制", "十进制", "十六进制"};// 定义下拉列表需要显示的单位数组private static final String[] unitArray = {"BIN", "OCT", "DEC", "HEX"};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 long tempValue;@SuppressLint("ResourceAsColor")@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_decimal_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_a));buttonList.add(findViewById(R.id.btn_b));buttonList.add(findViewById(R.id.btn_c));buttonList.add(findViewById(R.id.btn_d));buttonList.add(findViewById(R.id.btn_e));buttonList.add(findViewById(R.id.btn_f));buttonList.add(findViewById(R.id.btn_clr));iv_del = findViewById(R.id.iv_del);// 给按钮设置的点击事件for (int i = 0; i < buttonList.size(); i++) {if (i >= 10 && i <= 15) {buttonList.get(i).setTextColor(Color.parseColor("#FFD6D6D6"));}buttonList.get(i).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(2);sp_select2.setSelection(3);// 给下拉框设置选择监听器,一旦用户选中某一项,就触发监听器的 onItemSelected 方法sp_select1.setOnItemSelectedListener(this);sp_select2.setOnItemSelectedListener(this);operation();refreshText();}@Overridepublic void onClick(View v) {if (v.getId() != R.id.iv_back && v.getId() != R.id.iv_del && v.getId() != R.id.btn_clr) {if ((unit1.equals("二进制") || unit1.equals("八进制")) && value1.length() >= 20)return;else if (unit1.equals("十进制") && value1.length() >= 18)return;else if (unit1.equals("十六进制") && value1.length() >= 15)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_f:case R.id.btn_e:case R.id.btn_d:case R.id.btn_c:case R.id.btn_b:case R.id.btn_a:if (unit1.equals("二进制") || unit1.equals("八进制") || unit1.equals("十进制"))break;case R.id.btn_9:case R.id.btn_8:if (unit1.equals("二进制") || unit1.equals("八进制"))break;case R.id.btn_7:case R.id.btn_6:case R.id.btn_5:case R.id.btn_4:case R.id.btn_3:case R.id.btn_2:if (unit1.equals("二进制"))break;case R.id.btn_1:case R.id.btn_0: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() {if (unit1.equals(unit2)) {value2 = value1;return;}// 将value1转换为临时数值tempValue(十进制)switch (unit1) {case "二进制":tempValue = Long.parseLong(value1, 2);break;case "八进制":tempValue = Long.parseLong(value1, 8);break;case "十进制":tempValue = Long.parseLong(value1);break;case "十六进制":tempValue = Long.parseLong(value1, 16);break;}// 将临时数值tempValue(十进制)转换为value2switch (unit2) {case "二进制":value2 = Long.toBinaryString(tempValue);break;case "八进制":value2 = Long.toOctalString(tempValue);break;case "十进制":value2 = String.valueOf(tempValue);break;case "十六进制":value2 = Long.toHexString(tempValue);break;}value2 = value2.toUpperCase();}// 选中某一项之后触发的回调方法@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];value1 = value2 = "0";refreshText();switch (i) {case 0:for (int i1 = 0; i1 < buttonList.size(); i1++) {if (i1 < 2)buttonList.get(i1).setTextColor(Color.parseColor("#FF000000"));else if (i1 >= 2 && i1 <= 15)buttonList.get(i1).setTextColor(Color.parseColor("#FFD6D6D6"));}break;case 1:for (int i1 = 0; i1 < buttonList.size(); i1++) {if (i1 < 8)buttonList.get(i1).setTextColor(Color.parseColor("#FF000000"));else if (i1 >= 8 && i1 <= 15)buttonList.get(i1).setTextColor(Color.parseColor("#FFD6D6D6"));}break;case 2:for (int i1 = 0; i1 < buttonList.size(); i1++) {if (i1 < 10)buttonList.get(i1).setTextColor(Color.parseColor("#FF000000"));else if (i1 >= 10 && i1 <= 15)buttonList.get(i1).setTextColor(Color.parseColor("#FFD6D6D6"));}break;case 3:for (int i1 = 0; i1 < buttonList.size(); i1++) {if (i1 < 16)buttonList.get(i1).setTextColor(Color.parseColor("#FF000000"));}break;}} else {tv_unit2.setText(unitArray[i]);unit2 = nameArray[i];operation();refreshText();}}// 什么也没选执行的回调方法@Overridepublic void onNothingSelected(AdapterView<?> adapterView) {}
}

总结

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

Android开发实用小工具十——进制转换工具相关推荐

  1. java 进制转换工具_进制转换工具(JAVA)

    /**进制转换工具,支持2-36任意进制间相互转换 */ public class HexConverter { public static String Quotient = null; publi ...

  2. JavaScript实现在线进制转换工具网站 -toolfk程序员在线工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

  3. JavaScript实现在线进制转换工具网站 -toolfk程序员工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

  4. ASCII HEX BIN DIG进制转换工具页

    ASCII  HEX BIN DIG进制转换工具页 http://www.ab126.com/goju/1711.html

  5. 在线2-36任意进制转换工具

    在线2-36任意进制转换工具 在线2-36任意进制转换工具 本工具支持将数字从在2-36进制中任意进制间相互转换,只支持整数,纯客户端实时计算. https://tooltt.com/hex/

  6. Java 进制转换工具类

    /*** 进制转换工具类* @author dell**/ public class HexadecimalUtil {/*** 获得倒序二进制数据* @param hexString* @retur ...

  7. 通用进制转换工具,可实现进制之间的任意转换

    通用进制转换工具,可实现2进制,8进制,10进制,16进制之间的任意转换 以下是软件截图: 以下是软件下载地址: http://download.csdn.net/source/3371415 转载于 ...

  8. java:实现进制转换工具(附完整源码)

    java:实现进制转换工具 package com.xxq;import java.awt.BorderLayout; import java.awt.EventQueue;import javax. ...

  9. 更强更方便的进制转换工具

    最近,我仿照https://blog.csdn.net/Eyizoha/article/details/94897931?locationNum=9&fps=1上的2-36进制转换的代码做出了 ...

最新文章

  1. 第一篇:VC连接MySql
  2. 置换怎么表示成轮换_开门红 新纪录!首场电车置换引爆州城,两小时突破160辆!...
  3. Dora.Interception,为.NET Core度身打造的AOP框架 [5]:轻松地实现与其他AOP框架的整合...
  4. 服务器上flash不显示动画,win10电脑在线预览不能加载flash
  5. ECS vs K8S
  6. hadoop27---netty中handler的执行顺序
  7. activiti高亮显示图片_如今透明LED显示屏成为广告橱窗,它们之间有什么关联?...
  8. combobox is not a function 问题解决
  9. HDU 3829 Cat VS Dog
  10. ip设计包括什么_一天卖200多万个潮玩,泡泡玛特如何打造超级IP?
  11. 图解设计模式:行为型模式之观察者模式
  12. rgb灯板Android程序,【图片】RGBW智能小夜灯程序则最近搞这玩意硬件真难搞【技术宅吧】_百度贴吧...
  13. Slate轨道工具使用(二)—Odin支持
  14. JPEG图片存储格式及原理
  15. 我的大学十年 (转)
  16. 快桃科技居然给我无条件双倍工资!却又整天瞎搞
  17. 我们该如何全面提高程序的可读性
  18. 汇承金融科技:开创多渠道资产与资金撮合融资服务模式
  19. 【Simulink】仿真_PID控制器调谐/调参/整定
  20. qemu 的 win98 plus 镜像

热门文章

  1. UID-08-PS-海报(招贴)2
  2. T分布与标准正态分布的图形及峰度问题
  3. 中国能不能写出操作系统?
  4. 2019中科实数杯( Q1内存镜像取证分析、Q4加密磁盘分析)
  5. Android中 onTouchEvent() 与 onInterceptTouchEvent()事件的区别详解
  6. JavaWeb.09.新闻之分页功能
  7. UPX脱壳逐一跟踪分析
  8. springboot+jsp停车场车位租赁管理系统
  9. C#开发之——StreamReader(10.8)
  10. 淘宝top接口响应时间优化