Androidstudio实现一个简易的加法器——分享两种方法实现(日常作业练习)

                                                                                            ————安德风QQ1652102745

一、作业题目要求:

二、实现题目第一问(等号通过按钮实现【button】)

1、前期需要在activity_main.xml文件设计布局

 最终布局效果图

2、控件准备:

需要2个EditText控件(两个输入文本框):EditText1(用来作为加法1)、EditText2(用来作为加法2)

2个TextView控件: TextView1(用作“+”),TextView2(用作输出求和)

1个Button控件:Button1(用作“=”,用来点击等于时,TextView2作为输出和的结果)

PS:以上控件要求是用来作为布局使用,在MainActivity.java 文件中实现功能部分只用到:
EditText1(用来作为加法1)=》更改ID为et1、EditText2(用来作为加法2)=》更改ID为et2

Button1(用作“=”,用来点击等于时,TextView2作为输出和的结果)=>更改ID为bt

TextView2(用作输出求和)=》更改ID为tv

 更改ID名可以自定义,要求规范更改控件ID名要求见明知意,还有控件ID最好与MainActivity.java 文件中声明变量一致便于修改。

3、activity_main.xml界面布局源代码:

 <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".MainActivity"> <EditText
android:id="@+id/et1"
android:layout_width="60dp"
android:layout_height="45dp"
android:layout_marginStart="76dp"
android:layout_marginLeft="76dp"
android:layout_marginTop="140dp"
android:background="@drawable/border"
android:ems=""
android:hint="加法1"
android:inputType="textShortMessage|numberSigned"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> <TextView
android:id="@+id/tv"
android:layout_width="80dp"
android:layout_height="60dp"
android:layout_marginTop="132dp"
android:background="@drawable/border"
android:gravity="center"
android:hint="和"
android:textSize="24sp"
app:layout_constraintStart_toEndOf="@+id/bt"
app:layout_constraintTop_toTopOf="parent" /> <TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="140dp"
android:text="+"
android:background="@drawable/border"
android:textSize="24sp"
app:layout_constraintStart_toEndOf="@+id/et1"
app:layout_constraintTop_toTopOf="parent" /> <EditText
android:id="@+id/et2"
android:layout_width="60dp"
android:layout_height="45dp"
android:layout_marginTop="140dp"
android:background="@drawable/border"
android:ems=""
android:hint="加法2"
android:inputType="numberSigned|textPersonName"
app:layout_constraintStart_toEndOf="@+id/textView"
app:layout_constraintTop_toTopOf="parent" /> <Button
android:id="@+id/bt"
android:layout_width="50dp"
android:layout_height="60dp"
android:layout_marginTop="132dp"
android:text="="
android:textSize="24sp"
app:layout_constraintStart_toEndOf="@+id/et2"
app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>

