从零开始学android实现计算器功能示例分享(计算器源码)
程序员文章站
2022-06-19 20:05:32
下面是效果展示:
复制代码 代码如下:
<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<linearlayout android:layout_width="fill_parent"
android:layout_height="wrap_content">
<textview
android:id="@+id/tvresult"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:height="50dp"
android:text="@string/tvresult"
/>
</linearlayout>
<linearlayout android:layout_width="fill_parent"
android:layout_height="wrap_content">
<button
android:id="@+id/btnbackspace"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="150dp"
android:layout_marginleft="10dp"
android:text="@string/btnbackspace"/>
<button
android:id="@+id/btnce"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="150dp"
android:text="@string/btnce"/>
</linearlayout>
<linearlayout android:layout_width="fill_parent"
android:layout_height="wrap_content">
<button
android:id="@+id/btn7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginleft="10dp"
android:width="75dp"
android:text="@string/btn7"/>
<button
android:id="@+id/btn8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btn8"/>
<button
android:id="@+id/btn9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btn9"/>
<button
android:id="@+id/btndiv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btndiv"/>
</linearlayout>
<linearlayout android:layout_width="fill_parent"
android:layout_height="wrap_content">
<button
android:id="@+id/btn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginleft="10dp"
android:width="75dp"
android:text="@string/btn4"/>
<button
android:id="@+id/btn5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btn5"/>
<button
android:id="@+id/btn6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btn6"/>
<button
android:id="@+id/btnmul"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btnmul"/>
</linearlayout>
<linearlayout android:layout_width="fill_parent"
android:layout_height="wrap_content">
<button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginleft="10dp"
android:width="75dp"
android:text="@string/btn1"/>
<button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btn2"/>
<button
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btn3"/>
<button
android:id="@+id/btnadd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btnadd"/>
</linearlayout>
<linearlayout android:layout_width="fill_parent"
android:layout_height="wrap_content">
<button
android:id="@+id/btn0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginleft="10dp"
android:width="75dp"
android:text="@string/btn0"/>
<button
android:id="@+id/btnc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btnc"/>
<button
android:id="@+id/btnequ"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btnequ"/>
<button
android:id="@+id/btnsub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btnsub"/>
</linearlayout>
</linearlayout>
package com.example.week2;
import android.os.bundle;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
import android.widget.textview;
import android.app.activity;
public class mainactivity extends activity implements onclicklistener{
//声明一些控件
button btn0=null;
button btn1=null;
button btn2=null;
button btn3=null;
button btn4=null;
button btn5=null;
button btn6=null;
button btn7=null;
button btn8=null;
button btn9=null;
button btnbackspace=null;
button btnce=null;
button btnc=null;
button btnadd=null;
button btnsub=null;
button btnmul=null;
button btndiv=null;
button btnequ=null;
textview tvresult=null;
//声明两个参数。接收tvresult前后的值
double num1=0,num2=0;
double result=0;//计算结果
int op=0;//判断操作数,
boolean isclickequ=false;//判断是否按了“=”按钮
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
//从布局文件中获取控件,
btn0=(button)findviewbyid(r.id.btn0);
btn1=(button)findviewbyid(r.id.btn1);
btn2=(button)findviewbyid(r.id.btn2);
btn3=(button)findviewbyid(r.id.btn3);
btn4=(button)findviewbyid(r.id.btn4);
btn5=(button)findviewbyid(r.id.btn5);
btn6=(button)findviewbyid(r.id.btn6);
btn7=(button)findviewbyid(r.id.btn7);
btn8=(button)findviewbyid(r.id.btn8);
btn9=(button)findviewbyid(r.id.btn9);
btnbackspace=(button)findviewbyid(r.id.btnbackspace);
btnce=(button)findviewbyid(r.id.btnce);
btnc=(button)findviewbyid(r.id.btnc);
btnequ=(button)findviewbyid(r.id.btnequ);
btnadd=(button)findviewbyid(r.id.btnadd);
btnsub=(button)findviewbyid(r.id.btnsub);
btnmul=(button)findviewbyid(r.id.btnmul);
btndiv=(button)findviewbyid(r.id.btndiv);
tvresult=(textview)findviewbyid(r.id.tvresult);
//添加监听\
btnbackspace.setonclicklistener(this);
btnce.setonclicklistener(this);
btn0.setonclicklistener(this);
btn1.setonclicklistener(this);
btn2.setonclicklistener(this);
btn3.setonclicklistener(this);
btn4.setonclicklistener(this);
btn5.setonclicklistener(this);
btn6.setonclicklistener(this);
btn7.setonclicklistener(this);
btn8.setonclicklistener(this);
btn9.setonclicklistener(this);
btnadd.setonclicklistener(this);
btnsub.setonclicklistener(this);
btnmul.setonclicklistener(this);
btndiv.setonclicklistener(this);
btnequ.setonclicklistener(this);
}
@override
public void onclick(view v) {
switch (v.getid()) {
//btnbackspace和ce--------------------
case r.id.btnbackspace:
string mystr=tvresult.gettext().tostring();
try {
tvresult.settext(mystr.substring(0, mystr.length()-1));
} catch (exception e) {
tvresult.settext("");
}
break;
case r.id.btnce:
tvresult.settext(null);
break;
//btn0--9---------------------------
case r.id.btn0:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring=tvresult.gettext().tostring();
mystring+="0";
tvresult.settext(mystring);
break;
case r.id.btn1:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring1=tvresult.gettext().tostring();
mystring1+="1";
tvresult.settext(mystring1);
break;
case r.id.btn2:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring2=tvresult.gettext().tostring();
mystring2+="2";
tvresult.settext(mystring2);
break;
case r.id.btn3:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring3=tvresult.gettext().tostring();
mystring3+="3";
tvresult.settext(mystring3);
break;
case r.id.btn4:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring4=tvresult.gettext().tostring();
mystring4+="4";
tvresult.settext(mystring4);
break;
case r.id.btn5:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring5=tvresult.gettext().tostring();
mystring5+="5";
tvresult.settext(mystring5);
break;
case r.id.btn6:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring6=tvresult.gettext().tostring();
mystring6+="6";
tvresult.settext(mystring6);
break;
case r.id.btn7:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring7=tvresult.gettext().tostring();
mystring7+="7";
tvresult.settext(mystring7);
break;
case r.id.btn8:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring8=tvresult.gettext().tostring();
mystring8+="8";
tvresult.settext(mystring8);
break;
case r.id.btn9:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring9=tvresult.gettext().tostring();
mystring9+="9";
tvresult.settext(mystring9);
break;
//btn+-*/=--------------------------------
case r.id.btnadd:
string mystringadd=tvresult.gettext().tostring();
if(mystringadd.equals(null))
{
return;
}
num1=double.valueof(mystringadd);
tvresult.settext(null);
op=1;
isclickequ=false;
break;
case r.id.btnsub:
string mystringsub=tvresult.gettext().tostring();
if(mystringsub.equals(null))
{
return;
}
num1=double.valueof(mystringsub);
tvresult.settext(null);
op=2;
isclickequ=false;
break;
case r.id.btnmul:
string mystringmul=tvresult.gettext().tostring();
if(mystringmul.equals(null))
{
return;
}
num1=double.valueof(mystringmul);
tvresult.settext(null);
op=3;
isclickequ=false;
break;
case r.id.btndiv:
string mystringdiv=tvresult.gettext().tostring();
if(mystringdiv.equals(null))
{
return;
}
num1=double.valueof(mystringdiv);
tvresult.settext(null);
op=4;
isclickequ=false;
break;
case r.id.btnequ:
string mystringequ=tvresult.gettext().tostring();
if(mystringequ.equals(null))
{
return;
}
num2=double.valueof(mystringequ);
tvresult.settext(null);
switch (op) {
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;
}
tvresult.settext(string.valueof(result));
isclickequ=true;
break;
default:
break;
}
}
}
下面是效果展示:
复制代码 代码如下:
<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<linearlayout android:layout_width="fill_parent"
android:layout_height="wrap_content">
<textview
android:id="@+id/tvresult"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:height="50dp"
android:text="@string/tvresult"
/>
</linearlayout>
<linearlayout android:layout_width="fill_parent"
android:layout_height="wrap_content">
<button
android:id="@+id/btnbackspace"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="150dp"
android:layout_marginleft="10dp"
android:text="@string/btnbackspace"/>
<button
android:id="@+id/btnce"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="150dp"
android:text="@string/btnce"/>
</linearlayout>
<linearlayout android:layout_width="fill_parent"
android:layout_height="wrap_content">
<button
android:id="@+id/btn7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginleft="10dp"
android:width="75dp"
android:text="@string/btn7"/>
<button
android:id="@+id/btn8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btn8"/>
<button
android:id="@+id/btn9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btn9"/>
<button
android:id="@+id/btndiv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btndiv"/>
</linearlayout>
<linearlayout android:layout_width="fill_parent"
android:layout_height="wrap_content">
<button
android:id="@+id/btn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginleft="10dp"
android:width="75dp"
android:text="@string/btn4"/>
<button
android:id="@+id/btn5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btn5"/>
<button
android:id="@+id/btn6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btn6"/>
<button
android:id="@+id/btnmul"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btnmul"/>
</linearlayout>
<linearlayout android:layout_width="fill_parent"
android:layout_height="wrap_content">
<button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginleft="10dp"
android:width="75dp"
android:text="@string/btn1"/>
<button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btn2"/>
<button
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btn3"/>
<button
android:id="@+id/btnadd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btnadd"/>
</linearlayout>
<linearlayout android:layout_width="fill_parent"
android:layout_height="wrap_content">
<button
android:id="@+id/btn0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginleft="10dp"
android:width="75dp"
android:text="@string/btn0"/>
<button
android:id="@+id/btnc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btnc"/>
<button
android:id="@+id/btnequ"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btnequ"/>
<button
android:id="@+id/btnsub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="75dp"
android:text="@string/btnsub"/>
</linearlayout>
</linearlayout>
复制代码 代码如下:
package com.example.week2;
import android.os.bundle;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
import android.widget.textview;
import android.app.activity;
public class mainactivity extends activity implements onclicklistener{
//声明一些控件
button btn0=null;
button btn1=null;
button btn2=null;
button btn3=null;
button btn4=null;
button btn5=null;
button btn6=null;
button btn7=null;
button btn8=null;
button btn9=null;
button btnbackspace=null;
button btnce=null;
button btnc=null;
button btnadd=null;
button btnsub=null;
button btnmul=null;
button btndiv=null;
button btnequ=null;
textview tvresult=null;
//声明两个参数。接收tvresult前后的值
double num1=0,num2=0;
double result=0;//计算结果
int op=0;//判断操作数,
boolean isclickequ=false;//判断是否按了“=”按钮
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
//从布局文件中获取控件,
btn0=(button)findviewbyid(r.id.btn0);
btn1=(button)findviewbyid(r.id.btn1);
btn2=(button)findviewbyid(r.id.btn2);
btn3=(button)findviewbyid(r.id.btn3);
btn4=(button)findviewbyid(r.id.btn4);
btn5=(button)findviewbyid(r.id.btn5);
btn6=(button)findviewbyid(r.id.btn6);
btn7=(button)findviewbyid(r.id.btn7);
btn8=(button)findviewbyid(r.id.btn8);
btn9=(button)findviewbyid(r.id.btn9);
btnbackspace=(button)findviewbyid(r.id.btnbackspace);
btnce=(button)findviewbyid(r.id.btnce);
btnc=(button)findviewbyid(r.id.btnc);
btnequ=(button)findviewbyid(r.id.btnequ);
btnadd=(button)findviewbyid(r.id.btnadd);
btnsub=(button)findviewbyid(r.id.btnsub);
btnmul=(button)findviewbyid(r.id.btnmul);
btndiv=(button)findviewbyid(r.id.btndiv);
tvresult=(textview)findviewbyid(r.id.tvresult);
//添加监听\
btnbackspace.setonclicklistener(this);
btnce.setonclicklistener(this);
btn0.setonclicklistener(this);
btn1.setonclicklistener(this);
btn2.setonclicklistener(this);
btn3.setonclicklistener(this);
btn4.setonclicklistener(this);
btn5.setonclicklistener(this);
btn6.setonclicklistener(this);
btn7.setonclicklistener(this);
btn8.setonclicklistener(this);
btn9.setonclicklistener(this);
btnadd.setonclicklistener(this);
btnsub.setonclicklistener(this);
btnmul.setonclicklistener(this);
btndiv.setonclicklistener(this);
btnequ.setonclicklistener(this);
}
@override
public void onclick(view v) {
switch (v.getid()) {
//btnbackspace和ce--------------------
case r.id.btnbackspace:
string mystr=tvresult.gettext().tostring();
try {
tvresult.settext(mystr.substring(0, mystr.length()-1));
} catch (exception e) {
tvresult.settext("");
}
break;
case r.id.btnce:
tvresult.settext(null);
break;
//btn0--9---------------------------
case r.id.btn0:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring=tvresult.gettext().tostring();
mystring+="0";
tvresult.settext(mystring);
break;
case r.id.btn1:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring1=tvresult.gettext().tostring();
mystring1+="1";
tvresult.settext(mystring1);
break;
case r.id.btn2:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring2=tvresult.gettext().tostring();
mystring2+="2";
tvresult.settext(mystring2);
break;
case r.id.btn3:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring3=tvresult.gettext().tostring();
mystring3+="3";
tvresult.settext(mystring3);
break;
case r.id.btn4:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring4=tvresult.gettext().tostring();
mystring4+="4";
tvresult.settext(mystring4);
break;
case r.id.btn5:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring5=tvresult.gettext().tostring();
mystring5+="5";
tvresult.settext(mystring5);
break;
case r.id.btn6:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring6=tvresult.gettext().tostring();
mystring6+="6";
tvresult.settext(mystring6);
break;
case r.id.btn7:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring7=tvresult.gettext().tostring();
mystring7+="7";
tvresult.settext(mystring7);
break;
case r.id.btn8:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring8=tvresult.gettext().tostring();
mystring8+="8";
tvresult.settext(mystring8);
break;
case r.id.btn9:
if(isclickequ)
{
tvresult.settext(null);
isclickequ=false;
}
string mystring9=tvresult.gettext().tostring();
mystring9+="9";
tvresult.settext(mystring9);
break;
//btn+-*/=--------------------------------
case r.id.btnadd:
string mystringadd=tvresult.gettext().tostring();
if(mystringadd.equals(null))
{
return;
}
num1=double.valueof(mystringadd);
tvresult.settext(null);
op=1;
isclickequ=false;
break;
case r.id.btnsub:
string mystringsub=tvresult.gettext().tostring();
if(mystringsub.equals(null))
{
return;
}
num1=double.valueof(mystringsub);
tvresult.settext(null);
op=2;
isclickequ=false;
break;
case r.id.btnmul:
string mystringmul=tvresult.gettext().tostring();
if(mystringmul.equals(null))
{
return;
}
num1=double.valueof(mystringmul);
tvresult.settext(null);
op=3;
isclickequ=false;
break;
case r.id.btndiv:
string mystringdiv=tvresult.gettext().tostring();
if(mystringdiv.equals(null))
{
return;
}
num1=double.valueof(mystringdiv);
tvresult.settext(null);
op=4;
isclickequ=false;
break;
case r.id.btnequ:
string mystringequ=tvresult.gettext().tostring();
if(mystringequ.equals(null))
{
return;
}
num2=double.valueof(mystringequ);
tvresult.settext(null);
switch (op) {
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;
}
tvresult.settext(string.valueof(result));
isclickequ=true;
break;
default:
break;
}
}
}
上一篇: 从零开始学android小示例程序
下一篇: 五谷杂粮有哪些?它的功效和作用你知道吗?