ANDROID笔记:基于GridLayout布局的简易计算器

  1 package com.example.classtest;
  2 
  3 import android.app.Activity;
  4 import android.os.Bundle;
  5 import android.view.View;
  6 import android.view.View.OnClickListener;
  7 import android.widget.TextView;
  8 
  9 public class MainActivity extends Activity implements OnClickListener {
 10     private int btnIds[] = { R.id.button0, R.id.button1, R.id.button2,
 11             R.id.button3, R.id.button4, R.id.button5, R.id.button6,
 12             R.id.button7, R.id.button8, R.id.button9, R.id.buttonadd,
 13             R.id.button1x, R.id.buttondiv, R.id.buttonequal, R.id.buttonmult,
 14             R.id.buttonpoint, R.id.buttonrem, R.id.buttonsub, R.id.buttonclear };
 15     TextView textView = null;
 16     String text = null;
 17 
 18     @Override
 19     protected void onCreate(Bundle savedInstanceState) {
 20         super.onCreate(savedInstanceState);
 21         setContentView(R.layout.activity_main);
 22         textView = (TextView) findViewById(R.id.textView1);
 23 
 24         for (int id : btnIds) {
 25             findViewById(id).setOnClickListener(this);
 26 
 27         }
 28     }
 29 
 30     @Override
 31     public void onClick(View v) {
 32         // TODO Auto-generated method stub
 33         text = textView.getText().toString();
 34         System.out.println(v.getId());
 35         switch (v.getId()) {
 36         case R.id.buttonclear:
 37             text = "";
 38             break;
 39         case R.id.button0:
 40             text += 0;
 41             break;
 42         case R.id.button1:
 43             text += 1;
 44             break;
 45         case R.id.button2:
 46             text += 2;
 47             break;
 48         case R.id.button3:
 49             text += 3;
 50             break;
 51         case R.id.button4:
 52             text += 4;
 53             break;
 54         case R.id.button5:
 55             text += 5;
 56             break;
 57         case R.id.button6:
 58             text += 6;
 59             break;
 60         case R.id.button7:
 61             text += 7;
 62             break;
 63         case R.id.button8:
 64             text += 8;
 65             break;
 66         case R.id.button9:
 67             text += 9;
 68             break;
 69         case R.id.buttonadd:
 70             handle();
 71             text += "+";
 72             break;
 73         case R.id.buttondiv:
 74             handle();
 75             text += "/";
 76             break;
 77         case R.id.buttonmult:
 78             handle();
 79             text += "*";
 80             break;
 81         case R.id.buttonpoint:
 82             handle();
 83             text += ".";
 84             break;
 85         case R.id.buttonrem:
 86             handle();
 87             text += "%";
 88             break;
 89         case R.id.buttonsub:
 90             handle();
 91             text += "-";
 92             break;
 93         case R.id.button1x:
 94             handle();
 95             text = (Float) (1 / Float.parseFloat(text)) + "";
 96             break;
 97         case R.id.buttonequal:
 98             handle();
 99             break;
100         }
101         textView.setText(text);
102     }
103 
104     private void handle() {
105         int point = -1;
106         try {
107             if ((point = text.indexOf("+")) != -1) {
108                 text = (Float.parseFloat(text.substring(0, point)) + Float
109                         .parseFloat(text.substring(point + 1))) + "";
110             } else if ((point = text.indexOf("-")) != -1) {
111                 text = (Float.parseFloat(text.substring(0, point)) - Float
112                         .parseFloat(text.substring(point + 1))) + "";
113             } else if ((point = text.indexOf("*")) != -1) {
114                 text = (Float.parseFloat(text.substring(0, point)) * Float
115                         .parseFloat(text.substring(point + 1))) + "";
116             } else if ((point = text.indexOf("/")) != -1) {
117                 text = (Float.parseFloat(text.substring(0, point)) / Float
118                         .parseFloat(text.substring(point + 1))) + "";
119             } else if ((point = text.indexOf("%")) != -1) {
120                 text = (Float.parseFloat(text.substring(0, point)) % Float
121                         .parseFloat(text.substring(point + 1))) + "";
122             }
123         } catch (Exception e) {
124             System.err.println(e.getMessage());
125         }
126     }
127 }
  1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2     xmlns:tools="http://schemas.android.com/tools"
  3     android:layout_width="fill_parent"
  4     android:layout_height="fill_parent"
  5     tools:context=".MainActivity" >
  6 
  7     <GridLayout
  8         android:layout_width="match_parent"
  9         android:layout_height="wrap_content"
 10         android:layout_alignParentLeft="true"
 11         android:layout_alignParentTop="true"
 12         android:columnCount="5"
 13         android:rowCount="6" >
 14 
 15         <TextView
 16             android:id="@+id/textView1"
 17             android:layout_column="0"
 18             android:layout_row="0"
 19            android:textSize="50sp"
 20             android:layout_columnSpan="5"
 21             android:layout_gravity="fill_horizontal"
 22             android:textAppearance="?android:attr/textAppearanceLarge" />
 23 
 24         <Button
 25             android:id="@+id/button7"
 26             android:layout_column="0"
 27             android:layout_row="1"
 28             android:text="7" />
 29         
 30         <Button
 31             android:id="@+id/button8"
 32             android:layout_column="1"
 33             android:layout_row="1"
 34             android:text="8" />
 35         
 36         
 37         <Button
 38             android:id="@+id/button9"
 39             android:layout_column="2"
 40             android:layout_row="1"
 41             android:text="9" />
 42         
 43         <Button
 44             android:id="@+id/buttondiv"
 45             android:layout_column="3"
 46             android:layout_row="1"
 47             android:text="/" />
 48          <Button
 49             android:id="@+id/buttonrem"
 50             android:layout_column="4"
 51             android:layout_row="1"
 52             android:text="%" />
 53          
 54          <!--2  -->
 55          
 56         <Button
 57             android:id="@+id/button4"
 58             android:layout_column="0"
 59             android:layout_row="2"
 60             android:text="4" />
 61         
 62         <Button
 63             android:id="@+id/button5"
 64             android:layout_column="1"
 65             android:layout_row="2"
 66             android:text="5" />
 67         
 68         
 69         <Button
 70             android:id="@+id/button6"
 71             android:layout_column="2"
 72             android:layout_row="2"
 73             android:text="6" />
 74         
 75         <Button
 76             android:id="@+id/buttonmult"
 77             android:layout_column="3"
 78             android:layout_row="2"
 79             android:text="*" />
 80          <Button
 81             android:id="@+id/button1x"
 82             android:layout_column="4"
 83             android:layout_row="2"
 84             android:text="1/x" />
 85          <!--3  -->
 86           <Button
 87             android:id="@+id/button1"
 88             android:layout_column="0"
 89             android:layout_row="3"
 90             android:text="1" />
 91         
 92         <Button
 93             android:id="@+id/button2"
 94             android:layout_column="1"
 95             android:layout_row="3"
 96             android:text="2" />
 97         
 98         
 99         <Button
