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。