ITPub博客

首页 > 应用开发 > Java > 安卓简易计算器的实现 By 飞小哥

安卓简易计算器的实现 By 飞小哥

Java 作者:Three_Musketeers 时间:2015-02-16 15:32:41 0 删除 编辑
我们要做个简易的计算器,代码基本转载自:http://startandroid.ru/en/lessons/complete-list/225-lesson-19-creating-a-simple-calculator.html
做了些修改,步骤及注释如下:


一、做布局


1. 在res/layout下的activity_main.xml文件编辑
2. 设置2个EditText用来放置2个输入值
3. 设置4个Button显示运算符
4. 设置1个TextView显示运算过程及结果
4. 控件一般需要设置的属性值有:id、layout_width、layout_height、orientation(方向)、layout_marginLeft(离左边距)、
layout_weight(权重,比如2个控件权重都设为1,则2个控件各占空间的1/2)、text(内容)、textSize(字体大小)、gravity(控件内容重心)
layout_gravity(子控件相对父类的重心)


    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


            android:id="@+id/linearLayout1"
        android:layout_width="match_parent"    //视图填充全部
        android:layout_height="wrap_content"   //视图扩展以显示全部内容
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="3dp" >


                    android:id="@+id/etNum1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="5dp"
            android:layout_weight="1"
            android:inputType="numberDecimal" >  //可以带小数点的浮点格式
       


                    android:id="@+id/etNum2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_weight="1"
            android:inputType="numberDecimal" >
       
   



            android:id="@+id/linearLayout2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="3dp" >


                    android:id="@+id/btnAdd"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="+"
            android:textSize="8dp" >
       


                    android:id="@+id/btnSub"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="-"
            android:textSize="8dp" >
       


                    android:id="@+id/btnMult"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="*"
            android:textSize="8dp" >
       


                    android:id="@+id/btnDiv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="/"
            android:textSize="8dp" >
       
   


            android:id="@+id/tvResult"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="3dp"
        android:gravity="center_horizontal"   //内容垂直居中显示
        android:textSize="12dp" >
   





===============================================


二、实例化控件并实现业务逻辑


1. 声明各控件变量
2. 调用findViewById方法实例化元素
3. 调用setOnClickListener方法来对运算符button设置监听器
4. etNum1或etNum2为空,返回空
5. 读取EditText值并转化成Float类型数据
6. 使用switch语句,由不同运算符的Id值,获得对应的result值
7. 运算过程和结果显示在TextView里
8. 创建OptionsMenu
9. 点击选项菜单(OptionsMenu:点击menu弹出的菜单)的菜单项时即调调用了onOptionsItemSelected 方法,传入item的Id值,进行清空或退出应用程序的操作
10. res/values/ 的strings.xml文件添加menu_reset和menu_quit两个字符串
11. res/menu下新建menu.xml文件,引用strings.xml内容,以及添加自己的Item



package com.example.simplecalculator;

import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends Activity implements OnClickListener {


//1. 声明各控件变量
EditText etNum1;
EditText etNum2;


Button btnAdd;
Button btnSub;
Button btnMult;
Button btnDiv;


TextView tvResult;


String oper = "";


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


//2.调用findViewById方法实例化元素
etNum1 = (EditText) findViewById(R.id.etNum1);
etNum2 = (EditText) findViewById(R.id.etNum2);


btnAdd = (Button) findViewById(R.id.btnAdd);
btnSub = (Button) findViewById(R.id.btnSub);
btnMult = (Button) findViewById(R.id.btnMult);
btnDiv = (Button) findViewById(R.id.btnDiv);


tvResult = (TextView) findViewById(R.id.tvResult);


// 3.调用setOnClickListener方法来对运算符button设置监听器
btnAdd.setOnClickListener(this);  //MainActivity已经实现onClick方法,因此直接传this就可
btnSub.setOnClickListener(this);
btnMult.setOnClickListener(this);
btnDiv.setOnClickListener(this);

}


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
float num1 = 0;
float num2 = 0;
float result = 0;


// 4.etNum1或etNum2为空,返回空
if (TextUtils.isEmpty(etNum1.getText().toString())
|| TextUtils.isEmpty(etNum2.getText().toString())) {
return;
}


// 5.读取EditText值并转化成Float类型数据
num1 = Float.parseFloat(etNum1.getText().toString());
num2 = Float.parseFloat(etNum2.getText().toString());


// 6.使用switch语句,由不同运算符的Id值,获得对应的result值
switch (v.getId()) {
case R.id.btnAdd:
oper = "+";
result = num1 + num2;
break;
case R.id.btnSub:
oper = "-";
result = num1 - num2;
break;
case R.id.btnMult:
oper = "*";
result = num1 * num2;
break;
case R.id.btnDiv:
oper = "/";
result = num1 / num2;
break;
default:
break;
}

// 7.运算过程和结果显示在TextView里
tvResult.setText(num1 + " " + oper + " " + num2 + " = " + result);
}

// 8.创建OptionsMenu
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}

// 9.点击选项菜单(OptionsMenu:点击menu弹出的菜单)的菜单项时即调调用了onOptionsItemSelected 方法,传入item的Id值,进行清空或退出应用程序的操作
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
   // TODO Auto-generated method stub
   switch (item.getItemId()) {
   case R.id.item01:
     // 清空
     etNum1.setText("");
     etNum2.setText("");
     tvResult.setText("");
     break;
   case R.id.item02:
     // 退出应用程序
     finish();
     break;
   }
   return super.onOptionsItemSelected(item);
 }
}


===============================================================


10. res/values/ 的strings.xml文件添加menu_reset和menu_quit两个字符串




    SimpleCalculator
    Settings
    Hello world!
Reset
Quit



================================================================


11. res/menu下新建menu.xml文件,引用strings.xml内容,以及添加自己的Item


            android:title="@string/menu_reset"
        android:id="@+id/item01">
   
            android:title="@string/menu_quit"
        android:id="@+id/item02">
       


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30106286/viewspace-1437297/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2015-01-15

  • 博文量
    7
  • 访问量
    61437