Android Studio实现简易进制转换计算器


Posted in Java/Android onMay 20, 2022

本文实例为大家分享了Android Studio实现简易进制转换计算器的具体代码。

1、问题描述

设计并实现一个数制转换器,能够对输入的任- -进制类型的数值转换为指定的数制类型的数值。必须实现的数制类型有二进制、八进制、十进制和十六进制四种。

2、基本要求

(1)使用Spinner 控件,列出四种数制类型,即:二进制、八进制、十进制和十六进制;
(2)“数值”输入框,不使用Android系统提供的输入面板,进行数值输入;且只能是整数数值;

布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="进制转换器"
        android:textSize="35sp"
        android:textColor="#9900AA"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="输入数据:"
        android:textSize="30sp"
        android:textColor="#99CCAA"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_1"
            android:layout_width="125dp"
            android:layout_height="35dp"
            android:text="进制类型:"
            android:textSize="25sp"
            android:textColor="#000"
            />
        <Spinner
            android:id="@+id/spinner1"
            android:layout_width="240dp"
            android:layout_height="35dp"
            android:textSize="30sp"
            />
    </LinearLayout>
    <EditText
        android:id="@+id/et_shuru"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></EditText>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="输出数据:"
        android:textSize="30sp"
        android:textColor="#99CCAA"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_2"
            android:layout_width="125dp"
            android:layout_height="35dp"
            android:text="进制类型:"
            android:textSize="25sp"
            android:textColor="#000"
            />
        <Spinner
            android:id="@+id/spinner2"
            android:layout_width="240dp"
            android:layout_height="35dp"
            android:textSize="30sp"
            />
    </LinearLayout>
    <EditText
        android:id="@+id/et_shuchu"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></EditText>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    <Button
        android:id="@+id/btn_0"
        android:layout_width="70dp"
        android:layout_height="35dp"
        android:text="0"
        android:background="@drawable/btn_1"
        />
        <Button
            android:id="@+id/btn_1"
            android:layout_width="70dp"
            android:layout_height="35dp"
            android:text="1"
            android:background="@drawable/btn_1"
            />
        <Button
            android:id="@+id/btn_2"
            android:layout_width="70dp"
            android:layout_height="35dp"
            android:text="2"
            android:background="@drawable/btn_1"
            />
        <Button
            android:id="@+id/btn_3"
            android:layout_width="70dp"
            android:layout_height="35dp"
            android:text="3"
            android:background="@drawable/btn_1"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:id="@+id/btn_4"
            android:layout_width="70dp"
            android:layout_height="35dp"
            android:text="4"
            android:background="@drawable/btn_1"
            />
        <Button
            android:id="@+id/btn_5"
            android:layout_width="70dp"
            android:layout_height="35dp"
            android:text="5"
            android:background="@drawable/btn_1"
            />
        <Button
            android:id="@+id/btn_6"
            android:layout_width="70dp"
            android:layout_height="35dp"
            android:text="6"
            android:background="@drawable/btn_1"
            />
        <Button
            android:id="@+id/btn_7"
            android:layout_width="70dp"
            android:layout_height="35dp"
            android:text="7"
            android:background="@drawable/btn_1"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:id="@+id/btn_8"
            android:layout_width="70dp"
            android:layout_height="35dp"
            android:text="8"
            android:background="@drawable/btn_1"
            />
        <Button
            android:id="@+id/btn_9"
            android:layout_width="70dp"
            android:layout_height="35dp"
            android:text="9"
            android:background="@drawable/btn_1"
            />
        <Button
            android:id="@+id/btn_A"
            android:layout_width="70dp"
            android:layout_height="35dp"
            android:text="A"
            android:background="@drawable/btn_1"
            />
        <Button
            android:id="@+id/btn_B"
            android:layout_width="70dp"
            android:layout_height="35dp"
            android:text="B"
            android:background="@drawable/btn_1"
            />

    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:id="@+id/btn_C"
            android:layout_width="70dp"
            android:layout_height="35dp"
            android:text="C"
            android:background="@drawable/btn_1"
            />
        <Button
            android:id="@+id/btn_D"
            android:layout_width="70dp"
            android:layout_height="35dp"
            android:text="D"
            android:background="@drawable/btn_1"
            />
        <Button
            android:id="@+id/btn_E"
            android:layout_width="70dp"
            android:layout_height="35dp"
            android:text="E"
            android:background="@drawable/btn_1"
            />
        <Button
            android:id="@+id/btn_F"
            android:layout_width="70dp"
            android:layout_height="35dp"
            android:text="F"
            android:background="@drawable/btn_1"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:id="@+id/btn_CE"
            android:layout_width="70dp"
            android:layout_height="35dp"
            android:text="CE"
            android:background="@drawable/btn_1"
            />
        <Button
            android:id="@+id/btn_js"
            android:layout_width="70dp"
            android:layout_height="40dp"
            android:text="计算"
            android:background="@drawable/btn_1"
            />
    </LinearLayout>
