zoukankan      html  css  js  c++  java
  • android简易计算器的实现

    最近接触了android开发就试着写了一个计算器的小程序:

    在xml文件中的布局代码如下:

      1 <?xml version="1.0" encoding="utf-8"?>
      2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      3     xmlns:tools="http://schemas.android.com/tools"
      4     android:id="@+id/activity_ji_suan02"
      5     android:layout_width="match_parent"
      6     android:layout_height="match_parent"
      7     android:orientation="vertical"
      8     tools:context="com.example.whs.sample01_1_activity.JiSuanActivity02">
      9 
     10     <TextView
     11         android:id="@+id/tv"
     12         android:layout_width="match_parent"
     13         android:layout_height="40dp"
     14         android:textSize="30dp"
     15         android:text="0"
     16         android:textColor="#ff0000"
     17         android:gravity="center_vertical|right"
     18         android:layout_marginRight="5dp"
     19         android:layout_marginLeft="5dp"
     20         android:background="#FFFF00"
     21         />
     22     <!--7 8 9 + -->
     23     <LinearLayout
     24         android:layout_width="match_parent"
     25         android:layout_height="wrap_content"
     26         android:paddingTop="5dp"
     27         android:orientation="horizontal"
     28         >
     29 
     30         <Button
     31             android:id="@+id/Button07"
     32             android:text="7"
     33             android:textSize="25dp"
     34             android:layout_width="80dp"
     35             android:layout_height="wrap_content" />
     36         <Button
     37             android:id="@+id/Button08"
     38             android:text="8"
     39             android:textSize="25dp"
     40             android:layout_width="80dp"
     41             android:layout_height="wrap_content" />
     42         <Button
     43             android:id="@+id/Button09"
     44             android:text="9"
     45             android:textSize="25dp"
     46             android:layout_width="80dp"
     47             android:layout_height="wrap_content" />
     48         <Button
     49             android:id="@+id/ButtonJia"
     50             android:text="+"
     51             android:textSize="25dp"
     52             android:layout_width="80dp"
     53             android:layout_height="wrap_content" />
     54 
     55     </LinearLayout>
     56 
     57     <!--4 5 6 - -->
     58     <LinearLayout
     59         android:layout_width="match_parent"
     60         android:layout_height="wrap_content"
     61         android:paddingTop="5dp"
     62         android:orientation="horizontal"
     63         >
     64 
     65         <Button
     66             android:id="@+id/Button04"
     67             android:text="4"
     68             android:textSize="25dp"
     69             android:layout_width="80dp"
     70             android:layout_height="wrap_content" />
     71         <Button
     72             android:id="@+id/Button05"
     73             android:text="5"
     74             android:textSize="25dp"
     75             android:layout_width="80dp"
     76             android:layout_height="wrap_content" />
     77         <Button
     78             android:id="@+id/Button06"
     79             android:text="6"
     80             android:textSize="25dp"
     81             android:layout_width="80dp"
     82             android:layout_height="wrap_content" />
     83         <Button
     84             android:id="@+id/ButtonJian"
     85             android:text="-"
     86             android:textSize="25dp"
     87             android:layout_width="80dp"
     88             android:layout_height="wrap_content" />
     89 
     90     </LinearLayout>
     91 
     92     <!--1 2 3 * -->
     93     <LinearLayout
     94         android:layout_width="match_parent"
     95         android:layout_height="wrap_content"
     96         android:paddingTop="5dp"
     97         android:orientation="horizontal"
     98         >
     99 
    100         <Button
    101             android:id="@+id/Button01"
    102             android:text="1"
    103             android:textSize="25dp"
    104             android:layout_width="80dp"
    105             android:layout_height="wrap_content" />
    106         <Button
    107             android:id="@+id/Button02"
    108             android:text="2"
    109             android:textSize="25dp"
    110             android:layout_width="80dp"
    111             android:layout_height="wrap_content" />
    112         <Button
    113             android:id="@+id/Button03"
    114             android:text="3"
    115             android:textSize="25dp"
    116             android:layout_width="80dp"
    117             android:layout_height="wrap_content" />
    118         <Button
    119             android:id="@+id/ButtonCheng"
    120             android:text="*"
    121             android:textSize="25dp"
    122             android:layout_width="80dp"
    123             android:layout_height="wrap_content" />
    124 
    125     </LinearLayout>
    126 
    127     <!--0 C = / -->
    128     <LinearLayout
    129         android:layout_width="match_parent"
    130         android:layout_height="wrap_content"
    131         android:paddingTop="5dp"
    132         android:orientation="horizontal"
    133         >
    134 
    135         <Button
    136             android:id="@+id/Button00"
    137             android:text="0"
    138             android:textSize="25dp"
    139             android:layout_width="80dp"
    140             android:layout_height="wrap_content" />
    141         <Button
    142             android:id="@+id/ButtonC"
    143             android:text="C"
    144             android:textSize="25dp"
    145             android:layout_width="80dp"
    146             android:layout_height="wrap_content" />
    147         <Button
    148             android:id="@+id/ButtonDeng"
    149             android:text="="
    150             android:textSize="25dp"
    151             android:layout_width="80dp"
    152             android:layout_height="wrap_content" />
    153         <Button
    154             android:id="@+id/ButtonChu"
    155             android:text="/"
    156             android:textSize="25dp"
    157             android:layout_width="80dp"
    158             android:layout_height="wrap_content" />
    159 
    160     </LinearLayout>
    161 
    162 
    163 
    164 
    165 
    166 </LinearLayout>

    在activity中实现具体的功能

      1 package com.example.whs.sample01_1_activity;
      2 
      3 import android.provider.Settings;
      4 import android.support.v7.app.AppCompatActivity;
      5 import android.os.Bundle;
      6 import android.view.View;
      7 import android.widget.Button;
      8 import android.widget.TextView;
      9 import android.widget.Toast;
     10 
     11 public class JiSuanActivity02 extends AppCompatActivity {
     12 
     13     TextView tv;
     14     int[] buttons;      //数字按钮数组
     15     int result;
     16     int result0;
     17     int  result1;
     18 
     19     //按钮对象声明
     20     Button buttonC;
     21     Button buttonJia;
     22     Button buttonJian;
     23     Button buttonCheng;
     24     Button buttonChu;
     25     Button buttonDengyu;
     26 
     27     String str1;    //旧输入的值
     28     String str2;    //新输入的值
     29 
     30     int flag=0;     //计算标志位,0第一次输入;1加; 2减; 3乘; 4除; 5等于
     31     Button temp;
     32 
     33     @Override
     34     protected void onCreate(Bundle savedInstanceState) {
     35         super.onCreate(savedInstanceState);
     36         setContentView(R.layout.activity_ji_suan02);
     37 
     38         initButton();
     39         //清空按钮点击事件
     40         buttonC.setOnClickListener(new View.OnClickListener() {
     41             @Override
     42             public void onClick(View view) {
     43                 str1 = "";
     44                 str2 = "";
     45                 tv.setText("0");
     46                 result = 0;
     47                 result1 = 0;
     48                 result0 = 0;
     49                 flag = 0;
     50             }
     51         });
     52 
     53         //监听
     54         for (int i = 0; i < buttons.length; i++){
     55             temp = getBtnForId(buttons[i]);
     56             temp.setOnClickListener(new View.OnClickListener() {
     57                 @Override
     58                 public void onClick(View view) {
     59                     if (flag != 0){
     60                         str1 = "";
     61                     }else {
     62                         str1 = tv.getText().toString().trim();
     63                         if (str1.equals("0")){
     64                             str1 = "";
     65                         }
     66                     }
     67 
     68                     str1 = str1 + String.valueOf(((Button)view).getText()); //获取新值
     69                     tv.setText(str1);
     70                 }
     71             });
     72         }
     73 
     74         buttonListener(buttonJia, 1);
     75         buttonListener(buttonJian, 2);
     76         buttonListener(buttonCheng, 3);
     77         buttonListener(buttonChu, 4);
     78 
     79         buttonDengyu.setOnClickListener(new View.OnClickListener() {
     80             @Override
     81             public void onClick(View view) {
     82 
     83                 result1 = Integer.parseInt(str1);
     84 
     85                 if (flag == 1){
     86                     result = result0 + result1;
     87                 }else if (flag == 2){
     88                     result = result0 - result1;
     89                 }else if (flag == 3){
     90                     result = result0 * result1;
     91                 }else if (flag == 4){
     92                     if (result1 == 0){
     93                         Toast.makeText(JiSuanActivity02.this, "除数不能为0", Toast.LENGTH_SHORT).show();
     94                     }else {
     95                         result = result0 / result1;
     96                     }
     97 
     98                 }else if (flag == 0){
     99                     result = result1;
    100                 }
    101                 String str = (result + "").trim();
    102 
    103                 if (result1 == 0 && flag == 4){
    104                     str = "错误";
    105                 }
    106                 tv.setText(str);
    107                 Toast.makeText(JiSuanActivity02.this, "结果是:" + result, Toast.LENGTH_SHORT).show();
    108             }
    109         });
    110     }
    111 
    112     //初始化控件资源
    113     public void initButton(){
    114         tv = (TextView)this.findViewById(R.id.tv);
    115         str1 = String.valueOf(tv.getText());
    116         str2 = "";
    117         buttonC = getBtnForId(R.id.ButtonC);
    118         buttonJia = getBtnForId(R.id.ButtonJia);
    119         buttonJian = getBtnForId(R.id.ButtonJian);
    120         buttonCheng = getBtnForId(R.id.ButtonCheng);
    121         buttonChu = getBtnForId(R.id.ButtonChu);
    122         buttonDengyu = getBtnForId(R.id.ButtonDeng);
    123 
    124         buttons = new int[]{
    125                 R.id.Button00,R.id.Button01,R.id.Button02,
    126                 R.id.Button03,
    127                 R.id.Button04,R.id.Button05,R.id.Button06,
    128                 R.id.Button07,R.id.Button08,R.id.Button09
    129         };
    130     }
    131     //根据id获取Button
    132     public Button getBtnForId(int rID){
    133         Button btn = (Button)this.findViewById(rID);
    134         return btn;
    135     }
    136     //按钮监听
    137     public void buttonListener(Button button, final int id){
    138         button.setOnClickListener(new View.OnClickListener() {
    139             @Override
    140             public void onClick(View view) {
    141                 String str = tv.getText().toString().trim();
    142                 result0 = Integer.parseInt(str);
    143                 //tv.setText("");
    144                 flag = id;
    145             }
    146         });
    147     }
    148 }
  • 相关阅读:
    BZOJ3510 首都
    洛谷U19464 山村游历(Wander)(LCT)
    [BZOJ4530][Bjoi2014]大融合(LCT)
    POJ 3522 最小差值生成树(LCT)
    AHOI2005航线规划 bzoj1969(LCT缩点)
    P3950 部落冲突
    BZOJ2243 [SDOI2011]染色(LCT)
    P1501 [国家集训队]Tree II
    性能优化之优化加载资源
    Hexo next主题安装algolia
  • 原文地址:https://www.cnblogs.com/whongs/p/7452001.html
Copyright © 2011-2022 走看看