您的位置:首页 > 移动开发 > Android开发

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

2013-10-15 08:48 357 查看
package com.example.classtest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {
private int btnIds[] = { R.id.button0, R.id.button1, R.id.button2,
R.id.button3, R.id.button4, R.id.button5, R.id.button6,
R.id.button7, R.id.button8, R.id.button9, R.id.buttonadd,
R.id.button1x, R.id.buttondiv, R.id.buttonequal, R.id.buttonmult,
R.id.buttonpoint, R.id.buttonrem, R.id.buttonsub, R.id.buttonclear };
TextView textView = null;
String text = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView1);

for (int id : btnIds) {
findViewById(id).setOnClickListener(this);

}
}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
text = textView.getText().toString();
System.out.println(v.getId());
switch (v.getId()) {
case R.id.buttonclear:
text = "";
break;
case R.id.button0:
text += 0;
break;
case R.id.button1:
text += 1;
break;
case R.id.button2:
text += 2;
break;
case R.id.button3:
text += 3;
break;
case R.id.button4:
text += 4;
break;
case R.id.button5:
text += 5;
break;
case R.id.button6:
text += 6;
break;
case R.id.button7:
text += 7;
break;
case R.id.button8:
text += 8;
break;
case R.id.button9:
text += 9;
break;
case R.id.buttonadd:
handle();
text += "+";
break;
case R.id.buttondiv:
handle();
text += "/";
break;
case R.id.buttonmult:
handle();
text += "*";
break;
case R.id.buttonpoint:
handle();
text += ".";
break;
case R.id.buttonrem:
handle();
text += "%";
break;
case R.id.buttonsub:
handle();
text += "-";
break;
case R.id.button1x:
handle();
text = (Float) (1 / Float.parseFloat(text)) + "";
break;
case R.id.buttonequal:
handle();
break;
}
textView.setText(text);
}

private void handle() {
int point = -1;
try {
if ((point = text.indexOf("+")) != -1) {
text = (Float.parseFloat(text.substring(0, point)) + Float
.parseFloat(text.substring(point + 1))) + "";
} else if ((point = text.indexOf("-")) != -1) {
text = (Float.parseFloat(text.substring(0, point)) - Float
.parseFloat(text.substring(point + 1))) + "";
} else if ((point = text.indexOf("*")) != -1) {
text = (Float.parseFloat(text.substring(0, point)) * Float
.parseFloat(text.substring(point + 1))) + "";
} else if ((point = text.indexOf("/")) != -1) {
text = (Float.parseFloat(text.substring(0, point)) / Float
.parseFloat(text.substring(point + 1))) + "";
} else if ((point = text.indexOf("%")) != -1) {
text = (Float.parseFloat(text.substring(0, point)) % Float
.parseFloat(text.substring(point + 1))) + "";
}
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".MainActivity" >

<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:columnCount="5"
android:rowCount="6" >

<TextView
android:id="@+id/textView1"
android:layout_column="0"
android:layout_row="0"
android:textSize="50sp"
android:layout_columnSpan="5"
android:layout_gravity="fill_horizontal"
android:textAppearance="?android:attr/textAppearanceLarge" />

<Button
android:id="@+id/button7"
android:layout_column="0"
android:layout_row="1"
android:text="7" />

<Button
android:id="@+id/button8"
android:layout_column="1"
android:layout_row="1"
android:text="8" />

<Button
android:id="@+id/button9"
android:layout_column="2"
android:layout_row="1"
android:text="9" />

<Button
android:id="@+id/buttondiv"
android:layout_column="3"
android:layout_row="1"
android:text="/" />
<Button
android:id="@+id/buttonrem"
android:layout_column="4"
android:layout_row="1"
android:text="%" />

<!--2  -->

<Button
android:id="@+id/button4"
android:layout_column="0"
android:layout_row="2"
android:text="4" />

<Button
android:id="@+id/button5"
android:layout_column="1"
android:layout_row="2"
android:text="5" />

<Button
android:id="@+id/button6"
android:layout_column="2"
android:layout_row="2"
android:text="6" />

<Button
android:id="@+id/buttonmult"
android:layout_column="3"
android:layout_row="2"
android:text="*" />
<Button
android:id="@+id/button1x"
android:layout_column="4"
android:layout_row="2"
android:text="1/x" />
<!--3  -->
<Button
android:id="@+id/button1"
android:layout_column="0"
android:layout_row="3"
android:text="1" />

<Button
android:id="@+id/button2"
android:layout_column="1"
android:layout_row="3"
android:text="2" />

<Button
android:id="@+id/button3"
android:layout_column="2"
android:layout_row="3"
android:text="3" />

<Button
android:id="@+id/buttonsub"
android:layout_column="3"
android:layout_row="3"
android:text="-" />
<Button
android:id="@+id/buttonequal"
android:layout_column="4"
android:layout_row="3"
android:layout_rowSpan="2"
android:layout_gravity="fill_vertical"
android:text="=" />
<!--4  -->
<Button
android:id="@+id/button0"
android:layout_columnSpan="2"
android:layout_gravity="fill_horizontal"
android:layout_column="0"
android:layout_row="4"
android:text="0" />

<Button
android:id="@+id/buttonpoint"
android:layout_column="2"
android:layout_row="4"
android:text="." />

<Button
android:id="@+id/buttonadd"
android:layout_column="3"
android:layout_row="4"
android:text="+" />
<Button
android:id="@+id/buttonclear"
android:layout_column="0"
android:layout_row="5"
android:text="清零" />

</GridLayout>

</RelativeLayout>




GridLayout特殊属性:

android:columnCount="5" 声明列数
android:rowCount="6" 声明行数
android:layout_columnSpan:占列(常和 android:layout_gravity="fill_horizontal"一起使用)
android:layout_rowSpan:占行(常和 android:layout_gravity="fill_vertical"一起使用)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: