Android实现简单计算器功能(Button控件实现)
通过安卓编程实现一个简易计算器的功能,用的都是按钮Button控件和显示结果的EditText控件,下面是效果图:
主界面:
输入第一个数:
输入第二个数:
结果:
这里只是简单的演示了两个数相乘,实际可以实现加减乘除功能。
布局文件:
/MyCalculator/res/layout/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/et_show" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="4" android:gravity="right" android:text="" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="12" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="horizontal" > <Button android:id="@+id/btn_7" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_key_selector" android:text="7" /> <Button android:id="@+id/btn_8" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_key_selector" android:text="8" /> <Button android:id="@+id/btn_9" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_key_selector" android:text="9" /> <Button android:id="@+id/btn_chuyi" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_key_selector" android:text="/" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="horizontal" > <Button android:id="@+id/btn_4" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_key_selector" android:text="4" /> <Button android:id="@+id/btn_5" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_key_selector" android:text="5" /> <Button android:id="@+id/btn_6" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_key_selector" android:text="6" /> <Button android:id="@+id/btn_chengyi" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_key_selector" android:text="*" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="horizontal" > <Button android:id="@+id/btn_1" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_key_selector" android:text="1" /> <Button android:id="@+id/btn_2" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_key_selector" android:text="2" /> <Button android:id="@+id/btn_3" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_key_selector" android:text="3" /> <Button android:id="@+id/btn_jian" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_key_selector" android:text="-" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="horizontal" > <Button android:id="@+id/btn_0" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_key_selector" android:text="0" /> <Button android:id="@+id/btn_dian" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_key_selector" android:text="." /> <Button android:id="@+id/btn_jia" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_key_selector" android:text="+" /> <Button android:id="@+id/btn_dengyu" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/bg_key_selector" android:text="=" /> </LinearLayout> </LinearLayout> <Button android:id="@+id/btn_clear" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="4" android:background="@drawable/bg_key_selector" android:text="clear" /> </LinearLayout>
按钮背景文件:
/MyCalculator/res/drawable/bg_key_selector.xml
<?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/bg_key_pressed"/> <item android:state_pressed="false" android:drawable="@drawable/bg_key_normal"/> </selector>主Activity文件:
/MyCalculator/src/com/example/mycalculator/MainActivity.java
package com.example.mycalculator; import android.app.Activity; import android.app.ActionBar; import android.app.Fragment; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.os.Build; public class MainActivity extends Activity implements OnClickListener { private Button btn_1, btn_2, btn_3, btn_4, btn_5, btn_6, btn_7, btn_8, btn_9, btn_0, btn_jia, btn_jian, btn_dengyu, btn_clear, btn_chuyi, btn_chengyi, btn_dian; //各个按钮 private EditText et_show; //显示输入数字和结果 public int flag = 0; //为判断是加减乘除四种运算中的哪一种设定的标志位 private String text1 = "0", //获得输入的第一个数 text2 = "0"; //获得输入的第二个数 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setTitle("计算器"); //获得各个控件 et_show = (EditText) findViewById(R.id.et_show); btn_0 = (Button) findViewById(R.id.btn_0); btn_1 = (Button) findViewById(R.id.btn_1); btn_2 = (Button) findViewById(R.id.btn_2); btn_3 = (Button) findViewById(R.id.btn_3); btn_4 = (Button) findViewById(R.id.btn_4); btn_5 = (Button) findViewById(R.id.btn_5); btn_6 = (Button) findViewById(R.id.btn_6); btn_7 = (Button) findViewById(R.id.btn_7); btn_8 = (Button) findViewById(R.id.btn_8); btn_9 = (Button) findViewById(R.id.btn_9); btn_jia = (Button) findViewById(R.id.btn_jia); btn_jian = (Button) findViewById(R.id.btn_jian); btn_chengyi = (Button) findViewById(R.id.btn_chengyi); btn_chuyi = (Button) findViewById(R.id.btn_chuyi); btn_dengyu = (Button) findViewById(R.id.btn_dengyu); btn_clear = (Button) findViewById(R.id.btn_clear); btn_dian = (Button) findViewById(R.id.btn_dian); //设置监听器 btn_0.setOnClickListener(this); btn_1.setOnClickListener(this); btn_2.setOnClickListener(this); btn_3.setOnClickListener(this); btn_4.setOnClickListener(this); btn_5.setOnClickListener(this); btn_6.setOnClickListener(this); btn_7.setOnClickListener(this); btn_8.setOnClickListener(this); btn_9.setOnClickListener(this); btn_clear.setOnClickListener(this); btn_jia.setOnClickListener(this); btn_jian.setOnClickListener(this); btn_chengyi.setOnClickListener(this); btn_chuyi.setOnClickListener(this); btn_dian.setOnClickListener(this); btn_dengyu.setOnClickListener(this); } @Override public void onClick(View arg0) { // TODO Auto-generated method stub switch (arg0.getId()) { case R.id.btn_0: et_show.append("0"); break; case R.id.btn_1: et_show.append("1"); break; case R.id.btn_2: et_show.append("2"); break; case R.id.btn_3: et_show.append("3"); break; case R.id.btn_4: et_show.append("4"); break; case R.id.btn_5: et_show.append("5"); break; case R.id.btn_6: et_show.append("6"); break; case R.id.btn_7: et_show.append("7"); break; case R.id.btn_8: et_show.append("8"); break; case R.id.btn_9: et_show.append("9"); break; case R.id.btn_dian: et_show.append("."); break; case R.id.btn_jia: flag = 1; text1 = et_show.getText().toString(); et_show.setText(""); break; case R.id.btn_jian: flag = 2; text1 = et_show.getText().toString(); et_show.setText(""); break; case R.id.btn_chengyi: flag = 3; text1 = et_show.getText().toString(); et_show.setText(""); break; case R.id.btn_chuyi: flag = 4; text1 = et_show.getText().toString(); et_show.setText(""); break; case R.id.btn_dengyu: switch (flag) { case 0: // et_show.setText(text1); et_show.append("0"); Log.d("text1", text1); Log.d("text2", text2); break; case 1: text2 = et_show.getText().toString(); Double res = Double.parseDouble(text1) + Double.parseDouble(text2); // et_show.setText("flag=1"); CharSequence r = res.toString(); et_show.setText(res + ""); Log.d("text1", text1); Log.d("text2", text2); Log.d("res", res.toString()); break; case 2: text2 = et_show.getText().toString(); Double res2 = (Double.parseDouble(text1) - Double .parseDouble(text2)); CharSequence r2 = res2.toString(); et_show.setText(res2 + ""); Log.d("text1", text1); Log.d("text2", text2); Log.d("res", res2.toString()); // et_show.setText("flag=2"); break; case 3: text2 = et_show.getText().toString(); Double res3 = Double.parseDouble(text1) * Double.parseDouble(text2); // et_show.setText("flag=3"); CharSequence r3 = res3.toString(); et_show.setText(res3 + ""); Log.d("text1", text1); Log.d("text2", text2); Log.d("res", res3.toString()); break; case 4: text2 = et_show.getText().toString(); Double res4 = Double.parseDouble(text1) / Double.parseDouble(text2); // et_show.setText("flag=4"); CharSequence r4 = res4.toString(); et_show.setText(res4 + ""); Log.d("text1", text1); Log.d("text2", text2); Log.d("res", res4.toString()); break; default: break; } break; case R.id.btn_clear: flag = 0; text1 = "0"; text2 = "0"; et_show.setText(""); break; default: break; } } }如果有兴趣研究下源码,请戳这里下载:http://download.csdn.net/detail/offerfinder/8817543。