</LinearLayout>

按钮按压效果(btn_1.xml)代码

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape>
            <solid android:color="#CC7A00"/>
            <corners android:radius="10dp"/>
        </shape>
    </item>
    <item android:state_pressed="false">
        <shape>
            <solid android:color="#FF9900"/>
            <corners android:radius="10dp"/>
        </shape>
    </item>
</selector>

主代码(MainActivity)

package com.example.hzljinzhi;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
public class MainActivity extends AppCompatActivity {
    Spinner spinner1,spinner2;
    EditText et_shuru,et_shuchu;
    Button btn_CE,btn_js;
    int ids[]={R.id.btn_0,R.id.btn_1,R.id.btn_2,R.id.btn_3,R.id.btn_4,R.id.btn_5, R.id.btn_6,R.id.btn_7,
            R.id.btn_8,R.id.btn_9,R.id.btn_A,R.id.btn_B,R.id.btn_C,R.id.btn_D,R.id.btn_E,R.id.btn_F};
    String  temp=null,num1=null,num2=null,num3=null,num4=null;int k;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn_CE=findViewById(R.id.btn_CE);
        btn_js=findViewById( R.id.btn_js);
       btn_CE.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               et_shuru.setText("");
               et_shuchu.setText("");
           }
       });
        for(int i=0;i<ids.length;i++){
            Button btn = findViewById(ids[i]);

            if(btn != null)
                btn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        switch (v.getId()){
                           case  R.id.btn_0:
                                et_shuru.setText(et_shuru.getText()+"0");
                            break;
                            case  R.id.btn_1:
                                et_shuru.setText(et_shuru.getText()+"1");
                                break;
                            case  R.id.btn_2:
                                et_shuru.setText(et_shuru.getText()+"2");
                                break;
                            case  R.id.btn_3:
                                et_shuru.setText(et_shuru.getText()+"3");
                                break;
                            case  R.id.btn_4:
                                et_shuru.setText(et_shuru.getText()+"4");
                                break;
                            case  R.id.btn_5:
                                et_shuru.setText(et_shuru.getText()+"5");
                                break;
                            case  R.id.btn_6:
                                et_shuru.setText(et_shuru.getText()+"6");
                                break;
                            case  R.id.btn_7:
                                et_shuru.setText(et_shuru.getText()+"7");
                                break;
                            case  R.id.btn_8:
                                et_shuru.setText(et_shuru.getText()+"8");
                                break;
                            case  R.id.btn_9:
                                et_shuru.setText(et_shuru.getText()+"9");
                                break;
                            case  R.id.btn_A:
                                et_shuru.setText(et_shuru.getText()+"A");
                                break;
                            case  R.id.btn_B:
                                et_shuru.setText(et_shuru.getText()+"B");
                                break;
                            case  R.id.btn_C:
                                et_shuru.setText(et_shuru.getText()+"C");
                                break;
                            case  R.id.btn_D:
                                et_shuru.setText(et_shuru.getText()+"D");
                                break;
                            case  R.id.btn_E:
                                et_shuru.setText(et_shuru.getText()+"E");
                                break;
                            case  R.id.btn_F:
                                et_shuru.setText(et_shuru.getText()+"F");
                                break;
                        }
                    }
                });
        }
        et_shuru=findViewById(R.id.et_shuru);
        et_shuchu=findViewById(R.id.et_shuchu);
       spinner1=(Spinner)findViewById(R.id.spinner1);
       spinner2=(Spinner)findViewById(R.id.spinner2);
        //建立数据源
       String[] mltems = getResources().getStringArray(R.array.data);
        ArrayAdapter<String>adapter= new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,mltems);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        //绑定Adapter到控件
        spinner1.setAdapter(adapter);
        spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
                switch (pos){
                    case 0: k=2;setEnabled(2);break;
                    case 1: k=8;setEnabled(8);break;
                    case 2: k=10;setEnabled(10);break;
                    case 3: k=16;setEnabled(16);break;
                }
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
        spinner2.setAdapter(adapter);
        spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, final int pos, long id) {
                switch (pos){
                    case 0: btn_js.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                temp = et_shuru.getText().toString();
                                num3 = Integer.valueOf(temp, k).toString();//转换为十进制;
                                num1 = Integer.toBinaryString(Integer.parseInt(num3));
                                et_shuchu.setText(num1);
                            }
                        });break;
                    case 1: btn_js.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                temp = et_shuru.getText().toString();
                                num3 = Integer.valueOf(temp, k).toString();//转换为十进制;
                                num2 = Integer.toOctalString(Integer.parseInt(num3));
                                et_shuchu.setText(num2);
                            }
                        });break;
                    case 2: btn_js.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                temp = et_shuru.getText().toString();
                                num3 = Integer.valueOf(temp, k).toString();//转换为十进制;
                                et_shuchu.setText(num3);
                            }
                        });break;
                    case 3: btn_js.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            temp = et_shuru.getText().toString();
                            num3 = Integer.valueOf(temp, k).toString();//转换为十进制;
                            num4 = Integer.toHexString(Integer.parseInt(num3));
                            et_shuchu.setText(num4);
                        }
                    });break;
                }
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
    }
    public void setEnabled(int count){
        int i =0,size = Math.min(count,ids.length);
        for( i=0;i<size;i++){
            Button btn = findViewById(ids[i]);
            if(btn != null){
                btn.setEnabled(true);
            }
        }
        for( i=size;i<ids.length;i++){
            Button btn = findViewById(ids[i]);
            if(btn != null){
                btn.setEnabled(false);
            }
        }
    }
}

