今天课程:

、点击事件的添加

①首先我们应该用写入EditText可编辑文本框,它有一个属性

android:hint="" 可在文本框里写入字符,当你写入其他的字符时会消失;写一个Button按钮标签,属性
android:onClick="doSubmit"是一个点击事件,如doSubmit在MainActivity.java写入监听方法,事件监听有三种写法:

1.1 标签上直接绑定监听方法
      public void xxx(View view) view代表的是按钮里的text

1.2 创建监听器对象,组件再绑定监听器对象
    1.2.1 匿名内部类

1.2.2 使用匿名内部类并定义成全局的属性

②不写onClick事件,可以在MainActivity中继承View.OnClickListene ,再在

onCreate方法中设值。

在监听事件中可以用switch ...case来循环判断条件。

最后我们写了一个简单实现计算机的方法

这是我用网格布局写的简单计算机实现,但有点问题,在夜神运算时会停止运行,请看到的大神指教

activity.mian.xml

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:rowCount="5"android:columnCount="4"tools:context=".MainActivity"><EditTextandroid:id="@+id/main_et_result"android:layout_width="100dp"android:layout_height="100dp"android:layout_columnSpan="4"android:hint="计算"/><Buttonandroid:id="@+id/main_btn_btn1"android:layout_width="60dp"android:layout_height="60dp"android:text="1"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn2"android:layout_width="60dp"android:layout_height="60dp"android:text="2"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn3"android:layout_width="60dp"android:layout_height="60dp"android:text="3"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_chu"android:layout_width="60dp"android:layout_height="60dp"android:text="/"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn4"android:layout_width="60dp"android:layout_height="60dp"android:text="4"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn5"android:layout_width="60dp"android:layout_height="60dp"android:text="5"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn6"android:layout_width="60dp"android:layout_height="60dp"android:text="6"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_cheng"android:layout_width="60dp"android:layout_height="60dp"android:text="*"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn7"android:layout_width="60dp"android:layout_height="60dp"android:text="7"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn8"android:layout_width="60dp"android:layout_height="60dp"android:text="8"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn9"android:layout_width="60dp"android:layout_height="60dp"android:text="9"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_jian"android:layout_width="60dp"android:layout_height="60dp"android:text="-"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn0"android:layout_width="60dp"android:layout_height="60dp"android:layout_gravity="fill_horizontal"android:layout_columnSpan="2"android:text="0"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_dian"android:layout_width="60dp"android:layout_height="60dp"android:text="."android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_jia"android:layout_width="60dp"android:layout_height="60dp"android:layout_gravity="fill_vertical"android:layout_rowSpan="2"android:text="+"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_ok"android:layout_width="60dp"android:layout_height="60dp"android:layout_gravity="fill_horizontal"android:layout_columnSpan="3"android:text="="android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_clear"android:layout_width="60dp"android:layout_height="60dp"android:layout_columnSpan="1"android:text="c"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_del"android:layout_width="60dp"android:layout_height="60dp"android:layout_columnSpan="1"android:text="del"android:onClick="doSubmit"/><Space /></GridLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity implements  View.OnClickListener{private EditText main_et_result;boolean clear_flag;//清空@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);main_et_result = findViewById(R.id.main_et_result);}@Overridepublic void doSubmit(View view) {int id = view.getId();String input = main_et_result.getText().toString();switch (id){case R.id.main_btn_btn0:main_et_result.setText(main_et_result.getText().toString()+"0");break;case R.id.main_btn_btn1:main_et_result.setText(main_et_result.getText().toString()+"1");break;case R.id.main_btn_btn2:main_et_result.setText(main_et_result.getText().toString()+"2");break;case R.id.main_btn_btn3:main_et_result.setText(main_et_result.getText().toString()+"3");break;case R.id.main_btn_btn4:main_et_result.setText(main_et_result.getText().toString()+"4");break;case R.id.main_btn_btn5:main_et_result.setText(main_et_result.getText().toString()+"5");break;case R.id.main_btn_btn6:main_et_result.setText(main_et_result.getText().toString()+"6");break;case R.id.main_btn_btn7:main_et_result.setText(main_et_result.getText().toString()+"7");break;case R.id.main_btn_btn8:main_et_result.setText(main_et_result.getText().toString()+"8");break;case R.id.main_btn_btn9:main_et_result.setText(main_et_result.getText().toString()+"9");break;case R.id.main_btn_btn_cheng:main_et_result.setText(main_et_result.getText().toString()+"*");break;case R.id.main_btn_btn_chu:main_et_result.setText(main_et_result.getText().toString()+"/");if(clear_flag){clear_flag = false;input = "";main_et_result.setText("");}main_et_result.setText(input+((Button) view).getText().toString());break;case R.id.main_btn_btn_jia:main_et_result.setText(main_et_result.getText().toString()+"+");break;case R.id.main_btn_btn_jian:main_et_result.setText(main_et_result.getText().toString()+"-");break;case R.id.main_btn_btn_dian:main_et_result.setText(main_et_result.getText().toString()+".");if(clear_flag){clear_flag = false;main_et_result.setText("");}main_et_result.setText(input+((Button) view).getText().toString());break;case R.id.main_btn_btn_ok:main_et_result.setText("=");getResult();break;case R.id.main_btn_btn_del:main_et_result.setText("del");if(clear_flag){clear_flag = false;main_et_result.setText("");}else if(input != null || !input.equals("")){main_et_result.setText(input.substring(0,input.length()-1));}break;case R.id.main_btn_btn_clear:main_et_result.setText("c");clear_flag = false;input = "";main_et_result.setText("");break;}}private void getResult() {String exp = main_et_result.getText().toString();if(exp==null||exp.equals(""))return;if(!exp.contains(""))return;if(clear_flag){clear_flag = false;return;}clear_flag = true;double result = 0;//运算符前的数字String s1 = exp.substring(0,exp.indexOf(" "));//运算符String op = exp.substring(exp.indexOf(" ")+1,exp.indexOf(" ")+2);//运算符后的数字String s2 = exp.substring(exp.indexOf(" ")+3);if(!s1.equals("")&&!s2.equals("")){double d1 = Double.parseDouble(s1);double d2 = Double.parseDouble(s2);if(op.equals("+")){result = d1+d2;}else if(op.equals("-")){result = d1-d2;}else if(op.equals("*")){result = d1*d2;}else if(op.equals("/")){if(d2==0){result = 0;}else{result = d1/d2;}}if(!s1.contains(".")&& !s2.contains(".")&&!op.equals("/")){int r =(int) result;main_et_result.setText(r+"");}else{main_et_result.setText(result+"");}}else if(!s1.equals("")&&s2.equals("")){main_et_result.setText(exp);}else if(s1.equals("")&& !s2.equals("")){double d2 = Double.parseDouble(s2);if(op.equals("+")){result = 0+d2;}else if(op.equals("-")){result = 0-d2;}else if(op.equals("*")){result = 0;}else if(op.equals("/")){result = 0;}if(!s1.contains(".")&&!s2.contains(".")){int r = (int)result;main_et_result.setText(r+"");}else{main_et_result.setText(result+"");}}else{main_et_result.setText("");}}
}
 
 
 
 

