当前位置:   article > 正文

android studio计算器布局,用android studio写一个简单的计算器

android studio 用contrantlayout做计算器

先来个效果图:

ad718788a9422a7ae38edca5edab6420.png

功能: 满足加减乘除四则运算规则,有回退、清除功能。

下面的代码只是完成基本功能,若添加背景图请看Android Studio App设置背景图片

content_main.xml文件(页面布局,content_main.xml代码包含在activity_main.xml文件中):

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/next"

android:layout_width="match_parent"

android:layout_height="match_parent"

app:layout_behavior="@string/appbar_scrolling_view_behavior"

tools:context=".MainActivity"

tools:showIn="@layout/activity_main">

android:layout_width="fill_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

android:id="@+id/input"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:editable="false"

android:hint="@string/shuru" />

android:id="@+id/output"

android:layout_width="match_parent"

android:layout_height="70dp"

android:layout_gravity="center"

android:editable="true"

android:gravity="right"

android:hint="@string/shuchu" />

android:layout_width="350dp"

android:layout_height="wrap_content"

android:layout_gravity="center">

android:id="@+id/clear"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:text="@string/clear"

android:textSize="40sp" />

android:id="@+id/back"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_toRightOf="@id/clear"

android:text="@string/back"

android:textSize="40sp" />

android:id="@+id/divide"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_toRightOf="@id/back"

android:text="@string/divide"

android:textSize="40sp" />

android:id="@+id/multiply"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_toRightOf="@id/divide"

android:text="@string/multiply"

android:textSize="40sp" />

android:id="@+id/seven"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_below="@id/clear"

android:text="@string/seven"

android:textSize="40sp" />

android:id="@+id/eight"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_toRightOf="@id/seven"

android:layout_below="@id/divide"

android:text="@string/eight"

android:textSize="40sp" />

android:id="@+id/nine"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/multiply"

android:layout_toRightOf="@id/eight"

android:text="@string/nine"

android:textSize="40sp" />

android:id="@+id/subtract"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_below="@id/multiply"

android:layout_toRightOf="@id/nine"

android:text="@string/subtract"

android:textSize="40sp" />

android:id="@+id/four"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_below="@id/seven"

android:text="@string/four"

android:textSize="40sp" />

android:id="@+id/five"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/eight"

android:layout_toRightOf="@id/four"

android:text="@string/five"

android:textSize="40sp" />

android:id="@+id/six"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/nine"

android:layout_toRightOf="@id/five"

android:text="@string/six"

android:textSize="40sp" />

android:id="@+id/add"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_below="@id/subtract"

android:layout_toRightOf="@id/six"

android:text="@string/add"

android:textSize="40sp" />

android:id="@+id/one"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_below="@id/four"

android:text="@string/one"

android:textSize="40sp" />

android:id="@+id/two"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/five"

android:layout_toRightOf="@id/one"

android:text="@string/two"

android:textSize="40sp" />

android:id="@+id/three"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/six"

android:layout_toRightOf="@id/two"

android:text="@string/three"

android:textSize="40sp" />

android:id="@+id/result"

android:layout_width="wrap_content"

android:layout_height="146dp"

android:layout_alignParentRight="true"

android:layout_below="@id/add"

android:layout_toRightOf="@id/three"

android:text="@string/result"

android:textSize="40sp" />

android:id="@+id/zero"

android:layout_width="175dp"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_below="@id/one"

android:text="@string/zero"

android:textSize="40sp" />

android:id="@+id/dot"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/three"

android:layout_toRightOf="@id/zero"

android:text="@string/dot"

android:textSize="40sp" />

strings.xml(content_main.xml代码中的一些变量在此代码中定义的):

Calculator

Settings

page2

下一页

0

1

2

3

4

5

6

7

8

9

+

-

*

/

CE

<-

=

请输入:

结果:

.

计算式

MainActivity.Java(计算器中实现计算功能的核心代码):

package com.example.dell.calculator;

import android.content.Intent;

import android.os.Bundle;

import android.support.design.widget.FloatingActionButton;

import android.support.design.widget.Snackbar;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.Toolbar;

import android.view.View;

import android.view.Menu;

import android.view.MenuItem;

import android.app.Activity;

import android.content.Context;

import android.view.View.OnClickListener;

import android.widget.CheckBox;

import android.widget.EditText;

import android.widget.Button;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.text.DecimalFormat;

