写一个简单的Android计算器应用

最近学习Android,所以写了一个计算器练手。里面涉及到了基本的组件和布局,还有sqlite数据库,Intent方法。

有兴趣的新手朋友可以直接贴代码来做做,增加写学习的兴趣。

项目结构如图:


AuthorActivity.java

package com.example.android_test6_6_12;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;






public class AuthorActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.author);
	}
	
	public void toFirst(View v){
		Intent in = new Intent(AuthorActivity.this,MainActivity.class);
		startActivity(in);
	}
}

MainActivity.java

package com.example.android_test6_6_12;

import java.util.Calendar;
import java.util.Date;

import android.R.integer;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
	private TextView tv,tv2;
	private String str= "0",first="",second = "",result = "0";
	private	SQLiteDatabase db;
	private EditText et;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tv2 = (TextView) findViewById(R.id.et_input);
		tv = (TextView) findViewById(R.id.result);
		
		db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir()+"/data2.db", null);
		Calendar data = Calendar.getInstance();
		String a =  data.getTime()+"";
		try{
			db.execSQL("create table saveData(id integer primary key autoincrement,data text);");
		}catch(Exception e){
			Toast.makeText(this, a, 1).show();
		}
			
	}
	public void nine(View v){
		if(str=="0"){
			str = "9";
		}else{
			tv.setText(first);
			str = str + "9";
			
		}
		tv2.setText(str);
	}
	public void eight(View v){
		if(str=="0"){
			str = "8";
		}else{
			tv.setText(first);
			str = str + "8";
			
		}
		tv2.setText(str);
	}
	public void seven(View v){
		if(str=="0"){
			str = "7";
		}else{
			tv.setText(first);
			str = str + "7";
			
		}
		tv2.setText(str);
	}
	public void six(View v){
		if(str=="0"){
			str = "6";
		}else{
			tv.setText(first);
			str = str + "6";
			
		}
		tv2.setText(str);
	}
	public void five(View v){
		if(str=="0"){
			str = "5";
		}else{
			tv.setText(first);
			str = str + "5";
			
		}
		tv2.setText(str);
	}
	public void four(View v){
		if(str=="0"){
			str = "4";
		}else{
			tv.setText(first);
			str = str + "4";
			
		}
		tv2.setText(str);
	}
	public void three(View v){
		if(str=="0"){
			str = "3";
		}else{
			tv.setText(first);
			str = str + "3";
			
		}
		tv2.setText(str);
	}
	public void two(View v){
		if(str=="0"){
			str = "2";
		}else{
			tv.setText(first);
			str = str + "2";
			
		}
		tv2.setText(str);
	}
	public void one(View v){
		if(str=="0"){
			str = "1";
		}else{
			tv.setText(first);
			str = str + "1";
			
		}
		tv2.setText(str);
	}
	public void zero(View v){
		if(str=="0"){
			str = "0";
		}else{
			tv.setText(first);
			str = str + "0";
			
		}
		tv2.setText(str);
	}
	public void dot(View v){
		if(str=="0"){
			str = "0.";
		}else{
			tv.setText(first);
			str = str + ".";
			
		}
		tv2.setText(str);
	}
	
	
	
	
	public void plus(View v){
		if(str==""){
			str = "0"+"+";
		}else{
			str = str +"+";
		}
		tv2.setText(str);
	}
	public void minus(View v){
		if(str==""){
			str = "0"+"-";
		}else{
			str = str +"-";
		}
		tv2.setText(str);
	}
	
	public void times(View v){
		if(str==""){
			str = "0"+"*";
		}else{
			str = str +"*";
		}
		tv2.setText(str);
	}
	public void divide(View v){
		if(str==""){
			str = "0"+"/";
		}else{
			str = str +"/";
		}
		tv2.setText(str);
	}
	
	
	
	public void eq(View v){
		result = tv2.getText().toString();
		
		String[] a = result.split("\\+|\\-|\\*|\\/");
		String[] b = result.split("\\d+\\.?\\d?");
		
		if(result.contains("*")||result.contains("/")){
			for(int i=0;i<b.length;i++){
				if(b[i].contains("*")){
					double sum = (double)Integer.parseInt(a[i])*(double)Integer.parseInt(a[i-1]);
					a[i-1] = 0+"";
					a[i] = sum+"";
					
					b[i] = b[i-1];
				}else if(b[i].contains("/")){
					
					double sum = (double)Integer.parseInt(a[i-1])/(double)Integer.parseInt(a[i]);
					
					a[i-1] = 0+"";
					a[i] = sum+"";
					b[i] = b[i-1];
				}
			}
		}
		if(result.contains("+")||result.contains("-")){
			for(int i=0;i<b.length;i++){
				if(b[i].contains("+")){
					double sum = (double)Integer.parseInt(a[i])+(double)Integer.parseInt(a[i-1]);
					a[i-1] = 0+"";
					a[i] = sum+"";
					
					b[i] = b[i-1];
				}else if(b[i].contains("-")){
					
					double sum = (double)Integer.parseInt(a[i-1])-(double)Integer.parseInt(a[i]);
					
					a[i-1] = 0+"";
					a[i] = sum+"";
					b[i] = b[i-1];
				}
			}
		}
		tv.setText(str);
		first = "="+a[a.length-1];
		tv2.setText(first);
		second = str+first;
		str = "";
	}
	
	public void clear(View v){
		tv2.setText("0");
		str = "";
	}
	
	public void backspace(View v){
		String[] str2 = str.split("");
		str = "";
		str2[str2.length-1]="";
		for(String s:str2){
			str = str +s;
		}
		tv2.setText(str);
	}
	
	public void saveDB(View v){
		if(str!=""){
			db.execSQL("insert into saveData values(null,'"+str+"');");
		}else{
			db.execSQL("insert into saveData values(null,'"+second+"');");
		}
		Toast.makeText(this, "保存成功!", 1).show();
	}
	
	public void p_m(View v){
		setContentView(R.layout.savedb_info);
		et = (EditText) findViewById(R.id.et_save);
		Cursor c = db.rawQuery("select * from saveData ", null);
		String text = "编号\t\t\t\t\t\t\t\t数值\n";
		while(c.moveToNext()){
			text = text +c.getInt(0)+"\t\t\t\t\t\t\t\t\t\t"+c.getString(1)+"\n";
		}
		
		et.setText(text);
	}
	
	public void back(View v){
		str = "";
		setContentView(R.layout.activity_main);
		tv2 = (TextView) findViewById(R.id.et_input);
		tv = (TextView) findViewById(R.id.result);
	}
	
	public void author(View v){
		Intent in = new Intent(MainActivity.this,AuthorActivity.class);
		startActivity(in);
	}
	
}

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: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="com.example.android_test6_6_12.MainActivity"
    android:background="@drawable/girl"
    android:orientation="vertical">
		    <TextView
		        android:layout_width="fill_parent"
		        android:layout_height="wrap_content"
		        android:text=""
		        android:textSize="36sp"
		        android:id="@+id/result"
		        android:gravity="right"
		        android:hint="暂不支持多数运算和小数点" />
		    <TextView 
		         android:textSize="25sp"
		        android:layout_width="fill_parent"
		        android:layout_height="wrap_content"
		        android:id="@+id/et_input"
		        android:numeric="integer"
		        android:gravity="right"/>
		    <TableLayout 
		        android:layout_width="fill_parent"
		        android:layout_height="wrap_content"
		        android:stretchColumns="0,1,2,3,4">
		        <TableRow >
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="C"
		            android:onClick="clear"/>
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="B"
		            android:onClick="backspace"/>
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="query"
		            android:onClick="p_m"/>
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="save"
		            android:onClick="saveDB"/>
		        </TableRow>
		        <TableRow >
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="7"
		            android:onClick="seven"/>
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="8"
		            android:onClick="eight"/>
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="9"
		            android:onClick="nine"/>
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="+"
		            android:onClick="plus"/>
		        </TableRow>
		        <TableRow >
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="4"
		            android:onClick="four"/>
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="5"
		            android:onClick="five"/>
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="6"
		            android:onClick="six"/>
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="-"
		            android:onClick="minus"/>
		        </TableRow>
		        <TableRow >
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="1"
		            android:onClick="one"/>
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="2"
		            android:onClick="two"/>
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="3"
		            android:onClick="three"/>
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="*"
		            android:onClick="times"/>
		        </TableRow>
		        <TableRow >
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="。"
		            />
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="0"
		            android:onClick="zero"/>
		            <Button 
		                 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="="
		            android:onClick="eq"/>
		            <Button 
		              	 android:textSize="25sp"
		            android:layout_width="wrap_content"
		            android:layout_height="wrap_content"
		            android:text="/"
		            android:onClick="divide"/>
		        </TableRow>
		        <Button 
		            android:layout_width="fill_parent"
		            android:layout_height="wrap_content"
		            android:text="作者信息"
		            android:onClick="author"/>
		        
		    </TableLayout>
		
</LinearLayout>

author.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/boys"
     >
   
    <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="返回"
        android:onClick="toFirst"
        android:layout_gravity="right|bottom"/>


</LinearLayout>

savedb_info.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <Button 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="返回"
        android:textSize="25sp"
        android:onClick="back"/>
    <EditText 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text=""
        android:textSize="25sp"
        android:id="@+id/et_save"/>

</LinearLayout>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android_test6_6_12"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="21"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/app_icon"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".AuthorActivity"
            android:label="@string/app_name" >
            
        </activity>
    </application>

</manifest>

因为计算的逻辑代码有些考虑不全,所以有些小bug。运行结果如图:


记得往drawable中放图片。

猜你喜欢

转载自blog.csdn.net/Hello_See_You/article/details/80632949