4、实现功能MainActivity.java源代码

 package com.example.computer;

 import androidx.appcompat.app.AppCompatActivity;

 import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnClickListener { EditText et1;//声明加法1输入文本框变量为et1(与控件ID一致)
EditText et2;//声明加法2输入文本框变量为et2(与控件ID一致)
TextView tv;//声明和普通文本框变量为tv(与控件ID一致)
Button bt;//声明等于按钮控件变量为bt(与控件ID一致)
int sum;//定义一个sum自定义变量方便后面方法求和存放求和的值 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); et1 = findViewById(R.id.et1);//寻找加法1输入文本框ID
et2 = findViewById(R.id.et2);//寻找加法2输入文本框ID
tv = findViewById(R.id.tv);//寻找和普通文本框ID
bt=findViewById(R.id.bt);//寻找等于号普通按钮ID
bt.setOnClickListener(this);//给等于号普通按钮安装一个监听器,便于点击等于号按钮,和就能求出 }
//String => int =>String
@Override
public void onClick(View v) {
String j1=et1.getText().toString();//通过et1ID(加法1输入文本框)得到文本内容(数据类型为字符串型)赋值给j1(也就是说j1代表加法1,可以理解为是它的小名)
String j2=et2.getText().toString();//通过et2ID(加法2输入文本框)得到文本内容(数据类型为字符串型)赋值给j2(也就是说j2代表加法2,可以理解为是它的小名)
int num1=Integer.valueOf(j1).intValue();//将j1字符串类型强制转换为int类型
int num2=Integer.valueOf(j2).intValue();//将j2字符串类型强制转换为int类型
sum=num1+num2;//开始运算加法1+ 加法2=和(sum代表和的变量)
j1=String.valueOf(sum);//再将sum(和),由int类型转换为string型便于,setText()输出(只能输出字符串类型),赋值给j1或者j2帮忙代理存储数据
tv.setText(j1);//由于setText(只能输出字符串类型)所以通过j1(加法1或者j2加法2)代理帮忙存储来输出和的值 }
}

5、实现文本边框border.xml源代码:

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<solid
android:color="#449def" />
<stroke
android:width="1dp"
android:color="#2f6699" />
<corners
android:radius="0dp" />
<padding
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#ffffff"
android:endColor="#ffffff"
android:angle="" />
<stroke
android:width="1dp"
android:color="#2f6699" />
<corners
android:radius="0dp" />
<padding
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp" />
</shape>
</item>
</selector>

 6、最终在模拟器调试代码效果图:

三、实现题目思考题第二问(等号通过普通文本框实现【TextView】)

 1、通过在上面第一问布局设计的基础上只需要稍作修改即可,把等号按钮(Button控件)改成等号文本(TextView控件,这里我把等号文本ID更改为dy),其余控件不变如图所示:

2、activity_main.xml界面布局源代码:

 <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".MainActivity"> <EditText
android:id="@+id/et1"
android:layout_width="60dp"
android:layout_height="45dp"
android:layout_marginStart="76dp"
android:layout_marginLeft="76dp"
android:layout_marginTop="140dp"
android:background="@drawable/border"
android:ems=""
android:hint="加法1"
android:gravity="center"
android:inputType="textShortMessage|numberSigned"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> <TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="140dp"
android:text="+"
android:gravity="center"
android:textSize="24sp"
app:layout_constraintStart_toEndOf="@+id/et1"
app:layout_constraintTop_toTopOf="parent" /> <EditText
android:id="@+id/et2"
android:layout_width="60dp"
android:layout_height="45dp"
android:layout_marginTop="140dp"
android:background="@drawable/border"
android:ems=""
android:hint="加法2"
android:inputType="numberSigned|textPersonName"
app:layout_constraintStart_toEndOf="@+id/textView"
app:layout_constraintTop_toTopOf="parent" /> <TextView
android:id="@+id/dy"
android:layout_width="37dp"
android:layout_height="44dp"
android:layout_marginTop="144dp"
android:gravity="center"
android:onClick="MyClick"
android:text="="
android:textSize="24sp"
app:layout_constraintStart_toEndOf="@+id/et2"
app:layout_constraintTop_toTopOf="parent" /> <TextView
android:id="@+id/tv"
android:layout_width="40dp"
android:layout_height="50dp"
android:layout_marginTop="140dp"
android:hint="和"
android:gravity="center"
android:textSize="24sp"
android:background="@drawable/border"
app:layout_constraintStart_toEndOf="@+id/dy"
app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>

3、实现功能MainActivity.java源代码

 package com.example.computer;

 import androidx.appcompat.app.AppCompatActivity;

 import android.os.Bundle;
import android.view.View; import android.widget.EditText;
import android.widget.TextView; public class MainActivity extends AppCompatActivity {
EditText et1;//声明加法1输入文本框变量为et1(与控件ID一致)
EditText et2;//声明加法2输入文本框变量为et2(与控件ID一致)
TextView tv;//声明和普通文本框变量为tv(与控件ID一致)
TextView dy;//声明等于号普通文本框变量为tv(与控件ID一致)
int sum;//定义一个sum自定义变量方便后面方法求和存放求和的值 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1 = findViewById(R.id.et1);//寻找加法1输入文本框ID
et2 = findViewById(R.id.et2);//寻找加法2输入文本框ID
tv = findViewById(R.id.tv);//寻找和普通文本框ID
dy=findViewById(R.id.dy);//寻找等于号普通文本框ID } public void MyClick(View view) {
String j1=et1.getText().toString();//通过et1ID(加法1输入文本框)得到文本内容(数据类型为字符串型)赋值给j1(也就是说j1代表加法1,可以理解为是它的小名)
String j2=et2.getText().toString();//通过et2ID(加法2输入文本框)得到文本内容(数据类型为字符串型)赋值给j2(也就是说j2代表加法2,可以理解为是它的小名)
int sum1=Integer.valueOf(j1).intValue();//将j1字符串类型强制转换为int类型
int sum2=Integer.valueOf(j2).intValue();//将j2字符串类型强制转换为int类型
sum=sum1+sum2;//开始运算加法1+ 加法2=和(sum代表和的变量)
j1=String.valueOf(sum);//再将sum(和),由int类型转换为string型便于,setText()输出(只能输出字符串类型),赋值给j1或者j2帮忙代理存储数据
tv.setText(j1);//由于setText(只能输出字符串类型)所以通过j1(加法1或者j2加法2)代理帮忙存储来输出和的值
}
}

4、最终在模拟器调试代码效果图:

三、总结简单概括:

    问题1核心代码讲解 :等号(button控件)采用通过内部类+接口的方式实现加法器功能

    问题2 核心代码讲解: 等号(TextView文本控件)采用OnClick属性实现加法器功能

     问题1+问题2在实现加法功能中运用到了,数据类型转换的知识:

    在实现加法器过程中用到三次数据类型转换

(①起初用户输入加法1或加法2时用了String ——>②为了便于做加法计算需要强制转换成int——>③为了最终输出结果用到setText()函数,该函数输出结果只能为字符串类型,所以要强制转换成String)

 以上总结是我在实现简单加法器的2种方法,希望能给大家带来帮助。感谢大家关注,有问题欢迎在下方留言。看到后我会一一解答。

