Android 计算器 demo

原创 2014年11月18日 22:29:39
待会儿将下面的话语重构一下:
今天的一个Android代码书写收获是:写完一部分核心代码,就运行一次,yes!
如果有语法错误,我是能直接看出来的,但特么要是逻辑错呢?长时间不运行,一旦出错了,
那就卧槽!等死吧!
所以啊,一旦用手头E430C这个本来写Android代码,记住一定要:书写一段核心demo,就立马运行,
一是看效果,二是是否出现程序运行失败的错误,有的话立马退回去改!!




计算器:
1、显示通过LinearLayout布局管理器布局
2、在预先设计好的位置填充各个View组件,
注:要控制好layout_height以及layout_width的填充方式,
wrap_content 包裹内容的填充方式
fill_parent 填充满撑开父辈组件的方式
一旦fill_parent的填充方式使用不当,即会造成另一个布局被抵开,于屏幕中不予显示
3、标记号各个组件的ID
4、在MainActivity中定义对应于res.layout中的各个组件的相应变量,并通过findViewById()方法获取对象
5、构建新的事件响应类(如subClickListener)去继承(implements)OnClickListener(),
eg: private subClickListener implements OnClickListener()
同时,重写OnClickListener()类中的onClick()方法,即在onClick()方法中书写具体的响应操作
6、将(步骤5)所述的相应类绑定在需要监听的按钮上。
eg: this.but.setOnClickListener(new subClickListener());
7、重复5、6步骤\



下面首先是res->layout->activity_main.xml文件的demo:


<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: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" 
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="欢迎来到么么哒计算器~ ^_^s" />
    
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    	
        <EditText
        	android:id="@+id/mytxt1"
        	android:layout_width= "wrap_content"
        	android:layout_height="wrap_content"
        	android:text="8"
        />
        <TextView
        	android:id="@+id/myope"
        	android:layout_height= "wrap_content"
        	android:layout_width="wrap_content"
        	android:text="o"
        />
        <EditText
        	android:id="@+id/mytxt2"
        	android:layout_height="wrap_content"
        	android:layout_width="wrap_content"
        	android:text="4"
        />
        <TextView
        	android:id="@+id/mysig"
        	android:layout_width = "wrap_content"
        	android:layout_height="wrap_content"
        	android:text=" = "
        />
        <EditText
        	android:id="@+id/mytxt3"
        	android:layout_width="wrap_content"
        	android:layout_height="wrap_content"
        	android:text="0"
        />        
    </LinearLayout>
    
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
            	
        <Button
       		android:id="@+id/mybutadd"
       		android:layout_width="wrap_content"
       		android:layout_height="wrap_content"
       		android:text="+"
       	/>
        <Button
       		android:id="@+id/mybutsub"
       		android:layout_width="wrap_content"
       		android:layout_height="wrap_content"
       		android:text="-"
       	/>
        <Button
       		android:id="@+id/mybutmul"
       		android:layout_width="wrap_content"
       		android:layout_height="wrap_content"
       		android:text="*"
       	/>
        <Button
       		android:id="@+id/mybutdiv"
       		android:layout_width="wrap_content"
       		android:layout_height="wrap_content"
       		android:text="/"
       	/>                
    </LinearLayout>
    
    <LinearLayout
        android:orientation="horizontal"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content">
    	<Button
    		android:id="@+id/mybut1"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="1"
    	/>
    	<Button
    		android:id="@+id/mybut2"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="2"
    	/>
    	<Button
    		android:id="@+id/mybut3"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="3"
    	/>
    	<Button
    		android:id="@+id/mybut4"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="4"
    	/>
    </LinearLayout>
    
    <LinearLayout
        android:orientation="horizontal"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content">
    	
        <Button
    		android:id="@+id/mybut5"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="5"
    	/>
        <Button
    		android:id="@+id/mybut6"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="6"
    	/>
        <Button
    		android:id="@+id/mybut7"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="7"
    	/>
        <Button
    		android:id="@+id/mybut8"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="8"
    	/>
        
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content">
    	
        <Button
    		android:id="@+id/mybut9"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="9"
    	/>
        <Button
    		android:id="@+id/mybut0"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="0"
    	/>
        <Button
    		android:id="@+id/mybutcle"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="Clear"
    	/>
        <Button
    		android:id="@+id/mybutequ"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="="
    	/>
        
    </LinearLayout>
    
</LinearLayout>

嗯,然后接下来是MainActivity类的demo:


package com.example.jisuanqi;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
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 {
	
	//gloable var
	//现在要增加全局变量了
	int n1 = 0;
	int n2 = 0;
	String sig = null;

	//定义对应于相应组件的变量
	private EditText txt1 = null;
	private TextView ope = null;
	private EditText txt2 = null;
	private EditText txt3 = null;
	
	private Button butadd = null;
	private Button butsub = null;
	private Button butmul = null;
	private Button butdiv = null;

	private Button but1 = null;
	private Button but2 = null;
	private Button but3 = null;
	private Button but4 = null;
	
	private Button but5 = null;
	private Button but6 = null;
	private Button but7 = null;
	private Button but8 = null;

	private Button but9 = null;
	private Button but0 = null;
	private Button butcle = null;
	private Button butequ = null;
	
	//程序主体枝干从这里开始:
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_main);
		
		this.txt1 = (EditText) super.findViewById(R.id.mytxt1);
		//注意:此处如果强制类转换,将EditText转换成TextView是不会报错的
		this.ope = (TextView) super.findViewById(R.id.myope);
		this.txt2 =(EditText) super.findViewById(R.id.mytxt2);
		this.txt3 =(EditText) super.findViewById(R.id.mytxt3);
		
		//下面是开始给符号进行关联组件
		this.butadd = (Button) super.findViewById(R.id.mybutadd);
		this.butsub = (Button) super.findViewById(R.id.mybutsub);
		this.butmul = (Button) super.findViewById(R.id.mybutmul);
		this.butdiv = (Button) super.findViewById(R.id.mybutdiv);
		
		//下面是数字按钮
		this.but1 = (Button) super.findViewById(R.id.mybut1);
		this.but2 = (Button) super.findViewById(R.id.mybut2);
		this.but3 = (Button) super.findViewById(R.id.mybut3);
		this.but4 = (Button) super.findViewById(R.id.mybut4);
		this.but5 = (Button) super.findViewById(R.id.mybut5);
		this.but6 = (Button) super.findViewById(R.id.mybut6);
		this.but7 = (Button) super.findViewById(R.id.mybut7);
		this.but8 = (Button) super.findViewById(R.id.mybut8);
		this.but9 = (Button) super.findViewById(R.id.mybut9);
		this.but0 = (Button) super.findViewById(R.id.mybut0);
		
		//最下一排按钮的组件关联
		this.butcle = (Button) super.findViewById(R.id.mybutcle);
		this.butequ = (Button) super.findViewById(R.id.mybutequ);

		//-------------------------
		//好,现在开始对组件进项绑定监听
		//-------------------------
		//操作符的绑定
		this.butadd.setOnClickListener(new addClickListener());
		this.butsub.setOnClickListener(new subClickListener());
		this.butmul.setOnClickListener(new mulClickListener());
		this.butdiv.setOnClickListener(new divClickListener());
		
		//数字按钮的绑定
		this.but1.setOnClickListener(new but1ClickListener());
		this.but2.setOnClickListener(new but2ClickListener());
		this.but3.setOnClickListener(new but3ClickListener());
		this.but4.setOnClickListener(new but4ClickListener());
		this.but5.setOnClickListener(new but5ClickListener());
		this.but6.setOnClickListener(new but6ClickListener());
		this.but7.setOnClickListener(new but7ClickListener());
		this.but8.setOnClickListener(new but8ClickListener());
		this.but9.setOnClickListener(new but9ClickListener());
		this.but0.setOnClickListener(new but0ClickListener());
		
		//清除键的绑定
		this.butcle.setOnClickListener(new clearClickListener());
		
		//最终大结局来啦!!
		//“等于”号的绑定
		this.butequ.setOnClickListener(new equClickListener());
		
	}
	//程序主体枝干结束
	
	
	//开始定义响应事件中的运算符操作
	private class addClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			sig = "+";
			//你就zuo嘛、是不是作死在这里了
			MainActivity.this.ope.setText(" " + sig + " ");
		}
		
	}
	private class subClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			sig = "-";
			MainActivity.this.ope.setText(" " + sig + " ");
		}
		
	}
	private class mulClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			sig = "*";
			MainActivity.this.ope.setText(" " + sig + " ");
		}
		
	}
	private class divClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			sig = "/";
			MainActivity.this.ope.setText(" " + sig + " ");
		}
		
	}
	
	//开始响应数字按钮
	private class but1ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 1;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 1;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}
		
	}
	
	private class but2ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 2;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 2;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	
	private class but3ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 3;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 3;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	
	private class but4ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 4;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 4;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	
	private class but5ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 5;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 5;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	private class but6ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 6;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 6;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	
	private class but7ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 7;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 7;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	
	private class but8ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 8;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 8;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	
	private class but9ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 9;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 9;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	
	private class but0ClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = n1 * 10 + 0;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = n2 * 10 + 0;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	//数字键的监听到此结束
	
	//清除键的监听
	private class clearClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			if(MainActivity.this.ope.getText().toString().equals("o"))
			{
				n1 = 0;
				MainActivity.this.txt1.setText(String.valueOf(n1));
			}
			else{
				n2 = 0;
				MainActivity.this.txt2.setText(String.valueOf(n2));
			}
			
		}		
	}
	
	private class equClickListener implements OnClickListener{

		@Override
		public void onClick(View arg0) {
			// TODO 自动生成的方法存根
			//MainActivity.this.txt3.setText(String.valueOf(n1+n2));
			//好了,现在知道出错出在这里了
			if(MainActivity.this.ope.getText().toString().equals(" " + "+" + " "))
			{
				//n1 = 0;
				MainActivity.this.txt3.setText(String.valueOf(n1+n2));
			}
			
			if(MainActivity.this.ope.getText().toString().equals(" " + "-" + " "))
			{
				//n1 = 0;
				MainActivity.this.txt3.setText(String.valueOf(n1-n2));
			}
			if(MainActivity.this.ope.getText().toString().equals(" " + "*" + " "))
			{
				//n1 = 0;
				MainActivity.this.txt3.setText(String.valueOf(n1*n2));
			}
			if(MainActivity.this.ope.getText().toString().equals(" " + "/" + " "))
			{
				//n1 = 0;
				MainActivity.this.txt3.setText(String.valueOf(n1/n2));
			}
			
			/*
			if(MainActivity.this.ope.getText().toString().equals("+")){
				MainActivity.this.txt3.setText(String.valueOf(n1+n2));
			}
			
			
			if(MainActivity.this.ope.getText().toString().equals("-")){
				MainActivity.this.txt3.setText(String.valueOf(n1-n2));
			}
			*/
			
		}
		
	}
	
	
	
	
	
	

	@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;
	}

}




