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"一起使用)
相关文章推荐
- Android笔记——GridLayout布局
- Android,GridLayout布局(简易计算器)
- [Android]笔记8-GridLayout布局
- 基于xmpp协议的开源框架androidpn学习笔记
- Android 学习笔记之界面布局
- Android的布局和Intent笔记和常用实例
- Android应用开发学习笔记04--使用布局
- android布局之 GridLayout的使用
- Android课堂笔记——LinearLayout和RelativeLayout常用的两种布局方式
- Android笔记-布局文件中的@、@+、?和*
- Android开发总结笔记 RelativeLayout(相对布局) 1-1-2
- 2.Android笔记之TableLayout(表格布局)
- Android开发学习笔记:5大布局方式详解
- Android开发总结笔记 FrameLayout(帧布局) 1-1-3
- android之网格布局GridLayout
- Android布局总结一:GridLayout布局(网格布局)
- 【iOS(swift)笔记-7】自定义九宫格图片布局(基于SnapKit)
- Android笔记(九) Android中的布局——框架布局
- Android——Animation笔记:布局动画
- Androidx学习笔记(33)---新闻客户端之布局