手把手教会基于Android实现最简单的计算器操作

第一次代码超过150行的Android-----app,对的,没错,我是一个菜鸟,如果,你跟我一样,那也从制作计算器开始,最常见的一个应用,当你真正实现的时候,会发现,不是像你想象那么简单哦。

-----------------------------------------------------------------------------------------------------------------------------------------写在前面的话

本次计算器实现的是------只能进行最简单的“+”,“-”,“*”,“/”,不能连算啊!!比如“1+2+3”,后期,等我完善后,我会贴出来的,这只是雏形,你们可以在后面进行添加,

布局文件如图


布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.自己的包名哦哦哦哦哦.MainActivity">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="显示数据"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="清除"
        android:id="@+id/bt_qingchu"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="26dp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="退位"
        android:id="@+id/bt_tuichu"
        android:layout_alignTop="@+id/bt_qingchu"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_marginRight="62dp"
        android:layout_marginEnd="62dp" />

    <Button
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:text="1"
        android:id="@+id/bt_1"
        android:layout_below="@+id/bt_qingchu"
        android:layout_marginTop="31dp" />

    <Button
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:text="2"
        android:id="@+id/bt_2"
        android:layout_alignTop="@+id/bt_1"
        android:layout_toLeftOf="@+id/bt_tuichu"
        android:layout_toStartOf="@+id/bt_tuichu" />

    <Button
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:text="3"
        android:id="@+id/bt_3"
        android:layout_alignTop="@+id/bt_2"
        android:layout_toLeftOf="@+id/bt_jia"
        android:layout_toStartOf="@+id/bt_jia" />

    <Button
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:text="+"
        android:id="@+id/bt_jia"
        android:layout_alignTop="@+id/bt_3"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <Button
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:text="4"
        android:id="@+id/bt_4"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:text="5"
        android:id="@+id/bt_5"
        android:layout_centerVertical="true"
        android:layout_alignRight="@+id/bt_2"
        android:layout_alignEnd="@+id/bt_2" />

    <Button
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:text="6"
        android:id="@+id/bt_6"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@+id/bt_jia"
        android:layout_toStartOf="@+id/bt_jia" />

    <Button
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:text="-"
        android:id="@+id/bt_jian"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@+id/bt_6"
        android:layout_toEndOf="@+id/bt_6" />

    <Button
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:text="7"
        android:id="@+id/bt_7"
        android:layout_marginTop="39dp"
        android:layout_below="@+id/bt_4"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:text="8"
        android:id="@+id/bt_8"
        android:layout_alignTop="@+id/bt_7"
        android:layout_alignRight="@+id/bt_5"
        android:layout_alignEnd="@+id/bt_5" />

    <Button
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:text="9"
        android:id="@+id/bt_9"
        android:layout_alignBottom="@+id/bt_8"
        android:layout_alignLeft="@+id/bt_6"
        android:layout_alignStart="@+id/bt_6" />

    <Button
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:text="*"
        android:id="@+id/bt_cheng"
        android:layout_alignBottom="@+id/bt_9"
        android:layout_toRightOf="@+id/bt_9"
        android:layout_toEndOf="@+id/bt_9" />

    <Button
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:text="0"
        android:id="@+id/bt_0"
        android:layout_marginTop="22dp"
        android:layout_below="@+id/bt_7"
        android:layout_alignRight="@+id/bt_qingchu"
        android:layout_alignEnd="@+id/bt_qingchu" />

    <Button
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:text="/"
        android:id="@+id/bt_chu"
        android:layout_alignTop="@+id/bt_0"
        android:layout_alignLeft="@+id/bt_8"
        android:layout_alignStart="@+id/bt_8" />

    <Button
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:text="="
        android:id="@+id/bt_dengyu"
        android:layout_alignTop="@+id/bt_chu"
        android:layout_alignLeft="@+id/bt_9"
        android:layout_alignStart="@+id/bt_9" />

    <Button
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:text="."
        android:id="@+id/bt_dian"
        android:layout_alignBottom="@+id/bt_dengyu"
        android:layout_toRightOf="@+id/bt_dengyu"
        android:layout_toEndOf="@+id/bt_dengyu" />
</RelativeLayout>

Android代码,很详细哦哦

