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

}




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

如何使用CSDN知识库

hi 我是知识库get图谱小能手**五分钟 让你了解 知识库怎么用**这里涵盖了 50+个领域 100000+个技术资源 100+特邀编辑 提供 结构化内容 知识点一键直...

不懂接口的程序员就不懂开发

开发人员的面试中,面试者常常描述不清做过的项目。原因很简单,要么你不懂接口,要么你描述不清接口。描述接口有两个重点,称为2P:一是协议(Protocol),二是原型(Prototype),它们分别描述...

Android JNI实现计算器demo

           通过JNI实现四则运算详细步骤 1. 创建android工程MathJni   2.声明jni类型的java类MathUtil ...

Android计算器开发Demo

  • 2015-11-09 17:49
  • 1.36MB
  • 下载

看过来!妹子手把手教你使用Olami SDK实现iOS语音计算器(附demo)

使用OlamiSDK来开发一款用语音操控的计算器
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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