二、输入框引入外形资源调节样式

Android资源
   1.1 什么是资源
       指在res文件夹下的xml文件,每一种类型的xml文件都对应了一种资源。
       例如:外形资源(shape)、尺寸资源(dimension)、颜色资源(color)等
   1.2 尺寸资源和颜色资源放res/values目录下 
   1.3 *.xml(文本框的外形资源)可放到drawable目录下
   1.4 设置渐变色与背景色只能取其一,后面会覆盖前面的

根据获得/失去焦点边框变色编辑框
2. 选择器
  2.1 作用:根据控件状态显示不同样式
  2.2 Item: 指定不同状态下控件显示哪个样式

<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/main_et_shape" android:state_focused="true"></item><item android:drawable="@drawable/main_et_shape2" android:state_focused="false"></item>
</selector>

三、今天的收获

今天其实还听了一个同学的技术分享,感觉太牛了,讲的好详细,我自己也在研究一个技术,但没有什么进展,有点伤心,感觉自己不够用心。。。想到以为教员说的:时间还没到就不能说放弃!!!

现在说放弃太没有出息了,是时候学会成长了。。自己还不太成熟,总爱贪玩。加油!!!希望有大神能指点我!!

用Android实现计算器相关推荐

  1. android简易计算器

    android简易计算器 说明:完成简易版计算器,能够实现基本的加.减.乘.除运算 图示: 布局文件 <?xml version="1.0" encoding="u ...

  2. Android简单计算器实现

    Android简单计算器实现 前言 最近刚开始学习安卓,只是简单的看到布局那块,就开始上手写了,从布局那里就开始各种乱,还到处拖按钮,一开始的第一版只能实现两个数的运算,比较简单,就是简单的上了个手, ...

  3. android 字符串转小数点,Android实现计算器(计算表达式/计算小数点以及括号)...

    本文实例为大家分享了Android实现计算器的具体代码,供大家参考,具体内容如下 布局代码: xmlns:app="http://schemas.android.com/apk/res-au ...

  4. Android个人所得税计算器

    本人所做的android个人所得税计算器程序. 先贴效果图: 1.layout布局主要使用TableLayout,代码如下 <?xml version="1.0" encod ...

  5. android复杂计算器代码,android简单计算器代码

    <android简单计算器代码>由会员分享,可在线阅读,更多相关<android简单计算器代码(9页珍藏版)>请在人人文库网上搜索. 1.package class Calcu ...

  6. android实现计算器功能吗,利用Android实现一个简单的计算器功能

    利用Android实现一个简单的计算器功能 发布时间:2020-11-20 16:25:01 来源:亿速云 阅读:90 作者:Leah 今天就跟大家聊聊有关利用Android实现一个简单的计算器功能, ...

  7. android开发计算器微积分,不到1M的良心之作!连微积分都能算的计算器APP_TOM科技...

    [PConline 应用]计算器可谓是被手机取代的一大电子产品了,不过手机上的APP是否真的有传统的计算器好用?也并不一定.一来,手机上的计算器APP功能普遍偏弱,特别是手机ROM自带的计算器:二来, ...

  8. android 开源计算器,开源Windows 10计算器应用迎来Web/Android/iOS移植版

    开源的跨平台特性,使得基于 UWP 代码的 Windows 10 计算器应用可以在非 Windows 平台上运行. Uno 在一篇博客文章中表示:Windows Calculator 完全使用标准的 ...

  9. android简易计算器的实现

    最近接触了android开发就试着写了一个计算器的小程序: 在xml文件中的布局代码如下: 1 <?xml version="1.0" encoding="utf- ...

  10. Android 房租计算器,简单计算器

    房租计算器 功能简介 1.根据入住时间,计算入住至今的月份间隔,x月x天: 2.自定义计算器,无括号,简单计算器: 3.使用SqLite存储计算结果,使用RecyclerView显示数据,实现刷新和加 ...

