欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android table布局开发实现简单计算器

程序员文章站 2023-02-22 09:48:57
本文实例为大家分享了android table布局开发实现简单计算器的具体代码,供大家参考,具体内容如下结果如图:xml文件如下:

本文实例为大家分享了android table布局开发实现简单计算器的具体代码,供大家参考,具体内容如下

结果如图:

Android table布局开发实现简单计算器

xml文件如下:

<framelayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.wxhcalculator.mainactivity"
tools:ignore="mergerootframe" >

<tablelayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchcolumns="1"
android:textsize="42sp" >

<tablerow>
<edittext
android:id="@+id/result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_span="4"
android:background="@android:drawable/editbox_background"
android:cursorvisible="false"
android:editable="false"
android:gravity="right|center_vertical"
android:lines="1"
android:textsize="60sp" />
</tablerow>

<tablerow>

<linearlayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
android:textsize="42sp" >

<button
android:id="@+id/num7"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="7"
android:textsize="42sp" />

<button
android:id="@+id/num8"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="8"
android:textsize="42sp" />

<button
android:id="@+id/num9"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="9"
android:textsize="42sp" />

<button
android:id="@+id/divide"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="/"
android:textsize="42sp" />
</linearlayout>
</tablerow>

<tablerow>

<linearlayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
android:textsize="42sp" >

<button
android:id="@+id/num4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="4"
android:textsize="42sp" />

<button
android:id="@+id/num5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="5"
android:textsize="42sp" />

<button
android:id="@+id/num6"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="6"
android:textsize="42sp" />

<button
android:id="@+id/multiply"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="*"
android:textsize="42sp" />
</linearlayout>
</tablerow>

<tablerow>

<linearlayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
android:textsize="42sp" >

<button
android:id="@+id/num1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1"
android:textsize="42sp" />

<button
android:id="@+id/num2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="2"
android:textsize="42sp" />

<button
android:id="@+id/num3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="3"
android:textsize="42sp" />

<button
android:id="@+id/subtract"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="-"
android:textsize="42sp" />
</linearlayout>
</tablerow>

<tablerow>

<linearlayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
android:textsize="42sp" >

<button
android:id="@+id/num0"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="0"
android:textsize="42sp" />

<button
android:id="@+id/point"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="."
android:textsize="42sp" />

<button
android:id="@+id/add"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="+"
android:textsize="42sp" />

<button
android:id="@+id/equal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="="
android:textsize="42sp" />
</linearlayout>
</tablerow>

<tablerow>

<button
android:id="@+id/clear"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_span="4"
android:gravity="center_vertical|center_horizontal"
android:text="clear"
android:textsize="30sp" />
</tablerow>
</tablelayout>

</framelayout>

mainactivity主函数如下:

package com.example.wxhcalculator;

import android.support.v7.app.actionbaractivity;
import android.os.bundle;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
import android.widget.edittext;

