<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="170dip"
android:background="@drawable/hint"
android:inputType="number"
android:maxLines="4"
android:textSize="60sp"
android:gravity="center"
android:paddingLeft="18dp"
android:paddingRight="24dp"
android:textColor="#00ff7f" />
<Button
android:id="@+id/MyButon0"
android:layout_width="71dip"
android:layout_height="wrap_content"
android:layout_below="@id/text"
android:textColor="#FF0000"
android:textSize="60sp"
android:text="@string/zero"
/>
<Button
android:id="@+id/MyButon1"
android:layout_width="71dip"
android:layout_height="wrap_content"
android:layout_below="@id/text"
android:layout_toRightOf="@id/MyButon0"
android:textColor="#FF0000"
android:text="@string/one"
android:textSize="60sp"
/>
<Button
android:id="@+id/MyButon2"
android:layout_width="71dip"
android:layout_height="wrap_content"
android:layout_below="@id/text"
android:layout_toRightOf="@id/MyButon1"
android:textColor="#FF0000"
android:text="@string/two"
android:textSize="60sp"
/>
<Button
android:id="@+id/MyButon3"
android:layout_width="71dip"
android:layout_height="wrap_content"
android:layout_below="@id/text"
android:layout_toRightOf="@id/MyButon2"
android:textColor="#FF0000"
android:text="@string/three"
android:textSize="60sp"
/>
<Button
android:id="@+id/MyButon4"
android:layout_width="71dip"
android:layout_height="wrap_content"
android:layout_below="@id/text"
android:layout_toRightOf="@id/MyButon3"
android:textColor="#FF0000"
android:text="@string/four"
android:textSize="60sp"
/>
<Button
android:id="@+id/MyButon5"
android:layout_width="71dip"
android:layout_height="wrap_content"
android:layout_below="@id/MyButon0"
android:textColor="#FF0000"
android:text="@string/five"
android:textSize="60sp"
/>
<Button
android:id="@+id/MyButon6"
android:layout_width="71dip"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/MyButon5"
android:layout_below="@id/MyButon1"
android:textColor="#FF0000"
android:text="@string/six"
android:textSize="60sp"
/>
<Button
android:id="@+id/MyButon7"
android:layout_width="71dip"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/MyButon6"
android:layout_below="@id/MyButon2"
android:textColor="#FF0000"
android:text="@string/seven"
android:textSize="60sp"
/>
<Button
android:id="@+id/MyButon8"
android:layout_width="71dip"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/MyButon7"
android:layout_below="@id/MyButon3"
android:textColor="#FF0000"
android:text="@string/eight"
android:textSize="60sp"
/>
<Button
android:id="@+id/MyButon9"
android:layout_width="71dip"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/MyButon8"
android:layout_below="@id/MyButon3"
android:textColor="#FF0000"
android:text="@string/nine"
android:textSize="60sp"
/>
<Button
android:id="@+id/ADD"
android:layout_width="71dip"
android:layout_height="wrap_content"
android:layout_below="@id/MyButon5"
android:textColor="#FF0000"
android:text="@string/add"
android:textSize="60sp"
/>
<Button
android:id="@+id/SUB"
android:layout_width="71dip"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/ADD"
android:layout_below="@id/MyButon6"
android:textColor="#FF0000"
android:text="@string/sub"
android:textSize="60sp"
/>
<Button
android:id="@+id/MULTI"
android:layout_width="71dip"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/SUB"
android:layout_below="@id/MyButon7"
android:textColor="#FF0000"
android:text="@string/multi"
android:textSize="60sp"
/>
<Button
android:id="@+id/DIV"
android:layout_width="71dip"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/MULTI"
android:layout_below="@id/MyButon8"
android:textColor="#FF0000"
android:text="@string/div"
android:textSize="60sp"
/>
<Button
android:id="@+id/EQUE"
android:layout_width="71dip"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/DIV"
android:layout_below="@id/MyButon9"
android:textColor="#FF0000"
android:text="@string/eque"
android:textSize="60sp"
/>
<Button
android:id="@+id/opposite"
android:layout_width="71dip"
android:layout_height="90dip"
android:layout_below="@id/ADD"
android:layout_alignParentLeft="true"
android:text="@string/opposite"
android:textColor="#FF0000"
android:textSize="32sp" />
<Button
android:id="@+id/dot"
android:layout_width="71dip"
android:layout_height="90dip"
android:layout_below="@id/SUB"
android:layout_toRightOf="@id/opposite"
android:text="@string/dot"
android:textColor="#FF0000"
android:textSize="30sp"
android:gravity="center"
/>
<Button
android:id="@+id/CRL"
android:layout_width="71dip"
android:layout_height="90dip"
android:layout_below="@id/MULTI"
android:layout_toRightOf="@id/dot"
android:text="@string/clear"
android:textColor="#0000FF"
android:textSize="30sp" />
<Button
android:id="@+id/OFF"
android:layout_width="71dip"
android:layout_height="90dip"
android:layout_below="@id/DIV"
android:layout_toRightOf="@id/CRL"
android:text="@string/off"
android:textColor="#000000"
android:textSize="25sp" />
<Button
android:id="@+id/ON"
android:layout_width="71dip"
android:layout_height="90dip"
android:layout_below="@id/EQUE"
android:layout_toRightOf="@id/OFF"
android:text="@string/on"
android:textColor="#7fffd4"
android:textSize="30sp" />
</RelativeLayout >
启动文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.calculator"
android:versionCode="1"
android:versionName="1.0" ><uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" /> <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:anyDensity="true" /> <application android:allowBackup="true" android:icon="@drawable/calculate_icon" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.calculator.MainActivity" android:label="@string/app_name" android:screenOrientation="portrait" android:windowSoftInputMode="stateAlwaysHidden" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
</manifest>
资源文件string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="log">Hfl stduio for test\t</string>
<string name="app_name">Calculator</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="tips">please input nuber:</string>
<string name="opposite">+/-</string>
<string name="dot">.</string>
<string name="zero">0</string>
<string name="one">1</string>
<string name="two">2</string>
<string name="three">3</string>
<string name="four">4</string>
<string name="five">5</string>
<string name="six">6</string>
<string name="seven">7</string>
<string name="eight">8</string>
<string name="nine">9</string>
<string name="add">+</string>
<string name="sub">-</string>
<string name="multi">*</string>
<string name="div">/</string>
<string name="eque">=</string>
<string name="clear">C</string>
<string name="on">ON</string>
<string name="off">OFF</string>
</resources>
java源代码
package com.example.calculator;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.widget.*;
import android.text.InputType;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends ActionBarActivity {
EditText edit;
private int option = 0;//运算符状态
private boolean newdigital=false;//标记是否是新输入的数字
private double a=0,b=0;//两个相加的数
private boolean flag=false;
private int First=0;
private int dot=0;@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edit=(EditText)findViewById(R.id.text); edit.setInputType(InputType.TYPE_NULL); Button bt0=(Button)findViewById(R.id.MyButon0); Button bt1=(Button)findViewById(R.id.MyButon1); Button bt2=(Button)findViewById(R.id.MyButon2); Button bt3=(Button)findViewById(R.id.MyButon3); Button bt4=(Button)findViewById(R.id.MyButon4); Button bt5=(Button)findViewById(R.id.MyButon5); Button bt6=(Button)findViewById(R.id.MyButon6); Button bt7=(Button)findViewById(R.id.MyButon7); Button bt8=(Button)findViewById(R.id.MyButon8); Button bt9=(Button)findViewById(R.id.MyButon9); Button add=(Button)findViewById(R.id.ADD); Button sub=(Button)findViewById(R.id.SUB); Button multi=(Button)findViewById(R.id.MULTI); Button opp=(Button)findViewById(R.id.opposite); Button dot=(Button)findViewById(R.id.dot); Button div=(Button)findViewById(R.id.DIV); Button eque=(Button)findViewById(R.id.EQUE); Button crl=(Button)findViewById(R.id.CRL); Button on=(Button)findViewById(R.id.ON); Button off=(Button)findViewById(R.id.OFF); bt0.setOnClickListener(listener); bt1.setOnClickListener(listener); bt2.setOnClickListener(listener); bt3.setOnClickListener(listener); bt4.setOnClickListener(listener); bt5.setOnClickListener(listener); bt6.setOnClickListener(listener); bt7.setOnClickListener(listener); bt8.setOnClickListener(listener); bt9.setOnClickListener(listener); add.setOnClickListener(listener); sub.setOnClickListener(listener); multi.setOnClickListener(listener); div.setOnClickListener(listener); eque.setOnClickListener(listener); crl.setOnClickListener(listener); on.setOnClickListener(listener); off.setOnClickListener(listener); opp.setOnClickListener(listener); dot.setOnClickListener(listener); } private OnClickListener listener =new OnClickListener() { @Override public void onClick(View v) { String s; s = edit.getText().toString(); if((s.equals("0")==true)) { newdigital=true; } if(First>8) { edit.setText("FFFFFFFFF"); newdigital=true; First=0; dot=0; flag=false; return; } Button btx=(Button)v; switch(btx.getId()) { case R.id.ON: edit.setText("0"); First=0; flag=false; dot=0; break; case R.id.OFF: edit.setText("FFFFFFFFF"); First=0; flag=false; dot=0; newdigital=true; break; case R.id.CRL: edit.setText("0"); First=0; dot=0; flag=false; break; case R.id.opposite: if(s.length()==0) { a=0; b=0; option=0; newdigital=true; edit.setText(""); flag=false; dot=0; break; } else if(s!="") { a=Double.parseDouble(s); edit.setText(String.valueOf(-a)); newdigital=true; flag=false; dot=0; break; } case R.id.dot: if((s.equals("0")==true&&newdigital)||(First==0)) { flag=true; } if(newdigital) { s=""; newdigital=false; } if(dot==0) { dot++; if(flag) edit.setText("0."); else edit.setText(s+"."); } First++; break; case R.id.MyButon0: if(newdigital) { s=""; newdigital=false; } edit.setText(s+"0"); First++; break; case R.id.MyButon1: if(newdigital) { s=""; newdigital=false; } edit.setText(s+"1"); First++; break; case R.id.MyButon2: if(newdigital) { s=""; newdigital=false; } edit.setText(s+"2"); First++; break; case R.id.MyButon3: if(newdigital) { s=""; newdigital=false; } edit.setText(s+"3"); First++; break; case R.id.MyButon4: if(newdigital) { s=""; newdigital=false; } edit.setText(s+"4"); First++; break; case R.id.MyButon5: if(newdigital) { s=""; newdigital=false; } edit.setText(s+"5"); First++; break; case R.id.MyButon6: if(newdigital) { s=""; newdigital=false; } edit.setText(s+"6"); First++; break; case R.id.MyButon7: if(newdigital) { s=""; newdigital=false; } edit.setText(s+"7"); First++; break; case R.id.MyButon8: if(newdigital) { s=""; newdigital=false; } edit.setText(s+"8"); First++; break; case R.id.MyButon9: if(newdigital) { s=""; newdigital=false; } edit.setText(s+"9"); First++; break; case R.id.ADD: if(s.equals("")==true||s.equals("FFFFFFFFF")==true) { s="0"; } a=Double.parseDouble(s); s=""; option=1; edit.setText(""); flag=false; First=0; dot=0; break; case R.id.SUB: if(s.equals("")==true||s.equals("FFFFFFFFF")==true) { s="0"; } a=Double.parseDouble(s); s=""; option=2; edit.setText(""); First=0; flag=false; dot=0; break; case R.id.MULTI: if(s.equals("")==true||s.equals("FFFFFFFFF")==true) { s="0"; } a=Double.parseDouble(s); s=""; option=3; edit.setText(""); First=0; flag=false; dot=0; break; case R.id.DIV: if(s.equals("")==true||s.equals("FFFFFFFFF")==true) { s="0"; } a=Double.parseDouble(s); dot=0; option=4; edit.setText(""); First=0; flag=false; break; case R.id.EQUE: { switch(option) { case 1: b=Double.parseDouble(s); edit.setText(String.valueOf(a+b)); break; case 2: b=Double.parseDouble(s); edit.setText(String.valueOf(a-b)); break; case 3: b=Double.parseDouble(s); edit.setText(String.valueOf(a*b)); break; case 4: { b=Double.parseDouble(s); if(b!=0) { edit.setText(String.valueOf(a/b)); break; } else { edit.setText("FFFFFFFFF"); break; } } } s=""; First=0; flag=false; dot=0; newdigital=true; break; } }
}
};
}
最后结果: