zoukankan      html  css  js  c++  java
  • Androidstudio实现一个简易的加法器——分享两种方法实现(日常作业练习)

    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界面布局源代码:

     

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     xmlns:app="http://schemas.android.com/apk/res-auto"
     4     xmlns:tools="http://schemas.android.com/tools"
     5     android:layout_width="match_parent"
     6     android:layout_height="match_parent"
     7     tools:context=".MainActivity">
     8 
     9     <EditText
    10         android:id="@+id/et1"
    11         android:layout_width="60dp"
    12         android:layout_height="45dp"
    13         android:layout_marginStart="76dp"
    14         android:layout_marginLeft="76dp"
    15         android:layout_marginTop="140dp"
    16         android:background="@drawable/border"
    17         android:ems="10"
    18         android:hint="加法1"
    19         android:inputType="textShortMessage|numberSigned"
    20         app:layout_constraintStart_toStartOf="parent"
    21         app:layout_constraintTop_toTopOf="parent" />
    22 
    23     <TextView
    24         android:id="@+id/tv"
    25         android:layout_width="80dp"
    26         android:layout_height="60dp"
    27         android:layout_marginTop="132dp"
    28         android:background="@drawable/border"
    29         android:gravity="center"
    30         android:hint=""
    31         android:textSize="24sp"
    32         app:layout_constraintStart_toEndOf="@+id/bt"
    33         app:layout_constraintTop_toTopOf="parent" />
    34 
    35     <TextView
    36         android:id="@+id/textView"
    37         android:layout_width="wrap_content"
    38         android:layout_height="wrap_content"
    39         android:layout_marginTop="140dp"
    40         android:text="+"
    41         android:background="@drawable/border"
    42         android:textSize="24sp"
    43         app:layout_constraintStart_toEndOf="@+id/et1"
    44         app:layout_constraintTop_toTopOf="parent" />
    45 
    46     <EditText
    47         android:id="@+id/et2"
    48         android:layout_width="60dp"
    49         android:layout_height="45dp"
    50         android:layout_marginTop="140dp"
    51         android:background="@drawable/border"
    52         android:ems="10"
    53         android:hint="加法2"
    54         android:inputType="numberSigned|textPersonName"
    55         app:layout_constraintStart_toEndOf="@+id/textView"
    56         app:layout_constraintTop_toTopOf="parent" />
    57 
    58     <Button
    59         android:id="@+id/bt"
    60         android:layout_width="50dp"
    61         android:layout_height="60dp"
    62         android:layout_marginTop="132dp"
    63         android:text="="
    64         android:textSize="24sp"
    65         app:layout_constraintStart_toEndOf="@+id/et2"
    66         app:layout_constraintTop_toTopOf="parent" />
    67 
    68 </androidx.constraintlayout.widget.ConstraintLayout>

     

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

     1 package com.example.computer;
     2 
     3 import androidx.appcompat.app.AppCompatActivity;
     4 
     5 import android.os.Bundle;
     6 import android.view.KeyEvent;
     7 import android.view.View;
     8 import android.widget.Button;
     9 import android.widget.EditText;
    10 import android.widget.TextView;
    11 
    12 public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    13 
    14     EditText et1;//声明加法1输入文本框变量为et1(与控件ID一致)
    15     EditText et2;//声明加法2输入文本框变量为et2(与控件ID一致)
    16     TextView tv;//声明和普通文本框变量为tv(与控件ID一致)
    17     Button bt;//声明等于按钮控件变量为bt(与控件ID一致)
    18     int sum;//定义一个sum自定义变量方便后面方法求和存放求和的值
    19 
    20     @Override
    21     protected void onCreate(Bundle savedInstanceState) {
    22         super.onCreate(savedInstanceState);
    23         setContentView(R.layout.activity_main);
    24 
    25         et1 = findViewById(R.id.et1);//寻找加法1输入文本框ID
    26         et2 = findViewById(R.id.et2);//寻找加法2输入文本框ID
    27         tv = findViewById(R.id.tv);//寻找和普通文本框ID
    28         bt=findViewById(R.id.bt);//寻找等于号普通按钮ID
    29         bt.setOnClickListener(this);//给等于号普通按钮安装一个监听器,便于点击等于号按钮,和就能求出
    30 
    31 
    32     }
    33 //String => int =>String
    34     @Override
    35     public void onClick(View v) {
    36     String j1=et1.getText().toString();//通过et1ID(加法1输入文本框)得到文本内容(数据类型为字符串型)赋值给j1(也就是说j1代表加法1,可以理解为是它的小名)
    37     String j2=et2.getText().toString();//通过et2ID(加法2输入文本框)得到文本内容(数据类型为字符串型)赋值给j2(也就是说j2代表加法2,可以理解为是它的小名)
    38     int num1=Integer.valueOf(j1).intValue();//将j1字符串类型强制转换为int类型
    39     int num2=Integer.valueOf(j2).intValue();//将j2字符串类型强制转换为int类型
    40     sum=num1+num2;//开始运算加法1+ 加法2=和(sum代表和的变量)
    41     j1=String.valueOf(sum);//再将sum(和),由int类型转换为string型便于,setText()输出(只能输出字符串类型),赋值给j1或者j2帮忙代理存储数据
    42    tv.setText(j1);//由于setText(只能输出字符串类型)所以通过j1(加法1或者j2加法2)代理帮忙存储来输出和的值
    43 
    60 
    61     }
    62 }

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

     1 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     2     <item android:state_pressed="true" >
     3         <shape>
     4             <solid
     5                 android:color="#449def" />
     6             <stroke
     7                 android:width="1dp"
     8                 android:color="#2f6699" />
     9             <corners
    10                 android:radius="0dp" />
    11             <padding
    12                 android:left="5dp"
    13                 android:top="5dp"
    14                 android:right="5dp"
    15                 android:bottom="5dp" />
    16         </shape>
    17     </item>
    18     <item>
    19         <shape>
    20             <gradient
    21                 android:startColor="#ffffff"
    22                 android:endColor="#ffffff"
    23                 android:angle="270" />
    24             <stroke
    25                 android:width="1dp"
    26                 android:color="#2f6699" />
    27             <corners
    28                 android:radius="0dp" />
    29             <padding
    30                 android:left="5dp"
    31                 android:top="5dp"
    32                 android:right="5dp"
    33                 android:bottom="5dp" />
    34         </shape>
    35     </item>
    36 </selector>

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

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

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

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

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     xmlns:app="http://schemas.android.com/apk/res-auto"
     4     xmlns:tools="http://schemas.android.com/tools"
     5     android:layout_width="match_parent"
     6     android:layout_height="match_parent"
     7     tools:context=".MainActivity">
     8 
     9     <EditText
    10         android:id="@+id/et1"
    11         android:layout_width="60dp"
    12         android:layout_height="45dp"
    13         android:layout_marginStart="76dp"
    14         android:layout_marginLeft="76dp"
    15         android:layout_marginTop="140dp"
    16         android:background="@drawable/border"
    17         android:ems="10"
    18         android:hint="加法1"
    19         android:gravity="center"
    20         android:inputType="textShortMessage|numberSigned"
    21         app:layout_constraintStart_toStartOf="parent"
    22         app:layout_constraintTop_toTopOf="parent" />
    23 
    24     <TextView
    25         android:id="@+id/textView"
    26         android:layout_width="wrap_content"
    27         android:layout_height="wrap_content"
    28         android:layout_marginTop="140dp"
    29         android:text="+"
    30         android:gravity="center"
    31         android:textSize="24sp"
    32         app:layout_constraintStart_toEndOf="@+id/et1"
    33         app:layout_constraintTop_toTopOf="parent" />
    34 
    35     <EditText
    36         android:id="@+id/et2"
    37         android:layout_width="60dp"
    38         android:layout_height="45dp"
    39         android:layout_marginTop="140dp"
    40         android:background="@drawable/border"
    41         android:ems="10"
    42         android:hint="加法2"
    43         android:inputType="numberSigned|textPersonName"
    44         app:layout_constraintStart_toEndOf="@+id/textView"
    45         app:layout_constraintTop_toTopOf="parent" />
    46 
    47     <TextView
    48         android:id="@+id/dy"
    49         android:layout_width="37dp"
    50         android:layout_height="44dp"
    51         android:layout_marginTop="144dp"
    52         android:gravity="center"
    53         android:onClick="MyClick"
    54         android:text="="
    55         android:textSize="24sp"
    56         app:layout_constraintStart_toEndOf="@+id/et2"
    57         app:layout_constraintTop_toTopOf="parent" />
    58 
    59     <TextView
    60         android:id="@+id/tv"
    61         android:layout_width="40dp"
    62         android:layout_height="50dp"
    63         android:layout_marginTop="140dp"
    64         android:hint=""
    65         android:gravity="center"
    66         android:textSize="24sp"
    67         android:background="@drawable/border"
    68         app:layout_constraintStart_toEndOf="@+id/dy"
    69         app:layout_constraintTop_toTopOf="parent" />
    70 
    71 </androidx.constraintlayout.widget.ConstraintLayout>

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

     

     1 package com.example.computer;
     2 
     3 import androidx.appcompat.app.AppCompatActivity;
     4 
     5 import android.os.Bundle;
     6 import android.view.View;
     7 
     8 import android.widget.EditText;
     9 import android.widget.TextView;
    10 
    11 public class MainActivity extends AppCompatActivity  {
    12     EditText et1;//声明加法1输入文本框变量为et1(与控件ID一致)
    13     EditText et2;//声明加法2输入文本框变量为et2(与控件ID一致)
    14     TextView tv;//声明和普通文本框变量为tv(与控件ID一致)
    15     TextView dy;//声明等于号普通文本框变量为tv(与控件ID一致)
    16     int sum;//定义一个sum自定义变量方便后面方法求和存放求和的值
    17 
    18     @Override
    19     protected void onCreate(Bundle savedInstanceState) {
    20         super.onCreate(savedInstanceState);
    21         setContentView(R.layout.activity_main);
    22         et1 = findViewById(R.id.et1);//寻找加法1输入文本框ID
    23         et2 = findViewById(R.id.et2);//寻找加法2输入文本框ID
    24         tv = findViewById(R.id.tv);//寻找和普通文本框ID
    25         dy=findViewById(R.id.dy);//寻找等于号普通文本框ID
    26 
    27     }
    28 
    29     public void MyClick(View view) {
    30         String j1=et1.getText().toString();//通过et1ID(加法1输入文本框)得到文本内容(数据类型为字符串型)赋值给j1(也就是说j1代表加法1,可以理解为是它的小名)
    31         String j2=et2.getText().toString();//通过et2ID(加法2输入文本框)得到文本内容(数据类型为字符串型)赋值给j2(也就是说j2代表加法2,可以理解为是它的小名)
    32       int  sum1=Integer.valueOf(j1).intValue();//将j1字符串类型强制转换为int类型
    33       int  sum2=Integer.valueOf(j2).intValue();//将j2字符串类型强制转换为int类型
    34       sum=sum1+sum2;//开始运算加法1+ 加法2=和(sum代表和的变量)
    35       j1=String.valueOf(sum);//再将sum(和),由int类型转换为string型便于,setText()输出(只能输出字符串类型),赋值给j1或者j2帮忙代理存储数据
    36       tv.setText(j1);//由于setText(只能输出字符串类型)所以通过j1(加法1或者j2加法2)代理帮忙存储来输出和的值
    37     }
    38 }

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

    三、总结简单概括:

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

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

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

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

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

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

     

  • 相关阅读:
    「题解」:07.16NOIP模拟T1:礼物
    「题解」:07.16NOIP模拟T2:通讯
    「题解」:图论专题总结
    07.07NOIP模拟赛
    [复习]平衡树splay
    「题解」:[组合数学][DP]:地精部落
    「题解」:[组合数学]:Perm 排列计数
    「题解」:[组合数学]:排队
    dp 杂题
    插头 dp 总结
  • 原文地址:https://www.cnblogs.com/adf520/p/12490787.html
Copyright © 2011-2022 走看看