package com.example.取得名字;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements OnClickListener {
    Button b1, b2, b3, b4, b5, b6, b7, b8, b9, b0, b_dian, b_cheng, b_jia, b_chu, b_qingchu, b_tuichu, b_jian, b_dengyu;
    TextView b_xianshi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找到显示屏的控件
        b_xianshi = (TextView) findViewById(R.id.textView);
        //找到按钮的控件
        b1 = (Button) findViewById(R.id.bt_1);
        b2 = (Button) findViewById(R.id.bt_2);
        b3 = (Button) findViewById(R.id.bt_3);
        b4 = (Button) findViewById(R.id.bt_4);
        b1 = (Button) findViewById(R.id.bt_1);
        b5 = (Button) findViewById(R.id.bt_5);
        b6 = (Button) findViewById(R.id.bt_6);
        b7 = (Button) findViewById(R.id.bt_7);
        b8 = (Button) findViewById(R.id.bt_8);
        b9 = (Button) findViewById(R.id.bt_9);
        b0 = (Button) findViewById(R.id.bt_0);
        b_dian = (Button) findViewById(R.id.bt_dian);
        b_cheng = (Button) findViewById(R.id.bt_cheng);
        b_jia = (Button) findViewById(R.id.bt_jia);
        b_jian = (Button) findViewById(R.id.bt_jian);
        b_chu = (Button) findViewById(R.id.bt_chu);
        b_qingchu = (Button) findViewById(R.id.bt_qingchu);
        b_tuichu = (Button) findViewById(R.id.bt_tuichu);
        b_dengyu = (Button) findViewById(R.id.bt_dengyu);
//按钮监听事件
        b1.setOnClickListener(this);
        b2.setOnClickListener(this);
        b3.setOnClickListener(this);
        b4.setOnClickListener(this);
        b5.setOnClickListener(this);
        b6.setOnClickListener(this);
        b7.setOnClickListener(this);
        b8.setOnClickListener(this);
        b9.setOnClickListener(this);
        b0.setOnClickListener(this);
        b_dian.setOnClickListener(this);
        b_cheng.setOnClickListener(this);
        b_jia.setOnClickListener(this);
        b_jian.setOnClickListener(this);
        b_chu.setOnClickListener(this);
        b_qingchu.setOnClickListener(this);
        b_tuichu.setOnClickListener(this);
        b_dengyu.setOnClickListener(this);


    }

    @Override
    public void onClick(View v) {
        //取出显示屏的数据
        String shu = b_xianshi.getText().toString();
        switch (v.getId()) {
            case R.id.bt_0:
            case R.id.bt_1:
            case R.id.bt_2:
            case R.id.bt_3:
            case R.id.bt_4:
            case R.id.bt_5:
            case R.id.bt_6:
            case R.id.bt_7:
            case R.id.bt_8:
            case R.id.bt_9:
            case R.id.bt_dian:

//将所按的数字放在显示屏中
                b_xianshi.setText(shu + ((Button) v).getText().toString());
                break;
            case R.id.bt_jia:
            case R.id.bt_jian:
            case R.id.bt_cheng:
            case R.id.bt_chu:
                将所按的字符放在显示屏中
                b_xianshi.setText(shu + ((Button) v).getText().toString() );
                break;
            //清除键的操作时,可以进行清屏,显示屏啥也没有,可以再次进行操作
            case R.id.bt_qingchu:
                b_xianshi.setText("");
                break;
            //当按退位件的时候操作,清除自己输错的字符(一个个的退位)
            case R.id.bt_tuichu:

               /*
               //得到显示的信息
                 String get=b_xianshi.getText().toString();
                //将显示的信息---的最后一位删除
                get.substring(0,get.length()-1);
                */ //与下面表示的意思是一样

                b_xianshi.setText(b_xianshi.getText().toString().substring(0,b_xianshi.getText().toString().length()-1));
                break;
            //当按等于号时所执行的操作
            case R.id.bt_dengyu:
                jieguo();
                break;


        }

    }
    double result;
    //当按等于号的时候所触发的事件
    public void jieguo()

    {
        //先将显示屏中的字符串全部取出来,只有加了tostring才能用String类型接收
String suoyou=b_xianshi.getText().toString();
        String zifu = null;
        //判断字符串中有没有“+-*/”如果有,则取出来
        if(suoyou.contains("+"))
            zifu=suoyou.substring(suoyou.indexOf("+"),suoyou.indexOf("+")+1);
        if(suoyou.contains("-"))
            zifu=suoyou.substring(suoyou.indexOf("-"),suoyou.indexOf("-")+1);
        if(suoyou.contains("*"))
            zifu=suoyou.substring(suoyou.indexOf("*"),suoyou.indexOf("*")+1);
        if(suoyou.contains("/"))
            zifu=suoyou.substring(suoyou.indexOf("/"),suoyou.indexOf("/")+1);
//取出来后,用s1进行接收符号前面的数字串;用s2进行接收符号后面的数字串
      String s1=suoyou.substring(0, (suoyou.indexOf(zifu) ));
        String s2=suoyou.substring((suoyou.indexOf(zifu) )+1,suoyou.length());
        //将数字字符串用数字表示
        double a1=Double.parseDouble(s1);
        double a2=Double.parseDouble(s2);
        //进行计算
        if(suoyou.contains("+"))
        {
            result=a1+a2;

        }
        else if(suoyou.contains("-"))
        {
            result=a1-a2;

        }
        else if(suoyou.contains("*"))
        {
            result=a1*a2;

        }
        else if(suoyou.contains("/"))
        {
            result=a1/a2;

        }
        //将计算的结果,用字符串在显示屏中显示
        String jjj=String.valueOf(result);
        b_xianshi.setText(jjj);

    }
}


此文是基于慕课网学习,自己实战得来的哦~~~


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值