基于安卓的小型计算器

本文分享了一个小型安卓计算器的开发过程,包括界面设计、按键监听、计算逻辑实现等关键步骤,帮助开发者快速上手安卓应用开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	在学安卓的过程中,自己写点小软件很有成就感,并且能通过写软件得到只有程序员才懂得快乐。下面是我在学安卓中的小型计算器,贴出来和大家共享。

本计算器实现了简单的加减乘除。主要通过用两个变量value1和value2存储符号两边的数,在点击符号之前算出符号之前的数,为了便于与之相加。下面主要就是实现键盘的监听,与计算了。

          string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, BruceCaculatorActivity!</string>
    <string name="app_name">计算器</string>
    <string name="num9">9</string>
    <string name="num8">8</string>
    <string name="num7">7</string>
    <string name="num6">6</string>
    <string name="num5">5</string>
    <string name="num4">4</string>
    <string name="num3">3</string>
    <string name="num2">2</string>
    <string name="num1">1</string>
    <string name="num0">0</string>
    <string name="bPlus">+</string>
    <string name="bMinus">-</string>
    <string name="bMultiply">×</string>
    <string name="bDevide">÷</string>
    <string name="bEqual">=</string>
    <string name="bPoint">.</string>
    <string name="bClear">Clear</string>
</resources>

布局采用了两个xml

  一个是main.xml,一个是an_niu.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
</LinearLayout>

下面是an_niu.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
    <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:layout_marginTop="20px">
        <EditText android:layout_weight="1" android:layout_height="60dp" android:layout_width="wrap_content" android:id="@+id/answer">
            <requestFocus></requestFocus>
        </EditText>
    </LinearLayout>
    <RelativeLayout
          xmlns:android="http://schemas.android.com/apk/res/android"
		  android:orientation="horizontal"
		  android:layout_width="match_parent"
		  android:layout_height="80dp">
        <Button android:text="@string/bClear" android:layout_height="wrap_content" android:layout_width="150dp" android:id="@+id/bClear" android:layout_alignParentRight="true" android:layout_marginTop="20dp"></Button>
    </RelativeLayout>
    <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout2" android:layout_marginTop="0px">
        <Button android:text="@string/num7" android:textSize="40sp"   android:id="@+id/num7" android:layout_width="80dp" android:layout_height="80dp" ></Button>
        <Button android:text="@string/num8" android:textSize="40sp"  android:id="@+id/num8" android:layout_width="80dp" android:layout_height="80dp" ></Button>
        <Button android:text="@string/num9" android:textSize="40sp"  android:id="@+id/num9" android:layout_width="80dp" android:layout_height="80dp" ></Button>
        <Button android:text="@string/bDevide" android:textSize="40sp"  android:id="@+id/bDevide" android:layout_width="80dp" android:layout_height="80dp" ></Button>
    </LinearLayout>
    <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout3" android:layout_marginTop="0px">
        <Button android:text="@string/num4" android:textSize="40sp"  android:id="@+id/num4" android:layout_width="80dp" android:layout_height="80dp" ></Button>
        <Button android:text="@string/num5" android:textSize="40sp"  android:id="@+id/num5" android:layout_width="80dp" android:layout_height="80dp" ></Button>
        <Button android:text="@string/num6" android:textSize="40sp"  android:id="@+id/num6" android:layout_width="80dp" android:layout_height="80dp" ></Button>
        <Button android:text="@string/bMultiply" android:textSize="40sp"   android:id="@+id/bMultiply" android:layout_width="80dp" android:layout_height="80dp"></Button>
    </LinearLayout>
    <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout4" android:layout_marginTop="0px">
        <Button android:text="@string/num1" android:textSize="40sp"  android:id="@+id/num1" android:layout_width="80dp"   android:layout_height="80dp" ></Button>
        <Button android:text="@string/num3" android:textSize="40sp"   android:id="@+id/num2" android:layout_width="80dp"   android:layout_height="80dp" ></Button>
        <Button android:text="@string/num3" android:textSize="40sp"   android:id="@+id/num3" android:layout_width="80dp"   android:layout_height="80dp" ></Button>
        <Button android:text="@string/bMinus" android:textSize="40sp"   android:id="@+id/bMinus" android:layout_width="80dp"   android:layout_height="80dp" ></Button>
    </LinearLayout>
    <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout5"   android:layout_marginTop="0px">
        <Button android:text="@string/bPoint" android:textSize="40sp"  android:id="@+id/bPoint" android:layout_width="80dp"   android:layout_height="80dp" ></Button>
        <Button android:text="@string/num0" android:textSize="40sp"   android:id="@+id/num0" android:layout_width="80dp"  android:layout_height="80dp"></Button>
        <Button android:text="@string/bEqual" android:textSize="40sp"   android:id="@+id/bEqual" android:layout_width="80dp"  android:layout_height="80dp" ></Button>
        <Button android:text="@string/bPlus" android:textSize="40sp"   android:id="@+id/bPlus" android:layout_width="80dp"   android:layout_height="80dp" ></Button>
    </LinearLayout>
    
