***回答
计算器是我们生活中常见的一个工具,今天我们就使用Android中一些简单的控件来完成一个计算器。首先看一下效果:
布局部分:
1,计算器一共分为5行,第一行是显示框,剩下的四行是数字和符号。
2,这个布局很简单,可以使用linearlayout来完成,最外层视图方向使用android:orientation=”vertical”,每行之间使用android:orientation=”horizontal”,按钮使用Button来填充。
下面是主要的布局部分
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingTop="5dip" > <Button android:id="@+id/Button07" android:layout_width="80dip" android:layout_height="wrap_content" android:text="7" android:textSize="25sp" /> <Button android:id="@+id/Button08" android:layout_width="80dip" android:layout_height="wrap_content" android:text="8" android:textSize="25sp" /> <Button android:id="@+id/Button09" android:layout_width="80dip" android:layout_height="wrap_content" android:text="9" android:textSize="25sp" /> <Button android:id="@+id/ButtonJia" android:layout_width="80dip" android:layout_height="wrap_content" android:text="+" android:textSize="25sp" /> </LinearLayout>
代码实现:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 跳转到main界面 initButton(); // 清空按钮的点击事件监听器 buttonC.setOnClickListener(new OnClickListener() { public void onClick(View v) { str1 = ""; str2 = ""; // 清空记录 tv.setText(str1); flag = 0; } }); // 监听 for (int i = 0; i < buttons.length; i++) { temp = (Button) findViewById(buttons[i]); temp.setOnClickListener( // 为Button添加监听器 new OnClickListener() { @Override public void onClick(View v) { str1 = tv.getText().toString().trim(); str1 = str1 + String.valueOf(((Button) v).getText());// 获得新输入的值 System.out.println("str1" + ":::" + str1); tv.setText(str1); } }); } buttonListener(buttonJia, 1); buttonListener(buttonJian, 2); buttonListener(buttonCheng, 3); buttonListener(buttonChu, 4); buttonDengyu.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { System.out.println(str1); result1 = Integer.parseInt(str1); if (flag == 1) { result = result0 + result1; System.out.println(result0 + ":" + result1); } else if (flag == 2) { result = result0 - result1; } else if (flag == 3) { result = result0 * result1; } else if (flag == 4) { result = (int) (result0 / result1); } String str = (result + "").trim(); System.out.println(str); tv.setText(str); } }); } // 初始化按钮 public void initButton() { // 初始化控件资源 tv = (TextView) this.findViewById(R.id.tv); // 获取文本框控件对象 str1 = String.valueOf(tv.getText()); str2 = ""; // 初始化运算输入数值 buttonC = (Button) this.findViewById(R.id.ButtonC); // 获得计算按钮的按钮对象 buttonJia = (Button) this.findViewById(R.id.ButtonJia); buttonJian = (Button) this.findViewById(R.id.ButtonJian); buttonCheng = (Button) this.findViewById(R.id.ButtonCheng); buttonChu = (Button) this.findViewById(R.id.ButtonChu); buttonDengyu = (Button) this.findViewById(R.id.ButtonDengyu); buttons = new int[] { // 记录数值按钮的id R.id.Button00, R.id.Button01, R.id.Button02, R.id.Button03, R.id.Button04, R.id.Button05, R.id.Button06, R.id.Button07, R.id.Button08, R.id.Button09 }; } // 按钮监听 public void buttonListener(Button button, final int id) { button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String str = tv.getText().toString().trim(); result0 = Integer.parseInt(str); tv.setText(""); flag = id; } }); }
源码下载:点击下载
其他问题
- 上一篇:SD卡浏览器实例
- 下一篇:天缘企业网站系统通杀0day