Android簡單計算器
android簡單計算器制作起來來其實很簡單,如果要做復雜的就得花大把的時間啦!
下面是效果圖:

只需要編寫一個MainActivity類和一個XML文件布局就可以啦!
布局Xml文件如下: <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="wrap_content"
android:orientation="vertical" >
<!-- 顯示框 -->
<TextView
android:id="@+id/textView"
android:layout_width="fill_parent"
android:layout_height="60dip"
android:layout_marginTop="4sp"
android:layout_marginBottom="10sp"
android:layout_marginLeft="8sp"
android:layout_marginRight="8sp"
android:background="@drawable/bgselector"
android:text=""
android:hint="0."
android:singleLine="true"
android:textSize="@dimen/activity_vertical_TextSize"
android:gravity="right"/>
<Button android:id="@+id/clear"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="c"/>
<!-- 中間按鈕 -->
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="0,1,2,3"
>
<TableRow >
<Button android:id="@+id/btn7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="7"/>
<Button android:id="@+id/btn8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="8"/>
<Button android:id="@+id/btn9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="9"/>
<Button android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="+"/>
</TableRow>
<TableRow >
<Button android:id="@+id/btn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="4"/>
<Button android:id="@+id/btn5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="5"/>
<Button android:id="@+id/btn6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="6"/>
<Button android:id="@+id/cut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="-"/>
</TableRow>
<TableRow >
<Button android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="1"/>
<Button android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="2"/>
<Button android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="3"/>
<Button android:id="@+id/rid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="*"/>
</TableRow>
<TableRow >
<Button android:id="@+id/btn0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="0"/>
<Button android:id="@+id/btnPoint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="."/>
<Button android:id="@+id/btnResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="="/>
<Button android:id="@+id/divide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btnselector"
android:layout_margin="@dimen/activity_vertical_margin2"
android:textSize="@dimen/activity_vertical_TextSize"
android:text="/"/>
</TableRow>
</TableLayout>
</LinearLayout> MainActivity類代碼如下:
public class MainActivity extends Activity {
TextView textView;
Button button1;
Button button2;
Button button3;
Button button4;
Button button5;
Button button6;
Button button7;
Button button8;
Button button9;
Button button0;
Button add;//加
Button cut;//減
Button rid;//乘
Button divide;//除
Button result;
Button point;
Button clear;
int pointCount=0;
int option = 0;//運算符狀態
boolean newdigital=true;//標記是否是新輸入的數字
boolean flag=true;//判斷程序是否出錯
double a=0,b=0;//兩個相加的數
double sum=0;
double sumtype=0;//判斷輸出的數是否有小數部分
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
textView=(TextView)findViewById(R.id.textView);
button1=(Button)findViewById(R.id.btn1);
button2=(Button)findViewById(R.id.btn2);
button3=(Button)findViewById(R.id.btn3);
button4=(Button)findViewById(R.id.btn4);
button5=(Button)findViewById(R.id.btn5);
button6=(Button)findViewById(R.id.btn6);
button7=(Button)findViewById(R.id.btn7);
button8=(Button)findViewById(R.id.btn8);
button9=(Button)findViewById(R.id.btn9);
button0=(Button)findViewById(R.id.btn0);
add=(Button)findViewById(R.id.add);
cut=(Button)findViewById(R.id.cut);
rid=(Button)findViewById(R.id.rid);
divide=(Button)findViewById(R.id.divide);
result=(Button)findViewById(R.id.btnResult);
point=(Button)findViewById(R.id.btnPoint);
clear=(Button)findViewById(R.id.clear);
button0.setOnClickListener(lisenter);
button1.setOnClickListener(lisenter);
button2.setOnClickListener(lisenter);
button3.setOnClickListener(lisenter);
button4.setOnClickListener(lisenter);
button5.setOnClickListener(lisenter);
button6.setOnClickListener(lisenter);
button7.setOnClickListener(lisenter);
button8.setOnClickListener(lisenter);
button9.setOnClickListener(lisenter);
add.setOnClickListener(lisenter);
cut.setOnClickListener(lisenter);
rid.setOnClickListener(lisenter);
divide.setOnClickListener(lisenter);
result.setOnClickListener(lisenter);
point.setOnClickListener(lisenter);
clear.setOnClickListener(lisenter);
}
OnClickListener lisenter=new OnClickListener() {
@Override
public void onClick(View v) {
TextView text = (TextView) findViewById(R.id.textView);
String s = text.getText().toString();//獲取文本框顯示的字符串
Button btn =(Button)v;
String t=(String) btn.getText();//獲取按鈕的字符
//數字的輸入
if(btn.getId()==R.id.btn0||btn.getId()==R.id.btn1||btn.getId()==R.id.btn2||btn.getId()==R.id.btn3
||btn.getId()==R.id.btn4||btn.getId()==R.id.btn5||btn.getId()==R.id.btn6||
btn.getId()==R.id.btn7||btn.getId()==R.id.btn8||btn.getId()==R.id.btn9||(btn.getId()==R.id.btnPoint&&pointCount==0))
{
//Toast.makeText(MainActivity.this, btn.getText(), Toast.LENGTH_LONG).show();
//Toast.makeText(MainActivity.this, s, Toast.LENGTH_LONG).show();
if(btn.getId()==R.id.btnPoint){
if(null==s||s.equals("")){
s+="0"+btn.getText();
}else{
s+=btn.getText();
}
pointCount=1;
}else{
s+=btn.getText();
}
text.setText(s);
}
//運算符的輸入
if(btn.getId()==R.id.add||btn.getId()==R.id.divide||btn.getId()==R.id.cut||btn.getId()==R.id.rid){
//Toast.makeText(MainActivity.this, btn.getText(), Toast.LENGTH_LONG).show();
//如果已經有兩個數,再按運算符就直接把結果運算出來保存到a中然后繼續運算
if(null==s||s.equals("")){
s="0";
}
if(option!=0){
b=Double.valueOf(s);
switch (option) {
case 1:
sum=a+b;
break;
case 2:
sum=a-b;
break;
case 3:
sum=a*b;
break;
case 4:
if(b==0){
Toast.makeText(MainActivity.this, "0不能為除數", Toast.LENGTH_LONG).show();
text.setText("");
break;
}
sum=a/b;
break;
default:
break;
}
a=sum;
}
if(option==0){
a=Double.valueOf(s);
}
switch (btn.getId()) {
case R.id.add:
option=1;
break;
case R.id.cut:
option=2;
break;
case R.id.rid:
option=3;
break;
case R.id.divide:
option=4;
break;
default:
break;
}
text.setText("");
}
//等于,運算結果
if(btn.getId()==R.id.btnResult){
//Toast.makeText(MainActivity.this, btn.getText(), Toast.LENGTH_LONG).show();
if(null==s||s.equals("")){
s="0";
}
b=Double.valueOf(s);
switch (option) {
case 1:
sum=a+b;
break;
case 2:
sum=a-b;
break;
case 3:
sum=a*b;
break;
case 4:
if(b==0){
Toast.makeText(MainActivity.this, "0不能為除數", Toast.LENGTH_LONG).show();
text.setText("");
flag=false;
break;
}
sum=a/b;
break;
default:
break;
}
sumtype=sum%1;
if(sumtype>0){
pointCount=1;
}
s=""+sum;
if(sumtype==0){
int end=(s.toString()).lastIndexOf(".");
String str=(s.toString()).substring(0, end);
s=""+Integer.parseInt(str);
pointCount=0;
}
if(flag){
text.setText(s);
}
a=Double.valueOf(s);
option=0;
flag=true;
}
//清除
if(btn.getId()==R.id.clear){
//Toast.makeText(MainActivity.this, btn.getText(), Toast.LENGTH_LONG).show();
text.setText("");
pointCount=0;
option=0;
flag=true;
}
}
};
}