感谢慕课网免费提供了学习途径和优秀的课程。
本文参考借鉴了一下博客大部分程序,并做了部分完善。
http://blog.csdn.net/nupt123456789/article/details/7832443
实现效果如下:
布局方式使用线性布局,监听方式使用的是匿名内部类。
布局文件代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.Groot.simplecalculator.MainActivity" >
<EditText
android:id="@+id/displaytext"
android:layout_width="fill_parent"
android:layout_height="60dp"
android:gravity="end|center_vertical"
android:background="@drawable/white_bg"
android:editable="false"
>
<requestFocus />
</EditText>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginTop="10dp"
android:orientation="horizontal"
>
<Button
android:id="@+id/btn_clear"
android:layout_width="60dp"
android:layout_height="60dp"
android:text="@string/clear"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle"
/>
<Button
android:id="@+id/btn_del"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginLeft="10dip"
android:text="@string/delete"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle" />
<Button
android:id="@+id/btn_divide"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginLeft="10dip"
android:text="@string/divide"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle" />
<Button
android:id="@+id/btn_multiply"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginLeft="10dip"
android:text="@string/multiply"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginTop="10dp"
android:orientation="horizontal"
>
<Button
android:id="@+id/btn_7"
android:layout_width="60dp"
android:layout_height="60dp"
android:text="@string/Num_7"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle" />
<Button
android:id="@+id/btn_8"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginLeft="10dip"
android:text="@string/Num_8"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle" />
<Button
android:id="@+id/btn_9"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginLeft="10dip"
android:text="@string/Num_9"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle" />
<Button
android:id="@+id/btn_subtract"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginLeft="10dip"
android:text="@string/subtract"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginTop="10dp"
android:orientation="horizontal"
>
<Button
android:id="@+id/btn_4"
android:layout_width="60dp"
android:layout_height="60dp"
android:text="@string/Num_4"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle" />
<Button
android:id="@+id/btn_5"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginLeft="10dip"
android:text="@string/Num_5"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle" />
<Button
android:id="@+id/btn_6"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginLeft="10dip"
android:text="@string/Num_6"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle" />
<Button
android:id="@+id/btn_add"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginLeft="10dip"
android:text="@string/add"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center_horizontal"
android:orientation="horizontal"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/btn_1"
android:layout_width="60dp"
android:layout_height="60dp"
android:text="@string/Num_1"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle" />
<Button
android:id="@+id/btn_2"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginLeft="10dip"
android:text="@string/Num_2"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle" />
<Button
android:id="@+id/btn_3"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginLeft="10dip"
android:text="@string/Num_3"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal"
>
<Button
android:id="@+id/btn_0"
android:layout_width="130dp"
android:layout_height="60dp"
android:text="@string/Num_0"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle"/>
<Button
android:id="@+id/btn_point"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginLeft="10dip"
android:text="@string/point"
android:textSize="20sp"
android:background="@drawable/white_selector"
style="?android:attr/borderlessButtonStyle" />
</LinearLayout>
</LinearLayout>
<Button
android:id="@+id/btn_equal"
android:layout_width="60dp"
android:layout_height="130dp"
android:layout_marginLeft="10dip"
android:text="@string/equal"
android:textSize="20sp"
android:background="@drawable/orange_selector"
style="?android:attr/borderlessButtonStyle"/>
</LinearLayout>
</LinearLayout>
主程序:
package com.Groot.simplecalculator;
import javax.xml.transform.Templates;
import android.R.string;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
Button btn0;
Button btn1;
Button btn2;
Button btn3;
Button btn4;
Button btn5;
Button btn6;
Button btn7;
Button btn8;
Button btn9;
Button clear;
Button del;
Button add;
Button subtract;
Button multiply;
Button divide;
Button point;
Button equal;
EditText showtext;
double num1=0;
double num2=0;
double result=0;
int CalType=0;
boolean EquBtnDownFlag = false;
boolean CalBtnDownFlag = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("简易计算器-邱小健");
showtext = (EditText) findViewById(R.id.displaytext);
showtext.setText("0");
btn0 = (Button) findViewById(R.id.btn_0);
btn1 = (Button) findViewById(R.id.btn_1);
btn2 = (Button) findViewById(R.id.btn_2);
btn3 = (Button) findViewById(R.id.btn_3);
btn4 = (Button) findViewById(R.id.btn_4);
btn5 = (Button) findViewById(R.id.btn_5);
btn6 = (Button) findViewById(R.id.btn_6);
btn7 = (Button) findViewById(R.id.btn_7);
btn8 = (Button) findViewById(R.id.btn_8);
btn9 = (Button) findViewById(R.id.btn_9);
clear = (Button) findViewById(R.id.btn_clear);
del = (Button) findViewById(R.id.btn_del);
add = (Button) findViewById(R.id.btn_add);
subtract = (Button) findViewById(R.id.btn_subtract);
multiply = (Button) findViewById(R.id.btn_multiply);
divide = (Button) findViewById(R.id.btn_divide);
point = (Button) findViewById(R.id.btn_point);
equal = (Button) findViewById(R.id.btn_equal);
btn0.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(EquBtnDownFlag){
showtext.setText(null);
EquBtnDownFlag= false;
}
if(CalBtnDownFlag){
showtext.setText(null);
CalBtnDownFlag= false;
}
CharSequence temp =showtext.getText();
String CalString =temp.toString();
CalString+="0";
double num=Double.parseDouble(CalString);
if ((Math.round(num)-num)==0) {
CalString = String.valueOf((long)num);
}
else {
CalString = String.valueOf(num);
}
showtext.setText(CalString);
}
});
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(EquBtnDownFlag){
showtext.setText(null);
EquBtnDownFlag= false;
}
if(CalBtnDownFlag){
showtext.setText(null);
CalBtnDownFlag= false;
}
CharSequence temp =showtext.getText();
String CalString =temp.toString();
CalString+="1";
double num=Double.parseDouble(CalString);
if ((Math.round(num)-num)==0) {
CalString = String.valueOf((long)num);
}
else {
CalString = String.valueOf(num);
}
showtext.setText(CalString);
}
});
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(EquBtnDownFlag){
showtext.setText(null);
EquBtnDownFlag= false;
}
if(CalBtnDownFlag){
showtext.setText(null);
CalBtnDownFlag= false;
}
CharSequence temp =showtext.getText();
String CalString =temp.toString();
CalString+="2";
double num=Double.parseDouble(CalString);
if ((Math.round(num)-num)==0) {
CalString = String.valueOf((long)num);
}
else {
CalString = String.valueOf(num);
}
showtext.setText(CalString);
}
});
btn3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(EquBtnDownFlag){
showtext.setText(null);
EquBtnDownFlag= false;
}
if(CalBtnDownFlag){
showtext.setText(null);
CalBtnDownFlag= false;
}
CharSequence temp =showtext.getText();
String CalString =temp.toString();
CalString+="3";
double num=Double.parseDouble(CalString);
if ((Math.round(num)-num)==0) {
CalString = String.valueOf((long)num);
}
else {
CalString = String.valueOf(num);
}
showtext.setText(CalString);
}
});
btn4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(EquBtnDownFlag){
showtext.setText(null);
EquBtnDownFlag= false;
}
if(CalBtnDownFlag){
showtext.setText(null);
CalBtnDownFlag= false;
}
CharSequence temp =showtext.getText();
String CalString =temp.toString();
CalString+="4";
double num=Double.parseDouble(CalString);
if ((Math.round(num)-num)==0) {
CalString = String.valueOf((long)num);
}
else {
CalString = String.valueOf(num);
}
showtext.setText(CalString);
}
});
btn5.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(EquBtnDownFlag){
showtext.setText(null);
EquBtnDownFlag= false;
}
if(CalBtnDownFlag){
showtext.setText(null);
CalBtnDownFlag= false;
}
CharSequence temp =showtext.getText();
String CalString =temp.toString();
CalString+="5";
double num=Double.parseDouble(CalString);
if ((Math.round(num)-num)==0) {
CalString = String.valueOf((long)num);
}
else {
CalString = String.valueOf(num);
}
showtext.setText(CalString);
}
});
btn6.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(EquBtnDownFlag){
showtext.setText(null);
EquBtnDownFlag= false;
}
if(CalBtnDownFlag){
showtext.setText(null);
CalBtnDownFlag= false;
}
CharSequence temp =showtext.getText();
String CalString =temp.toString();
CalString+="6";
double num=Double.parseDouble(CalString);
if ((Math.round(num)-num)==0) {
CalString = String.valueOf((long)num);
}
else {
CalString = String.valueOf(num);
}
showtext.setText(CalString);
}
});
btn7.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(EquBtnDownFlag){
showtext.setText(null);
EquBtnDownFlag= false;
}
if(CalBtnDownFlag){
showtext.setText(null);
CalBtnDownFlag= false;
}
CharSequence temp =showtext.getText();
String CalString =temp.toString();
CalString+="7";
double num=Double.parseDouble(CalString);
if ((Math.round(num)-num)==0) {
CalString = String.valueOf((long)num);
}
else {
CalString = String.valueOf(num);
}
showtext.setText(CalString);
}
});
btn8.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(EquBtnDownFlag){
showtext.setText(null);
EquBtnDownFlag= false;
}
if(CalBtnDownFlag){
showtext.setText(null);
CalBtnDownFlag= false;
}
CharSequence temp =showtext.getText();
String CalString =temp.toString();
CalString+="8";
double num=Double.parseDouble(CalString);
if ((Math.round(num)-num)==0) {
CalString = String.valueOf((long)num);
}
else {
CalString = String.valueOf(num);
}
showtext.setText(CalString);
}
});
btn9.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(EquBtnDownFlag){
showtext.setText(null);
EquBtnDownFlag= false;
}
if(CalBtnDownFlag){
showtext.setText(null);
CalBtnDownFlag= false;
}
CharSequence temp =showtext.getText();
String CalString =temp.toString();
CalString+="9";
double num=Double.parseDouble(CalString);
if ((Math.round(num)-num)==0) {
CalString = String.valueOf((long)num);
}
else {
CalString = String.valueOf(num);
}
showtext.setText(CalString);
}
});
point.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(EquBtnDownFlag){
showtext.setText(null);
EquBtnDownFlag= false;
}
CharSequence temp =showtext.getText();
String CalString =temp.toString();
CalString+=".";
showtext.setText(CalString);
}
});
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
CharSequence temp =showtext.getText();
// TODO Auto-generated method stub
if(temp.equals(null)){
return;
}
String CalString =temp.toString();
num1=Double.parseDouble(CalString);
CalType=1;
showtext.setText(CalString);
CalBtnDownFlag = true;
}
});
subtract.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
CharSequence temp =showtext.getText();
// TODO Auto-generated method stub
if(temp.equals(null)){
return;
}
String CalString =temp.toString();
num1=Double.parseDouble(CalString);
CalType=2;
showtext.setText(CalString);
CalBtnDownFlag = true;
}
});
multiply.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
CharSequence temp =showtext.getText();
// TODO Auto-generated method stub
if(temp.equals(null)){
return;
}
String CalString =temp.toString();
num1=Double.parseDouble(CalString);
CalType=3;
showtext.setText(CalString);
CalBtnDownFlag = true;
}
});
divide.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
CharSequence temp =showtext.getText();
// TODO Auto-generated method stub
if(temp.equals(null)){
return;
}
String CalString =temp.toString();
num1=Double.parseDouble(CalString);
CalType=4;
showtext.setText(CalString);
CalBtnDownFlag = true;
}
});
clear.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
CharSequence temp ="0";
String CalString =temp.toString();
showtext.setText(CalString);
}
});
del.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
CharSequence temp =showtext.getText();
if(temp.equals(null)){
return;
}
String CalString =temp.toString();
int str = CalString.length();
if(str == 1){showtext.setText("0");}
else {
CalString = CalString.substring(0, CalString.length()-1);
showtext.setText(CalString);
}
}
});
equal.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
CharSequence temp =showtext.getText();
// TODO Auto-generated method stub
if(temp.equals(null)){
return;
}
if (EquBtnDownFlag) {
double SecondNum;
num1 = result;
}
else {
String CalString =temp.toString();
num2=Double.parseDouble(CalString);
}
switch(CalType){
case 0:result=num2;break;
case 1:result=num1+num2;break;
case 2:result=num1-num2;break;
case 3:result=num1*num2;break;
case 4:result=num1/num2;break;
default:
result=0;
break;
}
String temp_result =null;
if ((Math.round(result)-result)==0) {
temp_result=String.valueOf((long)result);
}
else {
temp_result=String.valueOf(result);
}
showtext.setText(temp_result);
EquBtnDownFlag = true;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}