Android简单的计算器项目稳定版本

基于Android studio和java开发的计算器

具体模块有:启动页,第一次安装引导页(只在第一次安装软件时候出现)和计算器主界面

可以在主界面按返回键两次才返回

看网上的相关软件都不完善功能也较少,网上大多都是没有启动页只有一个主界面的,于是就自己写了一个功能全面的。

启动页:3s时长  

引导界面(只在第一次安装软件出现):

 

计算器主界面:

 

计算器页面布局代码:

<?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:background="@color/white"
    android:orientation="vertical"
    android:padding="5dp">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:orientation="vertical">
            <TextView
                android:id="@+id/tv1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:lines="5"
                android:scrollbars="vertical"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:textSize="50dp"
                android:gravity="right|bottom"
                android:textColor="@color/black"
                android:text="0"/>
        </LinearLayout>
    </ScrollView>
            <GridLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:columnCount="3"
                android:rowCount="1">
                <Button
                    android:id="@+id/cancel"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="C"
                    android:background="@drawable/btn_bg"

                    android:textColor="#FF6600"
                    android:textSize="@dimen/button_font"/>
                <Button
                    android:id="@+id/multiply"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:background="@drawable/btn_bg"
                    android:gravity="center"
                    android:text="×"
                    android:textColor="#CC6600"
                    android:textSize="@dimen/button_font"/>
                <Button
                    android:id="@+id/division"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:background="@drawable/btn_bg"
                    android:text="÷"
                    android:textColor="#CC6600"
                    android:textSize="@dimen/button_font"/>


            </GridLayout>
    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:columnCount="4"
        android:rowCount="5">
                <Button
                    android:id="@+id/number7"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:background="@drawable/btn_bg"
                    android:text="7"
                    android:textColor="@color/black"
                    android:textSize="@dimen/button_font"/>
                <Button
                    android:id="@+id/number8"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:background="@drawable/btn_bg"
                    android:text="8"
                    android:textColor="@color/black"
                    android:textSize="@dimen/button_font"/>
                <Button
                    android:id="@+id/number9"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:background="@drawable/btn_bg"
                    android:text="9"
                    android:textColor="@color/black"
                    android:textSize="@dimen/button_font"/>
                <Button
                    android:id="@+id/add"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:background="@drawable/btn_bg"
                    android:gravity="center"
                    android:text="+"
                    android:textColor="#CC6600"
                    android:textSize="@dimen/button_font"/>
                <Button
                    android:id="@+id/number4"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:background="@drawable/btn_bg"
                    android:text="4"
                    android:textColor="@color/black"
                    android:textSize="@dimen/button_font"/>
                <Button
                    android:id="@+id/number5"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:background="@drawable/btn_bg"
                    android:text="5"
                    android:textColor="@color/black"
                    android:textSize="@dimen/button_font"/>
                <Button
                    android:id="@+id/number6"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:background="@drawable/btn_bg"
                    android:text="6"
                    android:textColor="@color/black"
                    android:textSize="@dimen/button_font"/>
                <Button
                    android:id="@+id/sub"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:background="@drawable/btn_bg"
                    android:text="-"
                    android:textColor="#CC6600"
                    android:textSize="@dimen/button_font"/>
                <Button
                    android:id="@+id/number1"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:background="@drawable/btn_bg"
                    android:text="1"
                    android:textColor="@color/black"
                    android:textSize="@dimen/button_font"/>
                <Button
                    android:id="@+id/number2"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:background="@drawable/btn_bg"
                    android:text="2"
                    android:textColor="@color/black"
                    android:textSize="@dimen/button_font"/>
                <Button
                    android:id="@+id/number3"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:background="@drawable/btn_bg"
                    android:text="3"
                    android:textColor="@color/black"
                    android:textSize="@dimen/button_font"/>

                <Button
                    android:id="@+id/sqrt"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:background="@drawable/btn_bg"
                    android:text="√"
                    android:textColor="#CC6600"
                    android:textSize="@dimen/button_font"/>
                <Button
                    android:id="@+id/sem"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:background="@drawable/btn_bg"
                    android:text="1/x"
                    android:textColor="@color/black"
                    android:textSize="@dimen/button_font"/>
                <Button
                    android:id="@+id/number0"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:background="@drawable/btn_bg"
                    android:text="0"
                    android:textColor="@color/black"
                    android:textSize="@dimen/button_font"/>
                <Button
                    android:id="@+id/point"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:background="@drawable/btn_bg"
                    android:text="."
                    android:textColor="@color/black"
                    android:textSize="@dimen/button_font"/>
                <Button
                    android:id="@+id/equal"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/button_height"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:background="@drawable/btn_bg"
                    android:text="="
                    android:textColor="#CC6600"
                    android:textSize="@dimen/button_font"/>

            </GridLayout>

        </LinearLayout>





计算器功能实现部分代码。




public class MainActivity2 extends AppCompatActivity implements View.OnClickListener {