</LinearLayout>
最重要的就是实现了,下面是mainActivity.java

package your.dccapp.namespace;

import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.AdapterView.OnItemClickListener;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class mainActivity extends Activity {
	
	private Button num1=null;
	private Button num2=null;
	private Button num3=null;
	private Button num4=null;
	private Button num5=null;
	private Button num6=null;
	private Button num7=null;
	private Button num8=null;
	private Button num9=null;
	private Button num0=null;
	private Button bPlus=null;
	private Button bMinus=null;
	private Button bMultiply=null;
	private Button bDevide=null;
	private Button bEqual=null;
	private Button bPoint=null;
	private Button bClear=null;
	private EditText answerValue;
	String value1,value2,temp;//存储两个操作数
	int flag=0;//存储四则运算符号
	boolean over=true;//判断有无除零溢出
	float answer=0;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.an_niu);//显示界面	
        value1="";
        value2="";
        num0=(Button)findViewById(R.id.num0);
        num1=(Button)findViewById(R.id.num1);
        num2=(Button)findViewById(R.id.num2);
        num3=(Button)findViewById(R.id.num3);
        num4=(Button)findViewById(R.id.num4);
        num5=(Button)findViewById(R.id.num5);
        num6=(Button)findViewById(R.id.num6);
        num7=(Button)findViewById(R.id.num7);
        num8=(Button)findViewById(R.id.num8);
        num9=(Button)findViewById(R.id.num9);
        bPlus=(Button)findViewById(R.id.bPlus);
        bMinus=(Button)findViewById(R.id.bMinus);
        bMultiply=(Button)findViewById(R.id.bMultiply);
        bDevide=(Button)findViewById(R.id.bDevide);
        bEqual=(Button)findViewById(R.id.bEqual);
        bPoint=(Button)findViewById(R.id.bPoint);
        bClear=(Button)findViewById(R.id.bClear);
        answerValue=(EditText)findViewById(R.id.answer);
        
        //下面是各项功能监听了
        bPlus.setOnClickListener(new OnClickListener()//Plus
        {
        	public void onClick(View v){
        		if(flag==0){
            		flag=1;
            		answerValue.setText(value1+"+");        			
        		}
        		else{
        			float m=caculate();
        			value1=""+m;
        			value2="";
        			flag=1;
        			answerValue.setText(value1+"+");
        		}
        	}    	
        });
        bMinus.setOnClickListener(new OnClickListener()//Minus
        {
        	public void onClick(View v){
        		if(flag==0){
            		flag=2;
            		answerValue.setText(value1+"-");        			
        		}
        		else{
        			float m=caculate();
        			value1=""+m;
        			value2="";
        			flag=2;
        			answerValue.setText(value1+"-"); 
        		}
        	}    	
        });
        bMultiply.setOnClickListener(new OnClickListener()//Multiply
        {
        	public void onClick(View v){
        		if(flag==0){
            		flag=3;
            		answerValue.setText(value1+"×");        			
        		}
        		else{
        			float m=caculate();
        			value1=""+m;
        			value2="";
        			flag=3;
        			answerValue.setText(value1+"×");
        		}
        	}    	
        });
        bDevide.setOnClickListener(new OnClickListener()//Devide
        {
        	public void onClick(View v){
        		if(flag==0){
            		flag=4;
            		answerValue.setText(value1+"÷");        			
        		}
        		else{
        			float m=caculate();
        			value1=""+m;
        			value2="";
        			flag=4;
        			answerValue.setText(value1+"÷"); 
        		}
        	}    	
        });
        num0.setOnClickListener(new OnClickListener(){
        	public void onClick(View v){
        		if(flag==0){
        			value1=value1+"0";
        			answerValue.setText(value1);
        		}
        		else{
        			temp=value2;value2="0";
        			answerValue.append(value2);
        			value2+=temp;
        		}       		
        	}    	
        });
        num1.setOnClickListener(new OnClickListener(){
        	public void onClick(View v){
        		if(flag==0){
        			value1=value1+"1";
        			answerValue.setText(value1);
        		}
        		else{
        			temp=value2;value2="1";
        			answerValue.append(value2);
        			value2+=temp;
        		}       		
        	}    	
        });
        num2.setOnClickListener(new OnClickListener(){
        	public void onClick(View v){
        		if(flag==0){
        			value1=value1+"2";
        			answerValue.setText(value1);
        		}
        		else{
        			temp=value2;value2="2";
        			answerValue.append(value2);
        			value2+=temp;
        		}       		
        	}    	
        });
        num3.setOnClickListener(new OnClickListener(){
        	public void onClick(View v){
        		if(flag==0){
        			value1=value1+"3";
        			answerValue.setText(value1);
        		}
        		else{
        			temp=value2;value2="3";
        			answerValue.append(value2);
        			value2+=temp;
        		}       		
        	}    	
        });
        num4.setOnClickListener(new OnClickListener(){
        	public void onClick(View v){
        		if(flag==0){
        			value1=value1+"4";
        			answerValue.setText(value1);
        		}
        		else{
        			temp=value2;value2="4";
        			answerValue.append(value2);
        			value2+=temp;
        		}       		
        	}    	
        });
        num5.setOnClickListener(new OnClickListener(){
        	public void onClick(View v){
        		if(flag==0){
        			value1=value1+"5";
        			answerValue.setText(value1);
        		}
        		else{
        			temp=value2;value2="5";
        			answerValue.append(value2);
        			value2+=temp;
        		}       		
        	}    	
        });
        num6.setOnClickListener(new OnClickListener(){
        	public void onClick(View v){
        		if(flag==0){
        			value1=value1+"6";
        			answerValue.setText(value1);
        		}
        		else{
        			temp=value2;value2="6";
        			answerValue.append(value2);
        			value2+=temp;
        		}       		
        	}    	
        });
        num7.setOnClickListener(new OnClickListener(){
        	public void onClick(View v){
        		if(flag==0){
        			value1=value1+"7";
        			answerValue.setText(value1);
        		}
        		else{
        			temp=value2;value2="7";
        			answerValue.append(value2);
        			value2+=temp;
        		}       		
        	}    	
        });
        num8.setOnClickListener(new OnClickListener(){
        	public void onClick(View v){
        		if(flag==0){
        			value1=value1+"8";
        			answerValue.setText(value1);
        		}
        		else{
        			temp=value2;value2="8";
        			answerValue.append(value2);
        			value2+=temp;
        		}       		
        	}    	
        });
        num9.setOnClickListener(new OnClickListener(){
        	public void onClick(View v){
        		if(flag==0){
        			value1=value1+"9";
        			answerValue.setText(value1);
        		}
        		else{
        			temp=value2;value2="9";
        			answerValue.append(value2);
        			value2+=temp;
        		}       		
        	}    	
        });
        bPoint.setOnClickListener(new OnClickListener(){
        	public void onClick(View v){
        		if(flag==0){
        			value1=value1+".";
        			answerValue.setText(value1);
        		}
        		else{
        			value2=value2+".";
        			answerValue.setText(value2);
        		}       		
        	}    	
        });
        
        
        bEqual.setOnClickListener(new OnClickListener(){
        	public void onClick(View v){
        		if(flag==0){
        			answerValue.setText(value1);
        		}
        		else{
        			caculate();     			
        		}
        	}
        });
        bClear.setOnClickListener(new OnClickListener(){
        	public void onClick(View v){
        		value1="";
        		value2="";
        		flag=0;
        		answerValue.setText("");
        	}
        });
    }//endofonCreate
		
		
	float caculate()
    {
		float a,b;
		a=Float.parseFloat(value1);
		b=Float.parseFloat(value2);
		//a=Integer.parseInt(value1);
		//b=Integer.parseInt(value2);
		switch (flag){
		case 1:answer=a+b;answerValue.setText(""+answer);value1="";value2="";flag=0;break;
		case 2:answer=a-b;answerValue.setText(""+answer);value1="";value2="";flag=0;break;
		case 3:answer=a*b;answerValue.setText(""+answer);value1="";value2="";flag=0;break;
		case 4:
			if(b==0){
				answerValue.setText("error");
			    value1="";
		     	value2="";
			    flag=0;
			    }
			else{
				answer=a/b;
				value1="";
				value2="";
				flag=0;
				answerValue.setText(""+answer);
			};break;
		default:break;
		}  
		return answer;
    }
}//endofClassDefine
整个计算器 就实现了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值