上一篇讲了android的六大基本布局:https://blog.csdn.net/qq_40205116/article/details/88418781

这一篇来用布局做一个android小项目(计算器),效果如下(本来想插入视频的,但发现好像插入不了视频,只能插入图片了,这里%表示取余):

分析:主要路基思维在于加减乘除四则运算的优先级,把这个解决了也就没什么难的了,可以把等式先化成字符数组,在转换成字符集合(数和运算符),之后进行计算。计算时第一个数字符串的下标为0,只用判断第二字符串运算符是否为乘或除或取余。

1.如果是这直接进行计算,之后把结果放在下标为0的集合中,删除后面两个元素

2.如果不是,则判断下标为3的运算符是否为乘或除或取余。是则运算,不是则可以运算前面的一组。

以此来推,如果还不理解那就看代码吧(表达能力不是很好O(∩_∩)O哈哈~)!

代码部分:

activity_main.xml中:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/TableLayout1"android:layout_width="match_parent"android:layout_height="match_parent"android:stretchColumns="*" ><!-- 显示的文本 --><TextViewandroid:id="@+id/text"android:layout_width="match_parent"android:layout_height="150dp"android:background="@android:color/holo_blue_bright"android:textSize="20dp"android:gravity="center|right"android:text="" /><!-- android:onClick="fun"设置点击事件android:tag="%"点击获取的文本值--><TableRow android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1" ><Buttonandroid:id="@+id/btn01"android:layout_width="wrap_content"android:layout_height="match_parent"android:text="C" /><Buttonandroid:id="@+id/btn02"android:layout_width="wrap_content"android:layout_height="match_parent"android:text="←" /><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="fun"android:tag="%"android:text="%" /><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="fun"android:tag="÷"android:text="÷" /></TableRow><TableRow android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1" ><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="fun"android:tag="7"android:text="7" /><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="fun"android:tag="8"android:text="8" /><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="fun"android:tag="9"android:text="9" /><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="fun"android:tag="x"android:text="x" /></TableRow><TableRow android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1" ><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="fun"android:tag="4"android:text="4" /><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="fun"android:tag="5"android:text="5" /><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="fun"android:tag="6"android:text="6" /><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="fun"android:tag="-"android:text="-" /></TableRow><TableRow android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1" ><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="fun"android:tag="1"android:text="1" /><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="fun"android:tag="2"android:text="2" /><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="fun"android:tag="3"android:text="3" /><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="fun"android:tag="+"android:text="+" /></TableRow><TableRow android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1" ><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="fun"android:tag="."android:text="." /><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:onClick="fun"android:tag="0"android:text="0" /><Buttonandroid:id="@+id/btn19"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_span="2"android:text="=" /></TableRow>
</TableLayout>

MainActivity.java类:

package com.example.tablelayoutjsq;import java.util.ArrayList;
import java.util.List;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;public class MainActivity extends Activity {private TextView text;private Button btn01;private Button btn02;private Button btn19;String str;     //文本值String str1 = "";   //加减乘除等式private OnClickListener listener = new OnClickListener() {@Overridepublic void onClick(View v) {String s = "";switch (v.getId()) {case R.id.btn01: //清空text.setText("");str1 = "";break;case R.id.btn02:  //回退if(text.getText().toString().length() > 0){s = text.getText().toString().substring(0, text.getText().toString().length()-1);                    text.setText(s);}break;case R.id.btn19: //点击=号算结果str = text.getText().toString();if(str.equals("")){return ;}char[] array = str.toCharArray();List<String> list = new ArrayList<String>();for(int i = str1.length(); i < array.length; i++){if(array[i] == '%' || array[i] == '÷' || array[i] == 'x' || array[i] == '-' || array[i] == '+'){if(!s.equals("")){list.add(s);s = "";}String a = array[i]+"";list.add(a);}else{s += array[i];if(i == array.length-1){list.add(s);s = "";}}}while(true){String b = list.get(list.size()-1);if(b.equals("%") || b.equals("÷") || b.equals("x") || b.equals("+") || b.equals("-"))list.remove(list.size()-1);if(list.size() == 1){str1 = text.getText().toString()+"\n";text.setText(str1+list.get(0));break;}if(list.size() == 3){fun(0, list);}else{if("%".equals(list.get(3)) || "÷".equals(list.get(3)) || "x".equals(list.get(3))){fun(2, list);}else{fun(0, list);}}}default:break;}}//加减乘除运算方法private void fun(int i, List<String> list) {double x = Double.parseDouble(list.get(i));String y = list.get(i+1);double z = Double.parseDouble(list.get(i+2));String sum;if(y.equals("%")){sum = x % z+"";}else if(y.equals("÷")){sum = x / z+"";}else if(y.equals("+")){sum = x + z+"";}else if(y.equals("-")){sum = x - z+"";}else{sum = x * z+"";}list.set(i, sum);list.remove(i+2);list.remove(i+1);}};//点击按钮,把按钮值显示在文本上public void fun(View v){str = text.getText().toString();if(str.length() > 0){char c = str.charAt(str.length()-1);String ss = (String) v.getTag();if((c == '%' || c == '÷' || c == 'x' || c == '+' || c == '-') &&(ss.equals("%") || ss.equals("÷") || ss.equals("x") || ss.equals("+") || ss.equals("-"))){str = str.substring(0, str.length()-1)+ss;text.setText(str);}else{text.append((String)v.getTag());}}else{text.append((String)v.getTag()); //append在字符串后拼接一个           }}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text = (TextView) findViewById(R.id.text);btn01 = (Button) findViewById(R.id.btn01);btn02 = (Button) findViewById(R.id.btn02);btn19 = (Button) findViewById(R.id.btn19);btn01.setOnClickListener(listener);btn02.setOnClickListener(listener);btn19.setOnClickListener(listener);}
}