import java.text.NumberFormat;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class MainActivity extends AppCompatActivity {

private EditText output = null;

private EditText input = null;

private Button btn0 = null;

private Button btn1 = null;

private Button btn2 = null;

private Button btn3 = null;

private Button btn4 = null;

private Button btn5 = null;

private Button btn6 = null;

private Button btn7 = null;

private Button btn8 = null;

private Button btn9 = null;

private Button btnadd = null;

private Button btnsubtract = null;

private Button btnmultiply = null;

private Button btndivide = null;

private Button btnclear = null;

private Button btnback = null;

private Button btndot = null;

private Button btnresult = null;

private String text = "";//保存输入的数字和符号

private Double result = 0.0;//输出结果

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

output = (EditText) findViewById(R.id.output);

input = (EditText) findViewById(R.id.input);

btn0 = (Button) findViewById(R.id.zero);

btn1 = (Button) findViewById(R.id.one);

btn2 = (Button) findViewById(R.id.two);

btn3 = (Button) findViewById(R.id.three);

btn4 = (Button) findViewById(R.id.four);

btn5 = (Button) findViewById(R.id.five);

btn6 = (Button) findViewById(R.id.six);

btn7 = (Button) findViewById(R.id.seven);

btn8 = (Button) findViewById(R.id.eight);

btn9 = (Button) findViewById(R.id.nine);

btnadd = (Button) findViewById(R.id.add);

btnsubtract = (Button) findViewById(R.id.subtract);

btnmultiply = (Button) findViewById(R.id.multiply);

btndivide = (Button) findViewById(R.id.divide);

btnclear = (Button) findViewById(R.id.clear);

btnback = (Button) findViewById(R.id.back);

btndot = (Button) findViewById(R.id.dot);

btnresult = (Button) findViewById(R.id.result);

//设置按钮侦听事件

btn0.setOnClickListener(listener);

btn1.setOnClickListener(listener);

btn2.setOnClickListener(listener);

btn3.setOnClickListener(listener);

btn4.setOnClickListener(listener);

btn5.setOnClickListener(listener);

btn6.setOnClickListener(listener);

btn7.setOnClickListener(listener);

btn8.setOnClickListener(listener);

btn9.setOnClickListener(listener);

btnadd.setOnClickListener(listener);

btnsubtract.setOnClickListener(listener);

btnmultiply.setOnClickListener(listener);

btndivide.setOnClickListener(listener);

btnclear.setOnClickListener(listener);

btnback.setOnClickListener(listener);

btndot.setOnClickListener(listener);

btnresult.setOnClickListener(listener);

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

fab.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)

.setAction("Action", null).show();

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.menu_main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

// automatically handle clicks on the Home/Up button, so long

// as you specify a parent activity in AndroidManifest.xml.

int id = item.getItemId();

//noinspection SimplifiableIfStatement

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

//public void onClickNext(View view) {

// Intent intent = new Intent(this,page2.class);

// startActivity(intent);

// }

private OnClickListener listener = new OnClickListener() {

public void onClick(View v) {

// TODO Auto-generated method stub

switch (v.getId()) {

//输入数字

case R.id.zero:

num(0);

break;

case R.id.one:

num(1);

break;

case R.id.two:

num(2);

break;

case R.id.three:

num(3);

break;

case R.id.four:

num(4);

break;

case R.id.five:

num(5);

break;

case R.id.six:

num(6);

break;

case R.id.seven:

num(7);

break;

case R.id.eight:

num(8);

break;

case R.id.nine:

num(9);

break;

case R.id.dot:

dot();

break;

//执行运算

case R.id.add:

add();

break;

case R.id.subtract:

sub();

break;

case R.id.multiply:

multiply();

break;

case R.id.divide:

divide();

break;

case R.id.clear:

clear();

break;

case R.id.back:

back();

break;

//计算结果

case R.id.result:

result();

break;

default:

break;

}

input.setText(text);

output.setText(String.valueOf(result));

}

};

private void num(int i) {

// TODO Auto-generated method stub

text = text + String.valueOf(i);

}

private void dot() {

// TODO Auto-generated method stub

text = text + ".";

}

private void clear() {

// TODO Auto-generated method stub

text = "";

result = null;

input.setText("");

output.setText("");

}

private void back() {

// TODO Auto-generated method stub

String str = text.substring(0, text.length()-1);

text = str;

}

private void add() {

// TODO Auto-generated method stub

text += "+";

}

private void sub() {

// TODO Auto-generated method stub

text += "-";

}

private void multiply() {

// TODO Auto-generated method stub

text += "*";

}

private void divide() {

// TODO Auto-generated method stub

text += "/";

}

//计算输出结果

private void result() {

// TODO Auto-generated method stub

result = testOperation(text);

}

public Double testOperation(String s){

//分割字符然后放进数组

String s1 =s.replace("+","-");

String[] str = s1.split("-");

double total1=0;

//先遍历数组,把里面的乘除结果算出来

for(String str1:str){

if(str1.contains("*")||str1.contains("/")){

double total = 0;

for(int i =0;i

int count =1;

a:for(int j =i+1;j

char c =str1.charAt(j);

if(c=='*'||c=='/'){

break a;

}else{

count++;

}

}

//将数字截取出来

String s2 =str1.substring(i,i+count);

double d = Double.parseDouble(s2);

if(i==0){

total = d;

}else{

char c1 = str1.charAt(i-1);

if(c1=='*'){

total*=d;

}else if(c1=='/'){

//如果除数为0,直接返回null;

if(d == 0)

return null;

total/=d;

}

}

i+=count+1;

}

s= s.replace(str1, total+"");

}

}

//进行加减运算

for(int i =0;i

int count =1;

a:for(int j=i+1;j

char c = s.charAt(j);

if(c=='+'||c=='-'){

break a;

}else{

count++;

}

}

String s3= s.substring(i,i+count);

double d2 = Double.parseDouble(s3);

if(i==0){

total1 = d2;

}else{

char c = s.charAt(i-1);

if(c=='+'){

total1+=d2;

}else if(c=='-'){

total1-=d2;

}

}

i+=count;

}

return total1;

}

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/432363
推荐阅读
相关标签
  

闽ICP备14008679号