Spinner 控件的数据源(jinzhi.xml)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="data">
        <item>二进制</item>
        <item>八进制</item>
        <item>十进制</item>
        <item>十六进制</item>
    </string-array>
</resources>

Tags in this post...

Java/Android 相关文章推荐
Java输出Hello World完美过程解析
Jun 13 Java/Android
Spring Cache和EhCache实现缓存管理方式
Jun 15 Java/Android
gateway网关接口请求的校验方式
Jul 15 Java/Android
Java反应式框架Reactor中的Mono和Flux
Jul 25 Java/Android
JPA 通过Specification如何实现复杂查询
Nov 23 Java/Android
Spring Bean是如何初始化的详解
Mar 22 Java/Android
Java中的继承、多态以及封装
Apr 11 Java/Android
Java中生成微信小程序太阳码的实现方案
Jun 01 Java/Android
Java实现简单小画板
Jun 10 Java/Android
Java界面编程实现界面跳转
Jun 16 Java/Android
Spring Cloud OAuth2实现自定义token返回格式
Jun 25 Java/Android
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
Aug 05 Java/Android
Spring 使用注解开发
May 20 #Java/Android
MyBatis核心源码深度剖析SQL语句执行过程
Java 轮询锁使用时遇到问题
May 11 #Java/Android
Java 死锁解决方案
May 11 #Java/Android
JAVA springCloud项目搭建流程
May 11 #Java/Android
Java死锁的排查
May 11 #Java/Android
Java线程的6种状态与生命周期
May 11 #Java/Android
You might like
php中的三元运算符使用说明
2011/07/03 PHP
php的$_FILES的临时储存文件与回收机制实测过程
2013/07/12 PHP
php字符串操作常见问题小结
2016/10/11 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
DOM 中的事件处理介绍
2012/01/18 Javascript
JavaScript 反科里化 this [译]
2012/09/20 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
Jquery遍历select option和添加移除option的实现方法
2016/08/26 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
Vue中使用vux的配置详解
2017/05/05 Javascript
JS实现HTML页面中动态显示当前时间完整示例
2018/07/30 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
python学习数据结构实例代码
2015/05/11 Python
python读写ini配置文件方法实例分析
2015/06/30 Python
python 定时修改数据库的示例代码
2018/04/08 Python
python numpy格式化打印的实例
2018/05/14 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
Python 存取npy格式数据实例
2020/07/01 Python
python利用opencv实现颜色检测
2021/02/23 Python
德国知名健康零食网上商店:Seeberger
2017/07/27 全球购物
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
办公室行政主管岗位职责
2015/04/09 职场文书
运动会致辞稿
2015/07/29 职场文书
离婚民事起诉状
2015/08/03 职场文书
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python