第一次代码超过150行的Android-----app,对的,没错,我是一个菜鸟,如果,你跟我一样,那也从制作计算器开始,最常见的一个应用,当你真正实现的时候,会发现,不是像你想象那么简单哦。
-----------------------------------------------------------------------------------------------------------------------------------------写在前面的话
本次计算器实现的是------只能进行最简单的“+”,“-”,“*”,“/”,不能连算啊!!比如“1+2+3”,后期,等我完善后,我会贴出来的,这只是雏形,你们可以在后面进行添加,
布局文件如图
布局文件:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.自己的包名哦哦哦哦哦.MainActivity"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="显示数据" android:id="@+id/textView" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="清除" android:id="@+id/bt_qingchu" android:layout_below="@+id/textView" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="26dp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="退位" android:id="@+id/bt_tuichu" android:layout_alignTop="@+id/bt_qingchu" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_marginRight="62dp" android:layout_marginEnd="62dp" /> <Button android:layout_width="70dp" android:layout_height="wrap_content" android:text="1" android:id="@+id/bt_1" android:layout_below="@+id/bt_qingchu" android:layout_marginTop="31dp" /> <Button android:layout_width="70dp" android:layout_height="wrap_content" android:text="2" android:id="@+id/bt_2" android:layout_alignTop="@+id/bt_1" android:layout_toLeftOf="@+id/bt_tuichu" android:layout_toStartOf="@+id/bt_tuichu" /> <Button android:layout_width="70dp" android:layout_height="wrap_content" android:text="3" android:id="@+id/bt_3" android:layout_alignTop="@+id/bt_2" android:layout_toLeftOf="@+id/bt_jia" android:layout_toStartOf="@+id/bt_jia" /> <Button android:layout_width="70dp" android:layout_height="wrap_content" android:text="+" android:id="@+id/bt_jia" android:layout_alignTop="@+id/bt_3" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> <Button android:layout_width="70dp" android:layout_height="wrap_content" android:text="4" android:id="@+id/bt_4" android:layout_centerVertical="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <Button android:layout_width="70dp" android:layout_height="wrap_content" android:text="5" android:id="@+id/bt_5" android:layout_centerVertical="true" android:layout_alignRight="@+id/bt_2" android:layout_alignEnd="@+id/bt_2" /> <Button android:layout_width="70dp" android:layout_height="wrap_content" android:text="6" android:id="@+id/bt_6" android:layout_centerVertical="true" android:layout_toLeftOf="@+id/bt_jia" android:layout_toStartOf="@+id/bt_jia" /> <Button android:layout_width="70dp" android:layout_height="wrap_content" android:text="-" android:id="@+id/bt_jian" android:layout_centerVertical="true" android:layout_toRightOf="@+id/bt_6" android:layout_toEndOf="@+id/bt_6" /> <Button android:layout_width="70dp" android:layout_height="wrap_content" android:text="7" android:id="@+id/bt_7" android:layout_marginTop="39dp" android:layout_below="@+id/bt_4" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <Button android:layout_width="70dp" android:layout_height="wrap_content" android:text="8" android:id="@+id/bt_8" android:layout_alignTop="@+id/bt_7" android:layout_alignRight="@+id/bt_5" android:layout_alignEnd="@+id/bt_5" /> <Button android:layout_width="70dp" android:layout_height="wrap_content" android:text="9" android:id="@+id/bt_9" android:layout_alignBottom="@+id/bt_8" android:layout_alignLeft="@+id/bt_6" android:layout_alignStart="@+id/bt_6" /> <Button android:layout_width="70dp" android:layout_height="wrap_content" android:text="*" android:id="@+id/bt_cheng" android:layout_alignBottom="@+id/bt_9" android:layout_toRightOf="@+id/bt_9" android:layout_toEndOf="@+id/bt_9" /> <Button android:layout_width="70dp" android:layout_height="wrap_content" android:text="0" android:id="@+id/bt_0" android:layout_marginTop="22dp" android:layout_below="@+id/bt_7" android:layout_alignRight="@+id/bt_qingchu" android:layout_alignEnd="@+id/bt_qingchu" /> <Button android:layout_width="70dp" android:layout_height="wrap_content" android:text="/" android:id="@+id/bt_chu" android:layout_alignTop="@+id/bt_0" android:layout_alignLeft="@+id/bt_8" android:layout_alignStart="@+id/bt_8" /> <Button android:layout_width="70dp" android:layout_height="wrap_content" android:text="=" android:id="@+id/bt_dengyu" android:layout_alignTop="@+id/bt_chu" android:layout_alignLeft="@+id/bt_9" android:layout_alignStart="@+id/bt_9" /> <Button android:layout_width="70dp" android:layout_height="wrap_content" android:text="." android:id="@+id/bt_dian" android:layout_alignBottom="@+id/bt_dengyu" android:layout_toRightOf="@+id/bt_dengyu" android:layout_toEndOf="@+id/bt_dengyu" /> </RelativeLayout>
Android代码,很详细哦哦
package com.example.取得名字; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements OnClickListener { Button b1, b2, b3, b4, b5, b6, b7, b8, b9, b0, b_dian, b_cheng, b_jia, b_chu, b_qingchu, b_tuichu, b_jian, b_dengyu; TextView b_xianshi; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到显示屏的控件 b_xianshi = (TextView) findViewById(R.id.textView); //找到按钮的控件 b1 = (Button) findViewById(R.id.bt_1); b2 = (Button) findViewById(R.id.bt_2); b3 = (Button) findViewById(R.id.bt_3); b4 = (Button) findViewById(R.id.bt_4); b1 = (Button) findViewById(R.id.bt_1); b5 = (Button) findViewById(R.id.bt_5); b6 = (Button) findViewById(R.id.bt_6); b7 = (Button) findViewById(R.id.bt_7); b8 = (Button) findViewById(R.id.bt_8); b9 = (Button) findViewById(R.id.bt_9); b0 = (Button) findViewById(R.id.bt_0); b_dian = (Button) findViewById(R.id.bt_dian); b_cheng = (Button) findViewById(R.id.bt_cheng); b_jia = (Button) findViewById(R.id.bt_jia); b_jian = (Button) findViewById(R.id.bt_jian); b_chu = (Button) findViewById(R.id.bt_chu); b_qingchu = (Button) findViewById(R.id.bt_qingchu); b_tuichu = (Button) findViewById(R.id.bt_tuichu); b_dengyu = (Button) findViewById(R.id.bt_dengyu);
//按钮监听事件 b1.setOnClickListener(this); b2.setOnClickListener(this); b3.setOnClickListener(this); b4.setOnClickListener(this); b5.setOnClickListener(this); b6.setOnClickListener(this); b7.setOnClickListener(this); b8.setOnClickListener(this); b9.setOnClickListener(this); b0.setOnClickListener(this); b_dian.setOnClickListener(this); b_cheng.setOnClickListener(this); b_jia.setOnClickListener(this); b_jian.setOnClickListener(this); b_chu.setOnClickListener(this); b_qingchu.setOnClickListener(this); b_tuichu.setOnClickListener(this); b_dengyu.setOnClickListener(this); } @Override public void onClick(View v) { //取出显示屏的数据 String shu = b_xianshi.getText().toString(); switch (v.getId()) { case R.id.bt_0: case R.id.bt_1: case R.id.bt_2: case R.id.bt_3: case R.id.bt_4: case R.id.bt_5: case R.id.bt_6: case R.id.bt_7: case R.id.bt_8: case R.id.bt_9: case R.id.bt_dian: //将所按的数字放在显示屏中 b_xianshi.setText(shu + ((Button) v).getText().toString()); break; case R.id.bt_jia: case R.id.bt_jian: case R.id.bt_cheng: case R.id.bt_chu: 将所按的字符放在显示屏中 b_xianshi.setText(shu + ((Button) v).getText().toString() ); break; //清除键的操作时,可以进行清屏,显示屏啥也没有,可以再次进行操作 case R.id.bt_qingchu: b_xianshi.setText(""); break; //当按退位件的时候操作,清除自己输错的字符(一个个的退位) case R.id.bt_tuichu: /* //得到显示的信息 String get=b_xianshi.getText().toString(); //将显示的信息---的最后一位删除 get.substring(0,get.length()-1); */ //与下面表示的意思是一样 b_xianshi.setText(b_xianshi.getText().toString().substring(0,b_xianshi.getText().toString().length()-1)); break; //当按等于号时所执行的操作 case R.id.bt_dengyu: jieguo(); break; } } double result; //当按等于号的时候所触发的事件 public void jieguo() { //先将显示屏中的字符串全部取出来,只有加了tostring才能用String类型接收 String suoyou=b_xianshi.getText().toString(); String zifu = null; //判断字符串中有没有“+,-,*,/”如果有,则取出来 if(suoyou.contains("+")) zifu=suoyou.substring(suoyou.indexOf("+"),suoyou.indexOf("+")+1); if(suoyou.contains("-")) zifu=suoyou.substring(suoyou.indexOf("-"),suoyou.indexOf("-")+1); if(suoyou.contains("*")) zifu=suoyou.substring(suoyou.indexOf("*"),suoyou.indexOf("*")+1); if(suoyou.contains("/")) zifu=suoyou.substring(suoyou.indexOf("/"),suoyou.indexOf("/")+1); //取出来后,用s1进行接收符号前面的数字串;用s2进行接收符号后面的数字串 String s1=suoyou.substring(0, (suoyou.indexOf(zifu) )); String s2=suoyou.substring((suoyou.indexOf(zifu) )+1,suoyou.length()); //将数字字符串用数字表示 double a1=Double.parseDouble(s1); double a2=Double.parseDouble(s2); //进行计算 if(suoyou.contains("+")) { result=a1+a2; } else if(suoyou.contains("-")) { result=a1-a2; } else if(suoyou.contains("*")) { result=a1*a2; } else if(suoyou.contains("/")) { result=a1/a2; } //将计算的结果,用字符串在显示屏中显示 String jjj=String.valueOf(result); b_xianshi.setText(jjj); } }
此文是基于慕课网学习,自己实战得来的哦~~~