public class mainactivity extends actionbaractivity {
private button[] btnnum = new button[11];// 数值按钮
private button[] btncommand = new button[5];// 符号按钮
private edittext edittext = null;// 显示区域
private button btnclear = null; // clear按钮
private string lastcommand; // 用于保存运算符
private boolean clearflag; // 用于判断是否清空显示区域的值,true需要,false不需要
private boolean firstflag; // 用于判断是否是首次输入,true首次,false不是首次
private double result; // 计算结果

public mainactivity() {
// 初始化各项值
result = 0; // x的值
firstflag = true; // 是首次运算
clearflag = false; // 不需要清空
lastcommand = "="; // 运算符
}
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
// 获取运算符
btncommand[0] = (button) findviewbyid(r.id.add);
btncommand[1] = (button) findviewbyid(r.id.subtract);
btncommand[2] = (button) findviewbyid(r.id.multiply);
btncommand[3] = (button) findviewbyid(r.id.divide);
btncommand[4] = (button) findviewbyid(r.id.equal);
// 获取数字
btnnum[0] = (button) findviewbyid(r.id.num0);
btnnum[1] = (button) findviewbyid(r.id.num1);
btnnum[2] = (button) findviewbyid(r.id.num2);
btnnum[3] = (button) findviewbyid(r.id.num3);
btnnum[4] = (button) findviewbyid(r.id.num4);
btnnum[5] = (button) findviewbyid(r.id.num5);
btnnum[6] = (button) findviewbyid(r.id.num6);
btnnum[7] = (button) findviewbyid(r.id.num7);
btnnum[8] = (button) findviewbyid(r.id.num8);
btnnum[9] = (button) findviewbyid(r.id.num9);
btnnum[10] = (button) findviewbyid(r.id.point);
// 初始化显示结果区域
edittext = (edittext) findviewbyid(r.id.result);
edittext.settext("0.0");
// 实例化监听器对象
numberaction na = new numberaction();
commandaction ca = new commandaction();
for (button bc : btncommand) {
bc.setonclicklistener(ca);
}
for (button bc : btnnum) {
bc.setonclicklistener(na);
}
// clear按钮的动作
btnclear = (button) findviewbyid(r.id.clear);
btnclear.setonclicklistener(new view.onclicklistener() {
@override
public void onclick(view view) {
edittext.settext("0.0");
// 初始化各项值
result = 0; // x的值
firstflag = true; // 是首次运算
clearflag = false; // 不需要清空
lastcommand = "="; // 运算符
}
});
}
// 数字按钮监听器
private class numberaction implements onclicklistener {
@override
public void onclick(view view) {
button btn = (button) view;
string input = btn.gettext().tostring();
if (firstflag) { // 首次输入
// 一上就".",就什么也不做
if (input.equals(".")) {
return;
}
// 如果是"0.0"的话,就清空
if (edittext.gettext().tostring().equals("0.0")) {
edittext.settext("");
}
firstflag = false;// 改变是否首次输入的标记值
} else {
string edittextstr = edittext.gettext().tostring();
// 判断显示区域的值里面是否已经有".",如果有,输入的又是".",就什么都不做
if (edittextstr.indexof(".") != -1 && input.equals(".")) {
return;
}
// 判断显示区域的值里面只有"-",输入的又是".",就什么都不做
if (edittextstr.equals("-") && input.equals(".")) {
return;
}
// 判断显示区域的值如果是"0",输入的不是".",就什么也不做
if (edittextstr.equals("0") && !input.equals(".")) {
return;
}
}
// 如果我点击了运算符以后,再输入数字的话,就要清空显示区域的值
if (clearflag) {
edittext.settext("");
clearflag = false;// 还原初始值,不需要清空
}
edittext.settext(edittext.gettext().tostring() + input);// 设置显示区域的值
}
}

// 符号按钮监听器
private class commandaction implements onclicklistener {
@override
public void onclick(view view) {
button btn = (button) view;
string inputcommand = (string) btn.gettext();
if (firstflag) {// 首次输入"-"的情况
if (inputcommand.equals("-")) {
edittext.settext("-");// 显示区域的内容设置为"-"
firstflag = false;// 改变首次输入的标记
}
} else {
if (!clearflag) {// 如果flag=false不需要清空显示区的值,就调用方法计算
calculate(double.parsedouble(edittext.gettext().tostring()));// 保存显示区域的值,并计算
}
// 保存你点击的运算符
lastcommand = inputcommand;
clearflag = true;// 因为我这里已经输入过运算符,
}
}
}

// 计算用的方法
private void calculate(double x) {
if (lastcommand.equals("+")) {
result += x;
} else if (lastcommand.equals("-")) {
result -= x;
} else if (lastcommand.equals("*")) {
result *= x;
} else if (lastcommand.equals("/")) {
result /= x;
} else if (lastcommand.equals("=")) {
result = x;
}
edittext.settext("" + result);
}

}

更多计算器功能实现,请点击专题: 计算器功能汇总 进行学习

关于android计算器功能的实现,查看专题:android计算器 进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。