Android简易计算器----布局_菜单_提示框 的运用

      我们来讲一个计算器的Android的应用实例,其中包含了布局嵌套、菜单以及提示框的运用。下面的这个程序的效果图。

 

    根据看到的结果,我们可以将这个布局分为两部分,第一部分就是上面一行的<inearLayout/>,第二部分就是下面的的按钮部分,它也是一个<inearLayout/>。这两个<inearLayout/>放在一个<inearLayout/>中,这就用到了布局的嵌套。

    下面是布局文件的代码:

     activity_main.xml

      

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <EditText
            android:id="@+id/op1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:inputType="numberDecimal" 
            android:background="@android:drawable/editbox_background"/>

        <TextView
            android:id="@+id/op"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:layout_weight="1" />
        <EditText
            android:id="@+id/op2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:inputType="numberDecimal" 
            android:background="@android:drawable/editbox_background"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:text="@string/dengyu" />

        <EditText
            android:id="@+id/result"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:inputType="numberDecimal" 
            android:background="@android:drawable/editbox_background"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            android:text="@string/add"/>

        <Button
            android:id="@+id/sub"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            android:text="@string/sub"/>

        <Button
            android:id="@+id/cheng"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            android:text="@string/cheng"/>

        <Button
            android:id="@+id/chu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            android:text="@string/chu"/>
    </LinearLayout>

</LinearLayout>


 

     在上边的程序中还运用到了菜单。这个事件的设计用到了menu文件夹下的main.mxl,我们在main.xml中设计菜单,下面是代码:

     main.xml

  

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/about1"
        android:orderInCategory="100"
        android:title="@string/about"/>
    <item
        android:id="@+id/exit1"
        android:orderInCategory="100"
        android:title="@string/exit"/>
    

</menu>


     string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">computer</string>
    <string name="action_settings">Settings</string>
    <string name="dengyu">=</string>
    <string name="add">+</string>
    <string name="sub">-</string>
    <string name="cheng">*</string>
    <string name="chu">/</string>
    <string name="about">关于</string>
    <string name="exit">退出</string>

</resources>


     关于提示框的设计比较简单,我们只需要在实体类中手写代码就行。

 

     实体类computer

package bzu.aa.medole;

import java.io.WriteAbortedException;

public class computer {

	public static double add(double num1,double num2){
		return num1 + num2;
	}
	
	public static double sub(double num1,double num2){
		return num1 - num2;
	}
	
	public static double cheng(double num1,double num2){
		return num1 * num2;
	}
	
	public static double chu(double num1,double num2) throws ArithmeticException{
		return num1 / num2;
	}
	
}


        MainActivity.java

package com.example.computer;
import bzu.aa.medole.*;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
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 {

	private EditText op1;
	private TextView op;
	private EditText op2;
	private EditText result;;
	private Button add;
	private Button sub;
	private Button cheng;
	private Button chu;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        show();
    }


    public void show(){
    	op1 = (EditText)this.findViewById(R.id.op1);
    	op = (TextView)this.findViewById(R.id.op);
    	op2 = (EditText)this.findViewById(R.id.op2);
    	result = (EditText)this.findViewById(R.id.result);
    	
    	add = (Button)this.findViewById(R.id.add);
    	add.setOnClickListener(new click());
    	
    	sub = (Button)this.findViewById(R.id.sub);
    	sub.setOnClickListener(new click());
    	
    	cheng = (Button)this.findViewById(R.id.cheng);
    	cheng.setOnClickListener(new click());
    	
    	chu = (Button)this.findViewById(R.id.chu);
    	chu.setOnClickListener(new click());
    }
    
    public class click implements OnClickListener{
    	public void onClick(View v) {
    		String a = op1.getText().toString();
    		String b = op2.getText().toString();
    		
    		double num1 = Double.parseDouble(a);
    		double num2 = Double.parseDouble(b);
    		double num = 0.0;
    		switch(v.getId()){
    		case R.id.add:
    			op.setText(" + ");
    			num = computer.add(num1,num2);
    			break;
    		case R.id.sub:
    			op.setText(" - ");
    			num = computer.sub(num1,num2);
    			break;
    		case R.id.cheng:
    			op.setText(" * ");
    			num = computer.cheng(num1,num2);
    			break;
    		case R.id.chu:
    			op.setText(" / ");
    			if(num2 == 0){
        			result.setText("除数不能为0");
    			}else{
					num = computer.chu(num1,num2);
    			}
    			break;
    		}
    		
    		if(!(num2 == 0 && op.getText().equals(" / "))){
    			result.setText(num +"");
    		}
    	}
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
	
    public boolean onOptionsItemSelected(MenuItem item){
    	int item_id = item.getItemId();
    	
    	switch(item_id){
    	case R.id.about1:
    		AlertDialog.Builder adb = new AlertDialog.Builder(this);
    		adb.setTitle("关于").setMessage("作者\n姓名:郝高明").create().show();
    		break;
    	case R.id.exit1:
    		MainActivity.this.finish();
    		break;
    	}
    	return true;
    }
}

 

按钮的监听事件已经在前面提到过了,这里就重点提一下菜单的监听事件。菜单的监听要重写两个方法,一个是public boolean onCreateOptionsMenu(Menu menu){},还有一个是public boolean onOptionsItemSelected(MenuItem item){},这两个方法是必不可少的,onCreateOptionsMenu()方法是获取菜单的布局的方法,就像我们要获取Acivity的布局所用到的protected void onCreate(Bundle savedInstanceState){}方法是一样的;onOptionsItemSelected()通过这个方法,我们就可以监听菜单的事件,通过获取id,判断所取得id值,就可以实现相应的操作。

 

提示框的运用就是先创建一个AlertDialog的实例,传参当前Activity对象,通过实例调用.setTitle()、.setMessage()、.create()、.show()等方法,这样就可以显示一个简单的提示框了。

 

当然你可以把它做的更“美丽”一点,加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值