Android---05---简单登录demo与BMI指数计算器

  • lc635408136
  • lc635408136
  • 2014年05月28日 11:51
  • 1319

JS小Demo实战之一个超级简单的计算器功能的实现。

利用Javascript的DOM处理实现的一个小计算器。
  • qq_25936689
  • qq_25936689
  • 2015年06月28日 19:57
  • 3374

Android小项目:计算器

项目源码在文章最后。 这两天写了一个Android的计算器,现在整理一下思路与代码。 首先是功能需求分析: 1、数字我规定最长为九位,如果有小数点则加上小数点最长为十位 2、第二个参数输入时...
  • miaozhenzhong
  • miaozhenzhong
  • 2016年09月08日 14:09
  • 3680

Android JNI实现计算器demo

           通过JNI实现四则运算详细步骤 1. 创建android工程MathJni   2.声明jni类型的java类MathUtil pac...
  • lygsust
  • lygsust
  • 2015年10月26日 19:39
  • 311

Android计算器开发Demo

  • 2015年11月09日 17:49
  • 1.36MB
  • 下载

Android 简易计算器Demo

  • 2017年11月22日 17:35
  • 38.45MB
  • 下载

Android Demo-小计算器

  • 2010年12月30日 21:42
  • 44KB
  • 下载

Android简单的计算器和算式计算器demo

  • 2017年11月08日 16:27
  • 5.44MB
  • 下载

阿健的iOS开发Demo(加法计算器、图片浏览(动画))

首先,我想声明我这里说的开发入门并不是指零基础开发入门,读者需有一定的IOS学习基础,初步了解面向对象编程思想。我写博客不是因为我是什么大牛,只是当做自己在iOS开发中的一个小工具,记录一下接触过的东...
  • tj462989817
  • tj462989817
  • 2015年11月02日 23:07
  • 276

人品计算器demo

最近在玩小游戏的时候看到人品计算器 感觉不难做就试了下,当然做的很简陋~~...
  • qq_33632775
  • qq_33632775
  • 2016年06月06日 15:07
  • 110
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 计算器 demo
举报原因:
原因补充:

(最多只允许输入30个字)