100             android:id="@+id/button3"
101             android:layout_column="2"
102             android:layout_row="3"
103             android:text="3" />
104         
105         <Button
106             android:id="@+id/buttonsub"
107             android:layout_column="3"
108             android:layout_row="3"
109             android:text="-" />
110          <Button
111             android:id="@+id/buttonequal"
112             android:layout_column="4"
113             android:layout_row="3"
114             android:layout_rowSpan="2"
115             android:layout_gravity="fill_vertical"
116             android:text="=" />
117          <!--4  -->
118             <Button
119             android:id="@+id/button0"
120             android:layout_columnSpan="2"
121             android:layout_gravity="fill_horizontal"
122             android:layout_column="0"
123             android:layout_row="4"
124             android:text="0" />
125         
126         <Button
127             android:id="@+id/buttonpoint"
128             android:layout_column="2"
129             android:layout_row="4"
130             android:text="." />
131         
132         
133         <Button
134             android:id="@+id/buttonadd"
135             android:layout_column="3"
136             android:layout_row="4"
137             android:text="+" />
138           <Button
139             android:id="@+id/buttonclear"
140             android:layout_column="0"
141             android:layout_row="5"
142             android:text="清零" />
143       
144     </GridLayout>
145 
146 </RelativeLayout>

GridLayout特殊属性:

 android:columnCount="5" 声明列数
 android:rowCount="6" 声明行数
android:layout_columnSpan:占列(常和 android:layout_gravity="fill_horizontal"一起使用)
android:layout_rowSpan:占行(常和 android:layout_gravity="fill_vertical"一起使用
原文地址:https://www.cnblogs.com/afluy/p/3369535.html