Android table布局开发实现简单计算器
程序员文章站
2023-02-22 09:48:57
本文实例为大家分享了android table布局开发实现简单计算器的具体代码,供大家参考,具体内容如下结果如图:xml文件如下:
本文实例为大家分享了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计算器 进行学习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。