Android布局小案例——安卓版计算器相关推荐

  1. five 安卓应用|five 1.0.1 for android,Five小视频安卓版

    Five小视频安卓版是一个1分钟视频创作社区,是一款非常不错的小视频应用软件,用户可以将自己身边精彩的瞬间拍成小视频发布到平台上,还能结交更多有趣的朋友,操作简单,带你玩转小视频.欢迎用户使用西西下载 ...

  2. Android开发之2048安卓版

    之前是在eclipse上写的,后面换成了android sudio. 2048游戏的UI整体可以采用线性布局,即LinearLayout,其中嵌套一个线性布局和一个GridLayout,内嵌的线性布局 ...

  3. 救救小姐姐html5游戏在线玩,救救小姐姐安卓版

    救救小姐姐安卓版带来奇葩脑洞解谜,可怜的小姐姐在游戏里就没有休息过,周一被僵尸狂潮追.周二被发配到海岛要求求生.周三在户外遇到野人拦路.周四团建密室大逃脱.周五.周六.周日也有很多惊险又奇葩的游戏剧情 ...

  4. android入门级小软件身高体重计算器源代码,初学者可以看看~

    android入门级小软件身高体重计算器源代码,初学者可以看看- 一,BMI(身高体重计算器)源代码 package com.android.bmi; import java.text.Decimal ...

  5. Android入门小案例,制作登陆页面跳转

    这个案例,主要目的是带着大家理解Android开发的基础知识,与UI布局以及点击事件,方便大家能更好的入门.至于如何创建一个Android项目这里就不在过多阐述.笔者这里使用的开发工具是IDEA,语言 ...

  6. edge chrome Android,微软Edge浏览器安卓版已上架:采用Chrome引擎

    IT之家10月13日消息 上周微软公布了一个令人意外的消息,那就是将其Edge浏览器带入iOS和Android平台,使现有的Win10 Edge浏览器用户可以更轻松地浏览其历史记录,书签和其他数据.现 ...

  7. 螃蟹先生2 android,螃蟹先生2安卓版

    螃蟹先生2安卓版是一款以螃蟹为主角的特色闯关休闲游戏,游戏玩法非常丰富,各种稀奇古怪的冒险之旅接踵而来,且螃蟹先生2游戏画面十分可爱,通过闯关获取更多道具. 螃蟹先生2安卓版简介 在游戏中玩家需要控制 ...

  8. chrome android 85,终于!安卓版Chrome 85将升级到原生64位:支持Android 10及以上系统...

    原标题:终于!安卓版Chrome 85将升级到原生64位:支持Android 10及以上系统 安卓对64位的支持是从2014年的Android 5.0开始的.可时至今日,谷歌自己的Chrome for ...

  9. 虎牙安卓Android最新的,虎牙安卓版

    虎牙安卓版正式版是款专为游戏直播们打造的游戏直播平台.虎牙安卓版最新版为用户提供同时200万人在线高清观看.流畅的赛事直播与游戏直播,还有精彩的游戏赛事.虎牙安卓版中用户再也不担心错过任何直播了,让你 ...

  10. android脚本之家记事本,99笔记(手机记事本软件) for android 1.8.6 安卓版

    99笔记现在还是非常的不错的一款手机上的记事本软件,可以帮助你随时的记录住你需要的各种各样的事情,同时是集合了文字以及图片,视频一起的! 99笔记安卓版介绍 电脑前.汽车里.被窝中--你永远不知道下一 ...

最新文章

  1. 从源码角度入手实现RecyclerView的Item点击事件
  2. tableau实战系列(三十八)-Tableau Server 端口耗竭的具体表象及如何避免端口耗竭
  3. python多线程写同一文件_Python多线程写文件实例
  4. vnc用户名 查看linux_vnc用户名未被识别,5步教你如何解决vnc用户名未被识别
  5. vue 同步加载_2019 前端面试题汇总(主要为 Vue)
  6. linux下ip地址转换整形,Linux中ip地址结构和ip地址的转换
  7. 整车电子电气架构EEA
  8. 线上CPU飙升问题排查
  9. Python爬取曾今的K歌
  10. 云笔记+心情日记类APP推荐
  11. matlab 求拟合直线的斜率_如何用matlab求出图中各条直线的斜率
  12. 获取市场上的股票代码
  13. 【真.干货】一篇文章了解关于计算机硬件那些事
  14. Windows装逼操作
  15. 学生学籍管理系统_学生登陆系统查询与修改信息
  16. MATLAB算法实战应用案例精讲-【数模应用】小批量梯度下降(MBGD)(附Python和MATLAB代码)
  17. Actions as Moving Points复现
  18. 两数之和、三数之和、四数之和、K数之和
  19. 14_自定义ItemDecoration实现qq好友列表分组效果
  20. 文章伪原创-文章伪原创工具

热门文章

  1. 上海企业英语培训机构排名
  2. hp 计算机如何显示在桌面上,HPDL1414 精致桌面小伴侣 显示时间日历和电脑状态(CPU温度负载...
  3. 借助WinPE进行Windows系统安装
  4. Linux补全命令分析,实现Linux下上下键和命令补全
  5. 匈牙利算法(Hungarian algorithm)
  6. python人口普查数据显示_如何使用FCC的API在Python中查找人口普查数据块并遍历dict列表?...
  7. 《密码编码学与网络安全》和《现代密码学》PDF
  8. CISP-PTS学习笔记-XSS
  9. Python爬虫实战+数据分析+数据可视化(前程无忧招聘信息)
  10. 手把手教你搞懂麦克风的技术指标