Android学习-计算器案例
程序员文章站
2022-07-14 13:40:26
...
【目的】完成对以上学习任务的巩固,完成计算器的案例。
【注意事项】
1:>android:theme=”@android:style/Theme.Black”在AndroidManifest.xml中进行背景设计,设计成黑色背景无标题栏的活动。
2:>要想使用上一语句,活动必须继承Activity,而继承AppCpmpatActivity是不行的。
3:>android:background=”@drawable/white_bg”
【目录结构】
【布局代码】
main_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1"
android:background="@mipmap/anqi_">
<EditText
android:id="@+id/edittext"
android:enabled="false"
android:gravity="right|bottom"
android:layout_marginTop="80dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@drawable/white_bg" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<Button
android:id="@+id/btn_clear"
android:layout_width="75dp"
android:layout_height="75dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="C"
android:textSize="20sp" />
<Button
android:id="@+id/btn_del"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_marginLeft="10dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="DEL"
android:textSize="20sp" />
<Button
android:id="@+id/btn_divide"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_marginLeft="10dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="÷"
android:textSize="20sp" />
<Button
android:id="@+id/btn_cheng"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_marginLeft="10dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="×"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/btn_7"
android:layout_width="75dp"
android:layout_height="75dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="7"
android:textSize="20sp" />
<Button
android:id="@+id/btn_8"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_marginLeft="10dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="8"
android:textSize="20sp" />
<Button
android:id="@+id/btn_9"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_marginLeft="10dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="9"
android:textSize="20sp" />
<Button
android:id="@+id/btn_minus"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_marginLeft="10dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="-"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/btn_4"
android:layout_width="75dp"
android:layout_height="75dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="4"
android:textSize="20sp" />
<Button
android:id="@+id/btn_5"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_marginLeft="10dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="5"
android:textSize="20sp" />
<Button
android:id="@+id/btn_6"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_marginLeft="10dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="6"
android:textSize="20sp" />
<Button
android:id="@+id/btn_plus"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_marginLeft="10dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="+"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center_horizontal"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_1"
android:layout_width="75dp"
android:layout_height="75dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="1"
android:textSize="20sp"/>
<Button
android:id="@+id/btn_2"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_marginLeft="10dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="2"
android:textSize="20sp"/>
<Button
android:id="@+id/btn_3"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_marginLeft="10dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="3"
android:textSize="20sp"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal"
android:gravity="center_horizontal">
<Button
android:id="@+id/btn_0"
android:layout_width="158dp"
android:layout_height="75dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="0"
android:textSize="20sp"/>
<Button
android:id="@+id/btn_bg"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_marginLeft="10dp"
android:gravity="right|bottom"
android:background="@drawable/white_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="."
android:textSize="20sp"/>
</LinearLayout>
</LinearLayout>
<Button
android:id="@+id/btn_equal"
android:layout_width="75dp"
android:layout_height="158dp"
android:layout_marginLeft="10dp"
android:gravity="right|bottom"
android:background="@drawable/orange_selector"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:text="="
android:textSize="20sp"/>
</LinearLayout>
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="琛大人专用"
android:textColor="@color/colorAccent"
android:textSize="40sp"/>
</LinearLayout>
ashend_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp"/>
<solid android:color="#8B4513"/>
</shape>
gray_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp"/>
<solid android:color="@android:color/darker_gray"/>
</shape>
orange_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp"/>
<solid android:color="@android:color/holo_orange_light"/>
</shape>
orange_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ashend_bg" android:state_pressed="true"/>
<item android:drawable="@drawable/orange_bg"/>
</selector>
white_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp"/>
<!--<gradient-->
<!--android:startColor="@color/colorPrimary"-->
<!--android:endColor="@color/colorAccent"-->
<!--/>-->
<!--<stroke-->
<!--android:width="2dp"-->
<!--android:color="#222222"/>-->
<solid
android:color="#ffffff"/>
</shape>
white_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/gray_bg" android:state_pressed="true"/>
<item android:drawable="@drawable/white_bg"/>
</selector>
【活动代码】
MainActivity.java
package com.example.angel.calculatorpro;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity implements View.OnClickListener{
Button btn_0;
Button btn_1;
Button btn_2;
Button btn_3;
Button btn_4;
Button btn_5;
Button btn_6;
Button btn_7;
Button btn_8;
Button btn_9;
Button btn_clear;
Button btn_divide;
Button btn_plus;
Button btn_bg;
Button btn_minus;
Button btn_cheng;
Button btn_del;
Button btn_equal;
EditText input;
boolean clear_flag;//清空标识
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
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_bg = (Button) findViewById(R.id.btn_bg);
btn_plus= (Button) findViewById(R.id.btn_plus);
btn_divide = (Button) findViewById(R.id.btn_divide);
btn_clear = (Button) findViewById(R.id.btn_clear);
btn_cheng = (Button) findViewById(R.id.btn_cheng);
btn_del = (Button) findViewById(R.id.btn_del);
btn_minus = (Button) findViewById(R.id.btn_minus);
btn_equal = (Button) findViewById(R.id.btn_equal);
input = (EditText) findViewById(R.id.edittext);
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_bg.setOnClickListener(this);
btn_del.setOnClickListener(this);
btn_clear.setOnClickListener(this);
btn_cheng.setOnClickListener(this);
btn_plus.setOnClickListener(this);
btn_minus.setOnClickListener(this);
btn_divide.setOnClickListener(this);
btn_equal.setOnClickListener(this);
}
public void onClick(View view) {
String str = input.getText().toString();
switch (view.getId()){
case(R.id.btn_0):
case(R.id.btn_1):
case(R.id.btn_2):
case(R.id.btn_3):
case(R.id.btn_4):
case(R.id.btn_5):
case(R.id.btn_6):
case(R.id.btn_7):
case(R.id.btn_8):
case(R.id.btn_9):
case(R.id.btn_bg):
if(clear_flag){
clear_flag = false;
str="";
input.setText("");
}
input.setText(str+((Button)view).getText());
break;
case(R.id.btn_plus):
case(R.id.btn_divide):
case(R.id.btn_minus):
case(R.id.btn_cheng):
if(clear_flag){
clear_flag = false;
str="";
input.setText("");
}
input.setText(str+" "+((Button)view).getText()+" ");
break;
case(R.id.btn_del):
if(clear_flag){
clear_flag = false;
str="";
input.setText("");
}
if(str!= null && !"".equals(str))
input.setText(str.substring(0,str.length()-1));
break;
case(R.id.btn_clear):
clear_flag = false;
str="";
input.setText("");
break;
case(R.id.btn_equal):
getResult();
break;
}
}
/*
* 运算结果
* */
private void getResult(){
String exp = input.getText().toString();
if(exp == null||exp.equals(""))
return;
if(!exp.contains(" "))
return;
if(clear_flag)
clear_flag=false;
clear_flag = true;
double result=0;
String s1 = exp.substring(0,exp.indexOf(" "));//运算符前面的字符串
String op = exp.substring(exp.indexOf(" ")+1,exp.indexOf(" ")+2);
String s2 =exp.substring(exp.indexOf(" ")+3);//运算符后面的字符串
if(!s1.equals("")&&!s2.equals("")){
double d1 = Double.parseDouble(s1);
double d2 = Double.parseDouble(s2);
if(op.equals("+")) {
result = d1+d2;
}else if(op.equals("-")){
result = d1-d2;
}else if(op.equals("×")){
result = d1*d2;
}else if(op.equals("÷")){
if(d2==0)
result =0;
else
result=d1/d2;
}
if(!s1.contains(".")&&!s2.contains(".")&&!op.equals("÷")){
int r = (int)result;
input.setText(r+"");
}else{
input.setText(result+"");
}
}else if(!s1.equals("")&&s2.equals("")){
input.setText(exp);
}else if(s1.equals("")&&!s2.equals("")){
double d1 = Double.parseDouble(s1);
double d2 = Double.parseDouble(s2);
if(op.equals("+")) {
result = 0+d2;
}else if(op.equals("-")){
result = 0-d2;
}else if(op.equals("×")){
result = 0*d2;
}else if(op.equals("÷")){
result = 0;
}
if(!s2.contains(".")){
int r = (int)result;
input.setText(r+"");
}else{
input.setText(result+"");
}
}else{
input.setText("");
}
}
}
上一篇: kd树识别压缩有的mnist数据集
下一篇: 实现网络版加法计算器