最新文章

  1. 架构师之路 — 数据库设计 — 关系型数据库理论
  2. 从零开始学习jQuery (九) jQuery工具函数 【转】
  3. 【OpenCV】OpenCV函数精讲之 -- Mat和IplImage之间的相互装换(OpenCV2.0和OpenCV3.0)
  4. 机器学习算法中文视频教程
  5. php 5.0打印数据库,thinkphp5.0数据库操作
  6. 有人抄袭微信红包和表情被罚了40万!这下“吹牛”可能牛不起来了
  7. Day6 数据清洗(2)
  8. pip极速安装指定下载源
  9. 做了一个验证码识别的网站
  10. 极客大学产品经理训练营:数据分析 第八章作业
  11. 密码字典生成工具:crunch
  12. 软件工程概述思维导图总结(一)
  13. 如何自己开发漏洞扫描工具
  14. 使用SCI-HUB下载论文
  15. fatal: 无法创建 '/xxx/xxx/xxx/xxx/.git/index.lock':文件已存在。似乎另外一个 git 进程在这个仓库中运行,例如:'git commit' 命令打开了一个编辑
  16. 用Python生成人人贷借款理由词云图
  17. 月租最便宜的手机卡_月租最高不超过10元!最适合当副卡的手机卡套餐全在这了...
  18. 推荐一个非常不错得网站——精品视频网
  19. 海康视频VTM流监控浏览器实时播放调试总结
  20. 关于AOP 的切点的作用范围详解(一)

热门文章

  1. three.js 笔记 --- 渲染图片 和 渲染obj,mtl文件
  2. java:数组的静态和动态声明
  3. 2020清华计算机科学与技术录取分析总结
  4. SimpleDateFormat类的使用
  5. 【C++】多线程同步
  6. ext4 笔记一(与ext3比较)
  7. 阿里云虚拟主机,免费用
  8. iOS使用 Metrickit 收集崩溃日志
  9. 《工程电磁场》学习笔记2-恒定电场
  10. linux使用Quota配额之须配额目录为非独立文件系统并无可分配分区解决办法