在学安卓的过程中,自己写点小软件很有成就感,并且能通过写软件得到只有程序员才懂得快乐。下面是我在学安卓中的小型计算器,贴出来和大家共享。
本计算器实现了简单的加减乘除。主要通过用两个变量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
整个计算器 就实现了。