Androidstudio实现一个简易的加法器——分享两种方法实现(日常作业练习)的更多相关文章

  1. 两种方法使用js读写cookie实现一个底部广告浮层效果

    下面一个案例实现了js实现一个页面浮层并且使用两种方法使用js读写cookie:来实现用户关闭广告的显示状态: 读者可以将下面代码复制到一个html文件试试效果:html的pre标签未两种js实现的方 ...

  2. UIImage加载图片的两种方法区别

    Apple官方的文档为生成一个UIImage对象提供了两种方法加载图片: 1. imageNamed,其参数为图片的名字: 2. imageWithContentsOfFile,其参数也是图片文件的路 ...

  3. 使用JavaScript获取URL中的参数(两种方法)

    本文给大家分享两种方法使用js获取url中的参数,其中方法二是使用的正则表达式方法,大家可以根据需要选择比较好的方法,废话不多说了,直接看详细介绍吧. 方法一: //取url参数 var type = ...

  4. iframe-父子-兄弟页面相互传值(jq和js两种方法)

    参考文章: http://blog.csdn.net/u013299635/article/details/78773207 http://www.cnblogs.com/xyicheng/archi ...

  5. Android一个ListView列表之中插入两种不同的数据

    http://www.cnblogs.com/roucheng/ Android一个ListView列表之中插入两种不同的数据 代码如下: public class ViewHolder{ Butto ...

  6. php 分享两种给图片加水印的方法

    本文章向码农们介绍 php 给图片加水印的两种方法,感兴趣的码农可以参考一下本文章的源代码. 方法一:PHP最简单的加水印方法 <?php // http://www.manongjc.com ...

  7. ToStringBuilder学习(二):两种方法用法优缺点及一个问题

    研究ApacheCommon源码, 先从一个最简单的开始,即围绕Object类里的toString方法自动化实现的一系列类.         怎么来自动化地实现toString方法, 有两种:反射和手 ...

  8. 可采用两种方法得到一个EJB对象

    (本文是转载其他人的技术文章,觉得说得挺浅显易懂,特借来学习)     在前面学习的例子中,只有一个EJB,但是对于一个真实的项目,EJB的数量可以有很多,而且EJB之间也会互相调用,那么在一个EJB ...

  9. 设置一个DIV块固定在屏幕中央(两种方法)

    设置一个DIV块固定在屏幕中央(两种方法) 方法一: 对一个div进行以下设置即可实现居中. <style> #a{ position: fixed; top: 0px; left: 0p ...

随机推荐

  1. JS UTC 昨天

    var birthday = new Date("Jan 01, 1983 01:15:00") var formatDate = function (date) {       ...

  2. 吴裕雄--天生自然HTML学习笔记:HTML 统一资源定位器(Uniform Resource Locators)

    URL 是一个网页地址. URL可以由字母组成,如"runoob.com",或互联网协议(IP)地址: 192.68.20.50.大多数人进入网站使用网站域名来访问,因为 名字比数 ...

  3. JS数字千分

    JS数字千分: 1.例子:1000--->1,000 2.实现如下: salesToFormat: function (num) { var num = (num || 0).toString( ...

  4. Ionic3学习笔记(十二)拍照上传图片以及从相册选择图片上传

    本文为原创文章,转载请标明出处 目录 安装插件 导入 app.module.ts 创建 provider 更多 效果图 1. 安装插件 终端运行: ionic cordova plugin add c ...

  5. 在JavaScript里的“对象字面量”是什么意思?

    字面量表示如何表达这个值,一般除去表达式,给变量赋值时,等号右边都可以认为是字面量.字面量分为字符串字面量(string literal ).数组字面量(array literal)和对象字面量(ob ...

  6. Google在百慕大避税几十亿美金,为什么巨头和富豪都会选百慕大避税?

    为什么"越有钱越有钱"?为什么富豪只要不自己"作",就能让自己的财富疯狂增加?除了经营意识之外,关键他们还可以利用自己的资源.实力等去做很多看似让人不齿,但其实 ...

  7. DZNEmptyDataSet的使用

    DZNEmptyDataSet是外国友人写的开源项目,github地址(具体的使用以及Demo,点击进入github主页),简单介绍下DZNEmptyDataSet的使用方法. 对于iOS开发者来说, ...

  8. 2018.2最新-Scrapy+elasticSearch+Django打造搜索引擎(二)

    请问您今天要来个引擎吗? 工欲善其事必先利其器 最终项目上线演示地址: http://search.mtianyan.cn 第二节:我们搞搞比利,搞搞环境的搭建.Github地址: https://g ...

  9. 对javascript EventLoop事件循环机制不一样的理解

    前置知识点: 浏览器原理,浏览器内核5种线程及协作,JS引擎单线程设计推荐阅读: 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理 [FE]浏览器渲染引擎「内核」 js异步编程,Promise ...

  10. scss入门学习(一)

    sass的文件后缀名 sass是目前流行的css预处理语言.sass有两种后缀文件,一种是.sass,不允许使用大括号和分号:另一种是.SCSS,允许使用大括号和分号,类似于我们平时写css的语法习惯 ...