从零开始学android实现计算器功能示例分享(计算器源码)
2023-06-13 09:15:17 时间
下面是效果展示:
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayoutandroid: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>
<LinearLayoutandroid: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>
<LinearLayoutandroid: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>
<LinearLayoutandroid: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>
<LinearLayoutandroid: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>
<LinearLayoutandroid: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>
packagecom.example.week2;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.TextView;
importandroid.app.Activity;
publicclassMainActivityextendsActivity implementsOnClickListener{
//声明一些控件
Buttonbtn0=null;
Buttonbtn1=null;
Buttonbtn2=null;
Buttonbtn3=null;
Buttonbtn4=null;
Buttonbtn5=null;
Buttonbtn6=null;
Buttonbtn7=null;
Buttonbtn8=null;
Buttonbtn9=null;
ButtonbtnBackspace=null;
ButtonbtnCE=null;
ButtonbtnC=null;
ButtonbtnAdd=null;
ButtonbtnSub=null;
ButtonbtnMul=null;
ButtonbtnDiv=null;
ButtonbtnEqu=null;
TextViewtvResult=null;
//声明两个参数。接收tvResult前后的值
doublenum1=0,num2=0;
doubleResult=0;//计算结果
intop=0;//判断操作数,
booleanisClickEqu=false;//判断是否按了“=”按钮
@Override
protectedvoidonCreate(BundlesavedInstanceState){
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
publicvoidonClick(Viewv){
switch(v.getId()){
//btnBackspace和CE--------------------
caseR.id.btnBackspace:
StringmyStr=tvResult.getText().toString();
try{
tvResult.setText(myStr.substring(0,myStr.length()-1));
}catch(Exceptione){
tvResult.setText("");
}
break;
caseR.id.btnCE:
tvResult.setText(null);
break;
//btn0--9---------------------------
caseR.id.btn0:
if(isClickEqu)
{
tvResult.setText(null);
isClickEqu=false;
}
StringmyString=tvResult.getText().toString();
myString+="0";
tvResult.setText(myString);
break;
caseR.id.btn1:
if(isClickEqu)
{
tvResult.setText(null);
isClickEqu=false;
}
StringmyString1=tvResult.getText().toString();
myString1+="1";
tvResult.setText(myString1);
break;
caseR.id.btn2:
if(isClickEqu)
{
tvResult.setText(null);
isClickEqu=false;
}
StringmyString2=tvResult.getText().toString();
myString2+="2";
tvResult.setText(myString2);
break;
caseR.id.btn3:
if(isClickEqu)
{
tvResult.setText(null);
isClickEqu=false;
}
StringmyString3=tvResult.getText().toString();
myString3+="3";
tvResult.setText(myString3);
break;
caseR.id.btn4:
if(isClickEqu)
{
tvResult.setText(null);
isClickEqu=false;
}
StringmyString4=tvResult.getText().toString();
myString4+="4";
tvResult.setText(myString4);
break;
caseR.id.btn5:
if(isClickEqu)
{
tvResult.setText(null);
isClickEqu=false;
}
StringmyString5=tvResult.getText().toString();
myString5+="5";
tvResult.setText(myString5);
break;
caseR.id.btn6:
if(isClickEqu)
{
tvResult.setText(null);
isClickEqu=false;
}
StringmyString6=tvResult.getText().toString();
myString6+="6";
tvResult.setText(myString6);
break;
caseR.id.btn7:
if(isClickEqu)
{
tvResult.setText(null);
isClickEqu=false;
}
StringmyString7=tvResult.getText().toString();
myString7+="7";
tvResult.setText(myString7);
break;
caseR.id.btn8:
if(isClickEqu)
{
tvResult.setText(null);
isClickEqu=false;
}
StringmyString8=tvResult.getText().toString();
myString8+="8";
tvResult.setText(myString8);
break;
caseR.id.btn9:
if(isClickEqu)
{
tvResult.setText(null);
isClickEqu=false;
}
StringmyString9=tvResult.getText().toString();
myString9+="9";
tvResult.setText(myString9);
break;
//btn+-*/=--------------------------------
caseR.id.btnAdd:
StringmyStringAdd=tvResult.getText().toString();
if(myStringAdd.equals(null))
{
return;
}
num1=Double.valueOf(myStringAdd);
tvResult.setText(null);
op=1;
isClickEqu=false;
break;
caseR.id.btnSub:
StringmyStringSub=tvResult.getText().toString();
if(myStringSub.equals(null))
{
return;
}
num1=Double.valueOf(myStringSub);
tvResult.setText(null);
op=2;
isClickEqu=false;
break;
caseR.id.btnMul:
StringmyStringMul=tvResult.getText().toString();
if(myStringMul.equals(null))
{
return;
}
num1=Double.valueOf(myStringMul);
tvResult.setText(null);
op=3;
isClickEqu=false;
break;
caseR.id.btnDiv:
StringmyStringDiv=tvResult.getText().toString();
if(myStringDiv.equals(null))
{
return;
}
num1=Double.valueOf(myStringDiv);
tvResult.setText(null);
op=4;
isClickEqu=false;
break;
caseR.id.btnEqu:
StringmyStringEqu=tvResult.getText().toString();
if(myStringEqu.equals(null))
{
return;
}
num2=Double.valueOf(myStringEqu);
tvResult.setText(null);
switch(op){
case0:
Result=num2;
break;
case1:
Result=num1+num2;
break;
case2:
Result=num1-num2;
break;
case3:
Result=num1*num2;
break;
case4:
Result=num1/num2;
break;
default:
Result=0;
break;
}
tvResult.setText(String.valueOf(Result));
isClickEqu=true;
break;
default:
break;
}
}
}
相关文章
- android bindservice方法,Android bindservice方法返回false
- android 混淆不起作用,Android代码混淆的写法总结
- android deeplink流程,Android Deeplink探究[通俗易懂]
- android 安装p12证书,如何在Android中使用p12证书(客户端证书)
- android vlc 中文字幕,解决Android版vlc中文乱码问题
- android-短信验证功能,Android实现获取短信验证码的功能以及自定义GUI短信验证详解…
- android短信验证码方案,Android之短信验证码
- Android之rild进程启动源码分析「建议收藏」
- android attrs获取_关于Android attrs 自定义属性的说明
- Android双端队列——ArrayDeque的实现&源码分析[通俗易懂]
- 【Android 异步操作】线程池 ( 线程池作用 | 线程池种类 | 线程池工作机制 | 线程池任务调度源码解析 )
- 【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | ActivityThread 源码分析 )
- 【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 )
- 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 四 | View 事件传递机制 )
- 【Android 逆向】Frida 框架 ( Frida 框架使用环境 | Frida 框架作用 | Frida 框架模块 )
- 【Android 逆向】类加载器 ClassLoader ( Android 的八种类加载器 | ClassLoader | BaseDexClassLoader | DexClassLoader )
- android九宫格滑动解锁开机实例源码学习
- android图像绘制(六)获取本地图片或拍照图片等图片资源
- Android利用ViewPager实现滑动广告板实例源码
- Android学习笔记--通过Application传递数据代码示例