    private TextView tv1;
    private String firstNum="";
    private String secondNum="";
    private String operator="";
    private String result="";
    private String showText="";
    private long mExitTime=0;
    int i=0;
    int j=0;
    int k=0;





    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        tv1 = findViewById(R.id.tv1);
        findViewById(R.id.cancel).setOnClickListener(this);
        findViewById(R.id.division).setOnClickListener(this);
        findViewById(R.id.multiply).setOnClickListener(this);
        findViewById(R.id.number7).setOnClickListener(this);
        findViewById(R.id.number8).setOnClickListener(this);
        findViewById(R.id.number9).setOnClickListener(this);
        findViewById(R.id.add).setOnClickListener(this);
        findViewById(R.id.number4).setOnClickListener(this);
        findViewById(R.id.number5).setOnClickListener(this);
        findViewById(R.id.number6).setOnClickListener(this);
        findViewById(R.id.sub).setOnClickListener(this);
        findViewById(R.id.number1).setOnClickListener(this);
        findViewById(R.id.number2).setOnClickListener(this);
        findViewById(R.id.number3).setOnClickListener(this);
        findViewById(R.id.sqrt).setOnClickListener(this);
        findViewById(R.id.sem).setOnClickListener(this);
        findViewById(R.id.number0).setOnClickListener(this);
        findViewById(R.id.point).setOnClickListener(this);
        findViewById(R.id.equal).setOnClickListener(this);

    }

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
            // 按下BACK,同时没有重复
            Log.d("HT", "onKeyDown()");
            exit();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    public void exit() {
        Log.d("Timess", "" + (System.currentTimeMillis() - mExitTime) );
        if ((System.currentTimeMillis() - mExitTime) > 2000) {
            Toast.makeText(this, "再按一次退出应用", Toast.LENGTH_SHORT).show();

            mExitTime = System.currentTimeMillis();

        } else {
            Toast.makeText(this, "退出应用", Toast.LENGTH_SHORT).show();
           finish();// app为Application的子类的对象,参考我的另一个博客
        }

    }



    @Override
    public void onClick(View view) {
        String inputText;

        if (view.getId()==R.id.sqrt){
            inputText="√";

        }
        else {
            inputText=(((TextView)view).getText().toString());
        }
        switch (view.getId()){
            case R.id.cancel:
                clear();
                break;
            case R.id.add:
            case R.id.sub:
            case R.id.division:
            case R.id.multiply:
                try {
                    i=0;
                    k=1;
                    operator=inputText;
                    refreshText(showText+operator);
                } catch (Exception e) {
                    refreshText("出错啦!请正确使用");
                }

                break;

            case R.id.equal:

               
                    if (operator.length()>0&&secondNum==""){
                        refreshText("出错啦!请正确使用");
                    }
                    else if (firstNum==""&&secondNum==""){
                        refreshText("出错啦!请正确使用");
                    }
                    else if ((firstNum.length()>0)&&(secondNum=="")&&j==0&&i==0){
                        refreshText(showText+"="+showText);
                    }
                    else if (j==1){
                        refreshText(showText+"="+result);
                        j=0;

                    }

                    else {
                        double calculate_result = calculaterFour();
                        refreshOperate(String.valueOf(calculate_result));
                        refreshText(showText + "=" + result);
                    }
                } 


                break;
            case R.id.sqrt:

             
                    if (firstNum.length()==0&&secondNum.length()==0){
                        refreshText("出错啦!请正确使用");
                    }
                    else if (k==1){
                        refreshText("出错啦!请先输入数字再输入√");
                        k=0;

                    }
                   
                    else {
                    double sqrt_result=Math.sqrt(Double.parseDouble(firstNum));
                          i=1;
                          k=0;
                        //refreshOperate(String.valueOf(sqrt_result));
                        secondNum=String.valueOf(sqrt_result);
                        refreshText(showText+"√");}
                
                break;
            case R.id.sem:
                
                    if (firstNum.length()==0&&secondNum.length()==0){
                        refreshText("出错啦!请正确使用");
                    }
                    else if (firstNum.length()!=0&&secondNum.length()!=0){
                        double sem=1.0/Double.parseDouble(secondNum);
                        secondNum=String.valueOf(sem);
                        refreshText(showText+"/1");

                    }
                    else if (k==1){
                        refreshText("出错啦!请先输入数字再输入/1");
                        k=0;

                    }
                    else {
                    j=1;
                    double sem=1.0/Double.parseDouble(firstNum);
                    refreshOperate(String.valueOf(sem));
                    refreshText(showText+"/1");


                    }
                } 
                break;
                //点击数字和小数点
             default:
                
                     if (result.length()>0&&operator.equals("")){
                         clear();
                         k=0;
                     }
                     if (operator.equals("")){
                         firstNum=firstNum+inputText;
                         k=0;
                     }
                     else {
                         secondNum=secondNum+inputText;
                         k=0;
                     }
                     if (inputText.equals(".")){
                         //refreshText(inputText);

                         refreshText(showText +inputText);
                         k=0;

                     }
                     /*if (showText.equals("0")&&inputText.equals(".")){
                         //refreshText(inputText);
                         refreshText(showText + "2"+inputText);
                     }*/
                     else {

                         refreshText(showText +inputText);
                         k=0;


                     }
                 } 
                 break;

        }


    }

    private double calculaterFour() {
        switch (operator){
            case"+":
                return Double.parseDouble(firstNum)+Double.parseDouble(secondNum);
            case"-":
                return Double.parseDouble(firstNum)-Double.parseDouble(secondNum);
            case"×":
                return Double.parseDouble(firstNum)*Double.parseDouble(secondNum);
           default:
                return Double.parseDouble(firstNum)/Double.parseDouble(secondNum);
        }
    }

    private void clear() {
        refreshOperate("");
        refreshText("");
    }
    private void refreshOperate(String new_result){
        result=new_result;
        firstNum=result;
        secondNum="";
        operator="";
    }

    private void refreshText(String text){
        showText=text;
        tv1.setText(showText);

    }
}

经过后来修改,没有bug的版本在下面链接。

附上项目下载链接:Android项目基于Androidstudio开发的计算器软件-Android文档类资源-CSDN下载

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

To油

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值