zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

从零开始学android实现计算器功能示例分享(计算器源码)

Android源码 实现 功能 示例 分享 从零开始 计算器
2023-06-13 09:15:17 时间

下面是效果展示:



复制代码代码如下:


<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical">

   <LinearLayoutandroid:layout_width="fill_parent"
   android:layout_height="wrap_content">
 <TextView 
    android:id="@+id/tvResult"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:height="50dp"
    android:text="@string/tvResult"
    />
</LinearLayout>
<LinearLayoutandroid:layout_width="fill_parent"
   android:layout_height="wrap_content">
   <Button
       android:id="@+id/btnBackspace"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:width="150dp"
       android:layout_marginLeft="10dp"
            android:text="@string/btnbackspace"/>
     <Button
       android:id="@+id/btnCE"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
        android:width="150dp"
            android:text="@string/btnCE"/>
</LinearLayout>
<LinearLayoutandroid:layout_width="fill_parent"
   android:layout_height="wrap_content">
     <Button
       android:id="@+id/btn7"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginLeft="10dp"
        android:width="75dp"
            android:text="@string/btn7"/>
        <Button
       android:id="@+id/btn8"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
        android:width="75dp"
            android:text="@string/btn8"/>
              <Button
       android:id="@+id/btn9"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
        android:width="75dp"
            android:text="@string/btn9"/>
                    <Button
       android:id="@+id/btnDiv"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
        android:width="75dp"
            android:text="@string/btnDiv"/>
</LinearLayout>
<LinearLayoutandroid:layout_width="fill_parent"
   android:layout_height="wrap_content">
     <Button
       android:id="@+id/btn4"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginLeft="10dp"
        android:width="75dp"
            android:text="@string/btn4"/>
        <Button
       android:id="@+id/btn5"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
        android:width="75dp"
            android:text="@string/btn5"/>
              <Button
       android:id="@+id/btn6"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
        android:width="75dp"
            android:text="@string/btn6"/>
                    <Button
       android:id="@+id/btnMul"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
        android:width="75dp"
            android:text="@string/btnMul"/>
</LinearLayout>
<LinearLayoutandroid:layout_width="fill_parent"
   android:layout_height="wrap_content">
     <Button
       android:id="@+id/btn1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginLeft="10dp"
        android:width="75dp"
            android:text="@string/btn1"/>
        <Button
       android:id="@+id/btn2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
        android:width="75dp"
            android:text="@string/btn2"/>
              <Button
       android:id="@+id/btn3"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
        android:width="75dp"
            android:text="@string/btn3"/>
                    <Button
       android:id="@+id/btnAdd"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
        android:width="75dp"
            android:text="@string/btnAdd"/>
</LinearLayout>
<LinearLayoutandroid:layout_width="fill_parent"
   android:layout_height="wrap_content">
     <Button
       android:id="@+id/btn0"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginLeft="10dp"
        android:width="75dp"
            android:text="@string/btn0"/>
        <Button
       android:id="@+id/btnC"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
        android:width="75dp"
            android:text="@string/btnC"/>
              <Button
       android:id="@+id/btnEqu"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
        android:width="75dp"
            android:text="@string/btnEqu"/>
                    <Button
       android:id="@+id/btnSub"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
        android:width="75dp"
            android:text="@string/btnSub"/>
</LinearLayout>
</LinearLayout>

复制代码代码如下:


packagecom.example.week2;

importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.TextView;
importandroid.app.Activity;

