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; } } }; }