publicclassMainActivityextendsActivity implementsOnClickListener{

   //声明一些控件
   Buttonbtn0=null;
   Buttonbtn1=null;
   Buttonbtn2=null;
   Buttonbtn3=null;
   Buttonbtn4=null;
   Buttonbtn5=null;
   Buttonbtn6=null;
   Buttonbtn7=null;
   Buttonbtn8=null;
   Buttonbtn9=null;
   ButtonbtnBackspace=null;
   ButtonbtnCE=null;
   ButtonbtnC=null;
   ButtonbtnAdd=null;
   ButtonbtnSub=null;
   ButtonbtnMul=null;
   ButtonbtnDiv=null;
   ButtonbtnEqu=null;
   TextViewtvResult=null;
   //声明两个参数。接收tvResult前后的值
   doublenum1=0,num2=0;
   doubleResult=0;//计算结果
   intop=0;//判断操作数,
   booleanisClickEqu=false;//判断是否按了“=”按钮

   @Override
   protectedvoidonCreate(BundlesavedInstanceState){
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       //从布局文件中获取控件,
       btn0=(Button)findViewById(R.id.btn0);
       btn1=(Button)findViewById(R.id.btn1);
       btn2=(Button)findViewById(R.id.btn2);
       btn3=(Button)findViewById(R.id.btn3);
       btn4=(Button)findViewById(R.id.btn4);
       btn5=(Button)findViewById(R.id.btn5);
       btn6=(Button)findViewById(R.id.btn6);
       btn7=(Button)findViewById(R.id.btn7);
       btn8=(Button)findViewById(R.id.btn8);
       btn9=(Button)findViewById(R.id.btn9);
       btnBackspace=(Button)findViewById(R.id.btnBackspace);
       btnCE=(Button)findViewById(R.id.btnCE);
       btnC=(Button)findViewById(R.id.btnC);
       btnEqu=(Button)findViewById(R.id.btnEqu);
       btnAdd=(Button)findViewById(R.id.btnAdd);
       btnSub=(Button)findViewById(R.id.btnSub);
       btnMul=(Button)findViewById(R.id.btnMul);
       btnDiv=(Button)findViewById(R.id.btnDiv);
       tvResult=(TextView)findViewById(R.id.tvResult);

       //添加监听\
       btnBackspace.setOnClickListener(this);
       btnCE.setOnClickListener(this);

       btn0.setOnClickListener(this);
       btn1.setOnClickListener(this);
       btn2.setOnClickListener(this);
       btn3.setOnClickListener(this);
       btn4.setOnClickListener(this);
       btn5.setOnClickListener(this);
       btn6.setOnClickListener(this);
       btn7.setOnClickListener(this);
       btn8.setOnClickListener(this);
       btn9.setOnClickListener(this);

       
       btnAdd.setOnClickListener(this);
       btnSub.setOnClickListener(this);
       btnMul.setOnClickListener(this);
       btnDiv.setOnClickListener(this);
       btnEqu.setOnClickListener(this);
   }
   @Override
   publicvoidonClick(Viewv){
       switch(v.getId()){
       //btnBackspace和CE--------------------
       caseR.id.btnBackspace:
           StringmyStr=tvResult.getText().toString();
           try{
               tvResult.setText(myStr.substring(0,myStr.length()-1));
           }catch(Exceptione){
               tvResult.setText("");
           }

           break;
       caseR.id.btnCE:
           tvResult.setText(null);
           break;

           //btn0--9---------------------------
       caseR.id.btn0:
           if(isClickEqu)
           {
               tvResult.setText(null);
               isClickEqu=false;
           }
           StringmyString=tvResult.getText().toString();
           myString+="0";
           tvResult.setText(myString);
           break;
       caseR.id.btn1:
           if(isClickEqu)
           {
               tvResult.setText(null);
               isClickEqu=false;
           }
           StringmyString1=tvResult.getText().toString();
           myString1+="1";
           tvResult.setText(myString1);
           break;
       caseR.id.btn2:
           if(isClickEqu)
           {
               tvResult.setText(null);
               isClickEqu=false;
           }
           StringmyString2=tvResult.getText().toString();
           myString2+="2";
           tvResult.setText(myString2);
           break;
       caseR.id.btn3:
           if(isClickEqu)
           {
               tvResult.setText(null);
               isClickEqu=false;
           }
           StringmyString3=tvResult.getText().toString();
           myString3+="3";
           tvResult.setText(myString3);
           break;
       caseR.id.btn4:
           if(isClickEqu)
           {
               tvResult.setText(null);
               isClickEqu=false;
           }
           StringmyString4=tvResult.getText().toString();
           myString4+="4";
           tvResult.setText(myString4);
           break;
       caseR.id.btn5:
           if(isClickEqu)
           {
               tvResult.setText(null);
               isClickEqu=false;
           }
           StringmyString5=tvResult.getText().toString();
           myString5+="5";
           tvResult.setText(myString5);
           break;
       caseR.id.btn6:
           if(isClickEqu)
           {
               tvResult.setText(null);
               isClickEqu=false;
           }
           StringmyString6=tvResult.getText().toString();
           myString6+="6";
           tvResult.setText(myString6);
           break;
       caseR.id.btn7:
           if(isClickEqu)
           {
               tvResult.setText(null);
               isClickEqu=false;
           }
           StringmyString7=tvResult.getText().toString();
           myString7+="7";
           tvResult.setText(myString7);
           break;
       caseR.id.btn8:
           if(isClickEqu)
           {
               tvResult.setText(null);
               isClickEqu=false;
           }
           StringmyString8=tvResult.getText().toString();
           myString8+="8";
           tvResult.setText(myString8);
           break;
       caseR.id.btn9:
           if(isClickEqu)
           {
               tvResult.setText(null);
               isClickEqu=false;
           }
           StringmyString9=tvResult.getText().toString();
           myString9+="9";
           tvResult.setText(myString9);
           break;

           //btn+-*/=--------------------------------
       caseR.id.btnAdd:           
           StringmyStringAdd=tvResult.getText().toString();
           if(myStringAdd.equals(null))
           {
               return;
           }
           num1=Double.valueOf(myStringAdd);
           tvResult.setText(null);
           op=1;
           isClickEqu=false;
           break;

       caseR.id.btnSub:
           StringmyStringSub=tvResult.getText().toString();
           if(myStringSub.equals(null))
           {
               return;
           }
           num1=Double.valueOf(myStringSub);
           tvResult.setText(null);
           op=2;
           isClickEqu=false;
           break;
       caseR.id.btnMul:
           StringmyStringMul=tvResult.getText().toString();
           if(myStringMul.equals(null))
           {
               return;
           }
           num1=Double.valueOf(myStringMul);
           tvResult.setText(null);
           op=3;
           isClickEqu=false;
           break;
       caseR.id.btnDiv:
           StringmyStringDiv=tvResult.getText().toString();
           if(myStringDiv.equals(null))
           {
               return;
           }
           num1=Double.valueOf(myStringDiv);
           tvResult.setText(null);
           op=4;
           isClickEqu=false;
           break;
       caseR.id.btnEqu:
           StringmyStringEqu=tvResult.getText().toString();
           if(myStringEqu.equals(null))
           {
               return;
           }
           num2=Double.valueOf(myStringEqu);
           tvResult.setText(null);
           switch(op){
           case0:
               Result=num2;
               break;
           case1:
               Result=num1+num2;
               break;
           case2:
               Result=num1-num2;
               break;
           case3:
               Result=num1*num2;
               break;
           case4:
               Result=num1/num2;
               break;
           default:
               Result=0;
               break;
           }
           tvResult.setText(String.valueOf(Result));
           isClickEqu=true;
           break;

       default:
           break;
       }
   }
}