Android仿Win10计算器设计

来源:互联网 发布:在淘宝上做虚拟充值 编辑:程序博客网 时间:2024/06/07 20:02

一、  实验题目

安卓端仿Win10计算器设计

二、  实验目的

(1)  掌握Android UI设计。

(2)  掌握Adapter适配器的用法。

(3)  掌握字符串的操作以及数据类型转换。

三、  实验环境

(1)  Windows 7 64位

(2)  JDK 1.7

(3)  Android SDK

(4)  编程工具:Android Studio2.1.1

四、  实验设计过程

(1) UI设计

布局设计思路


如上图是我找的一张Win10计算器的截图,由图可以看出,这个计算器主要可分为四块

①    标题栏

②    显示栏

③    百分号、平方等快捷功能

④    数字按键及运算符

根据以上需求,我们大致可以列出主要布局如下

  •   LinearLayout (垂直方向)
  •   LinearLayout (标题栏布局,水平方向,放置两个图标和标题)
  •      ImageView
  •      TextView
  •      ImageView
  •   TextView (用于显示计算后的式子)
  •   TextView (用于显示按键所按下的数字,以及计算后的结果)
  •   GridView (用于放置百分号、平方等快捷功能的按键)
  •   GridView (用于放置数字按键以及运算符)

 

了解用到的布局及组件

①     LinearLayout

LinearLayout又称作线性布局,是一种非常常用的布局。正如它名字所描述的一样,这个布局会将它所包含的控件在线性方向上依次排列。我们可以通过android:orientation属性指定了排列方向,如果指定的是vertical,则他的子布局都会在垂直方向排布,如果指定的是horizontal,控件就会在水平方向上排列了。

②     ImageView

ImageView是用于在界面上展示图片的一个控件,通过它可以让我们的程序界面变得更加丰富多彩。例如,我们在drawable目录下放入一张ic_launcher.png图片,我们可以通过指定android:src="@drawable/ic_launcher"来设置显示的图片,我们可以通过指定android:scaleType=" "的属性来改变图片显示的效果。

③     TextView

TextView可以说是Android中最简单的一个控件了。它主要用于在界面上显示一段文本信息,我们可以通过设置android:text="Hello world!"来改变显示的文字,可以通过android:textSize="20sp"来改变字体大小,可以通过android:textColor="#000000"来改变字体颜色。

④     GridView

GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,文字等内容,我们的计算器设计中按键即可用GridView实现,其省去了写大量Button的方式,使设计最简化。

GirdView的一些属性及作用:

android:numColumns="4" --------列数设置为自动

android:columnWidth="90dp"----------每列的宽度,也就是Item的宽度

android:stretchMode="columnWidth"------缩放与列宽大小同步

android:verticalSpacing="10dp"----------垂直边距

android:horizontalSpacing="10dp"-------水平边距

在实际设计中我采用了两个GridView,因为从Win10计算器中我们可以发现,功能按键区和数字按键区的背景颜色不同,所以我通过两个GridView设置不同背景颜色实现,最终布局效果如下:

 

(2) 程序设计

代码大纲


首先在MainActivity类中定义了基本变量,其中两个double型变量ab用于保存两个待操作数,intop变量则是用来标识计算方式,如+-*/

onCreate方法初始化了使用到的组件变量,并且设置了两个GridView的单击监听,并复写了onClick事件。用于处理按键的点击事件。

接着重写了BaseAdapter类,并复写了getView方法,实现了往两个GridView设置文字。

了解Adapter适配器

什么是适配器呢?顾名思义,就是把一些数据给弄得适当,适合以便于在View上显示。适配器就像显示器,把复杂的东西按人可以接受的方式来展现。也可以这样来理解适配器,GridView通过适配器,理解我们要对GridView里加入什么内容,而我们在适配器里@Override的方法,就是让我们写上我们要告诉这个GridView的一些基本内容。

 

可以说适配器就是数据和视图之间的桥梁,学好适配器还是非常重要的。

  •  BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;
  •  ArrayAdapter支持泛型操作,最为简单,只能展示一行字。
  •  SimpleAdapter有最好的扩充性,可以自定义出各种效果。
  •  SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。

代码分析

 

①  代码:

      textView1 = (TextView) findViewById(R.id.textView1);      textView2 = (TextView)findViewById(R.id.textView2);      GridView gridView1 = (GridView) findViewById(R.id.gridView1);      GridViewgridView2 = (GridView) findViewById(R.id.gridView2);

       分析:

用findViewById()方法来初始化组件,通过id来绑定布局与对象,其中需要注意findViewById()返回的是View类型,所以不能直接赋值,需要强制转换相应的类型在赋值。

②  代码:

</pre><pre name="code" class="java">switch (op) {                 case 0:                     a = b;                     break;                 case 1:                     a = a / b;                     break;                 case 2:                     a = a * b;                     break;                 case 3:                     a = a - b;                     break;                 case 4:                     a = a + b;                     break;                 default:                     break; }

分析:

通过判断OP值来区分操作的方式,也就是计算的方式,然后再将计算的结果赋值给a,如果op为0,则计算结果就为b,如果op为1则计算结果为a/b,以此类推。

③  代码:

    case 2:        if(textView1.getText().toString().length() == 1) {            textView1.setText("0");        } else {                   String get = textView1.getText().toString().substring(0,textView1.getText().toString().length() - 1);                   textView1.setText(get);        }        break;          

分析:

如果按下退格按键,则删除textview1中的最后一个数字,可以通过substring()方法来截取字符串,截取第一个字符到倒数第二个字符即可实现删除最后一个字符。

 

 

④  代码:

class MyAdapter1 extends BaseAdapter {        private Context context;        private String[] ItemName =                {"%", "√", "x²", "¹/x"};        public MyAdapter1(Context context) {            // TODO Auto-generated constructor stub            this.context = context;        }        @Override        public int getCount() {            // TODO Auto-generated method stub            return ItemName.length;        }        @Override        public Object getItem(int position) {            // TODO Auto-generated method stub            return position;        }        @Override        public long getItemId(int position) {            // TODO Auto-generated method stub            return position;        }        @SuppressLint("ViewHolder")        @Override        public View getView(int position, View convertView, ViewGroup parent) {            // TODO Auto-generated method stub            convertView = View.inflate(context, R.layout.gridview1, null);            TextView textView = (TextView) convertView.findViewById(R.id.text);            textView.setText(ItemName[position]);            return convertView;        }}

分析:

   继承BaseAdapter类,用于向GridView设置内容,其中在getView()方法中初始化convertView,绑定gridview1布局,并向布局里的textview设置文本内容,然后再返回convertView,完成GridView的初始化。

 

 

六、  源代码

XML布局(activity_main):

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="fill_parent"   android:layout_height="fill_parent"   android:background="#F2F2F2"   android:fitsSystemWindows="true"   android:orientation="vertical">    <LinearLayout       android:layout_width="match_parent"        android:layout_height="48dp"       android:gravity="center_vertical"       android:orientation="horizontal">         <ImageView           android:layout_width="0dp"           android:layout_height="45dp"            android:layout_weight="1"           android:contentDescription="@string/app_name"           android:src="@drawable/list" />         <TextView           android:layout_width="0dp"           android:layout_height="match_parent"            android:layout_weight="4"            android:gravity="center_vertical"           android:paddingLeft="10dp"            android:text="标准"            android:textSize="20sp"/>         <ImageView           android:layout_width="0dp"           android:layout_height="45dp"            android:layout_weight="1"           android:contentDescription="@string/app_name"           android:src="@drawable/more" />   </LinearLayout>    <TextView        android:id="@+id/textView2"       android:layout_width="match_parent"        android:layout_height="47dp"        android:gravity="end|bottom"        android:paddingRight="15dp"        android:text=""        android:textSize="20sp" />    <TextView        android:id="@+id/textView1"       android:layout_width="match_parent"        android:layout_height="100dp"        android:background="@drawable/line"       android:gravity="center_vertical|end"        android:paddingRight="15dp"        android:singleLine="true"        android:text="0"        android:textSize="50sp" />    <GridView        android:id="@+id/gridView1"        android:layout_width="match_parent"       android:layout_height="wrap_content"        android:background="#F2F2F2"        android:numColumns="4"/>    <GridView        android:id="@+id/gridView2"       android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="#E6E6E6"        android:numColumns="4"/> </LinearLayout> XML布局(gridview1):<?xml version="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:gravity="center"   android:orientation="vertical">    <TextView        android:id="@+id/text"       android:layout_width="wrap_content"        android:layout_height="70dp"       android:gravity="center"        android:text="文字"        android:textColor="#010101"        android:textSize="30dp" /> </LinearLayout>


 

Java代码:

package com.example.lincoln.calculator; import android.annotation.SuppressLint;import android.app.Activity;import android.content.Context;import android.os.Build;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.view.WindowManager;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.GridView;import android.widget.TextView;import android.widget.Toast;  public class MainActivity extendsActivity {   private TextView textView1;   private TextView textView2;   private double a = 0, b = 0;   private int op = 0; // 操作方式比如 +-*/    @Override   protected void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);       setContentView(R.layout.activity_main);        //当安卓版本大于4.4时沉浸状态栏       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {            //透明状态栏           getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);            //透明导航栏           getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);       }        textView1 = (TextView) findViewById(R.id.textView1);       textView2 = (TextView) findViewById(R.id.textView2);       GridView gridView1 = (GridView) findViewById(R.id.gridView1);       gridView1.setAdapter(new MyAdapter1(this));       gridView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {             public voidonItemClick(AdapterView<?> parent, View view, int position, long id) {                // TODO Auto-generated methodstub                 switch (position) {                    case 0:                        if(textView1.getText().toString().contains("√") ||textView1.getText().toString().contains("2") ||textView1.getText().toString().contains("1/")) {                            Toast.makeText(MainActivity.this,"%、√、x2、1/ 只允许出现一次,不能同时出现!",Toast.LENGTH_SHORT).show();                            break;                        }                        if(textView1.getText().toString().contains("%")) {                            textView1.setText(textView1.getText().toString().substring(0,textView1.getText().toString().length() - 1));                        } else {                           textView1.setText(textView1.getText().toString() + "%");                        }                        break;                    case 1:                        if(textView1.getText().toString().contains("%") ||textView1.getText().toString().contains("2") ||textView1.getText().toString().contains("1/")) {                            Toast.makeText(MainActivity.this,"%、√、x2、1/ 只允许出现一次,不能同时出现!",Toast.LENGTH_SHORT).show();                            break;                        }                        if(textView1.getText().toString().contains("√")) {                            textView1.setText(textView1.getText().toString().substring(1,textView1.getText().toString().length()));                        } else {                           textView1.setText("√" + textView1.getText().toString());                        }                        break;                    case 2:                        if(textView1.getText().toString().contains("%") ||textView1.getText().toString().contains("√") ||textView1.getText().toString().contains("1/")) {                            Toast.makeText(MainActivity.this,"%、√、x2、1/ 只允许出现一次,不能同时出现!",Toast.LENGTH_SHORT).show();                            break;                        }                        if(textView1.getText().toString().contains("2")) {                            textView1.setText(textView1.getText().toString().substring(0,textView1.getText().toString().length() - 1));                        } else {                           textView1.setText(textView1.getText().toString() + "2");                        }                        break;                    case 3:                        if(textView1.getText().toString().contains("%") ||textView1.getText().toString().contains("√") ||textView1.getText().toString().contains("2")) {                           Toast.makeText(MainActivity.this, "%、√、x2、1/ 只允许出现一次,不能同时出现!", Toast.LENGTH_SHORT).show();                            break;                        }                        if(textView1.getText().toString().contains("1/")) {                           textView1.setText(textView1.getText().toString().substring(2,textView1.getText().toString().length()));                        } else {                           textView1.setText("1/" + textView1.getText().toString());                        }                        break;                     default:                        break;                }            }       });       gridView1 = (GridView) findViewById(R.id.gridView2);       gridView1.setAdapter(new MyAdapter2(this));       gridView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {             public voidonItemClick(AdapterView<?> parent, View view, int position, long id) {                // TODO Auto-generated methodstub                switch (position) {                    case 0:                        a = 0;                        b = 0;                        op = 0;                       textView1.setText("0");                       textView2.setText(" ");                        break;                    case 1:                        a = 0;                       b = 0;                        op = 0;                       textView1.setText("0");                       textView2.setText(" ");                        break;                    case 2:                        if (textView1.getText().toString().length()== 1) {                           textView1.setText("0");                        } else {                            String get =textView1.getText().toString().substring(0,textView1.getText().toString().length() - 1);                           textView1.setText(get);                        }                        break;                    case 3:                        if(textView2.getText().toString().equals("")) {                            a =Double.valueOf(textView1.getText().toString());                           textView2.setText(textView1.getText().toString() + " ÷ ");                           textView1.setText("0");                           Log.e("tag",String.valueOf(a) + "  if/ " + String.valueOf(b));                            op = 1;                        } else {                            if(textView1.getText().toString().contains("%")) {                                b =Double.valueOf(textView1.getText().toString().substring(0, textView1.getText().toString().length()- 1)) / 100;                            } else if(textView1.getText().toString().contains("√")) {                                b =Math.sqrt(Double.valueOf(textView1.getText().toString().substring(1,textView1.getText().toString().length())));                            } else if(textView1.getText().toString().contains("2")) {                                b =Double.valueOf(textView1.getText().toString().substring(0,textView1.getText().toString().length() - 1)) *Double.valueOf(textView1.getText().toString().substring(0,textView1.getText().toString().length() - 1));                            } else if(textView1.getText().toString().contains("1/")) {                                b = 1 /Double.valueOf(textView1.getText().toString().substring(2, textView1.getText().toString().length()));                            } else {                                b =Double.valueOf(textView1.getText().toString());                            }                            switch (op) {                                case 0:                                    a = b;                                    break;                                case 1:                                    a = a / b;                                    break;                                case 2:                                    a = a * b;                                    break;                                case 3:                                    a = a - b;                                    break;                                case 4:                                    a = a + b;                                    break;                                default:                                    break;                            }                            textView2.setText(textView2.getText().toString()+ textView1.getText().toString() + " ÷ ");                           textView1.setText("0");                           Log.e("tag", String.valueOf(a) + "  else / " + String.valueOf(b));                            op = 1;                        }                        break;                    case 4:                        if(textView1.getText().toString().equals("0")) {                           textView1.setText("7");                        } else {                            String get =textView1.getText().toString() + "7";                           textView1.setText(get);                        }                        break;                    case 5:                        if (textView1.getText().toString().equals("0")){                           textView1.setText("8");                        } else {                            String get =textView1.getText().toString() + "8";                           textView1.setText(get);                       }                        break;                    case 6:                        if(textView1.getText().toString().equals("0")) {                           textView1.setText("9");                        } else {                            String get =textView1.getText().toString() + "9";                           textView1.setText(get);                        }                        break;                    case 7:                        if(textView2.getText().toString().equals("")) {                            a =Double.valueOf(textView1.getText().toString());                           textView2.setText(textView1.getText().toString() + " × ");                           textView1.setText("0");                            Log.e("tag", String.valueOf(a) +"  if*  " + String.valueOf(b));                            op = 2;                        } else {                            if(textView1.getText().toString().contains("%")) {                                b = Double.valueOf(textView1.getText().toString().substring(0,textView1.getText().toString().length() - 1)) / 100;                            } else if(textView1.getText().toString().contains("√")) {                                b =Math.sqrt(Double.valueOf(textView1.getText().toString().substring(1,textView1.getText().toString().length())));                            } else if(textView1.getText().toString().contains("2")) {                                b =Double.valueOf(textView1.getText().toString().substring(0,textView1.getText().toString().length() - 1)) *Double.valueOf(textView1.getText().toString().substring(0,textView1.getText().toString().length() - 1));                            } else if(textView1.getText().toString().contains("1/")) {                                b = 1 /Double.valueOf(textView1.getText().toString().substring(2,textView1.getText().toString().length()));                            } else {                                b =Double.valueOf(textView1.getText().toString());                            }                            switch (op) {                                case 0:                                    a = b;                                    break;                                case 1:                                   a = a/ b;                                    break;                                case 2:                                    a = a * b;                                    break;                                case 3:                                   a= a - b;                                    break;                                case 4:                                    a = a + b;                                    break;                                default:                                    break;                            }                           textView2.setText(textView2.getText().toString() +textView1.getText().toString() + " × ");                           textView1.setText("0");                           Log.e("tag",String.valueOf(a) + "  else*  " + String.valueOf(b));                            op = 2;                        }                        break;                    case 8:                        if(textView1.getText().toString().equals("0")) {                           textView1.setText("4");                        } else {                            String get =textView1.getText().toString() + "4";                           textView1.setText(get);                        }                        break;                    case 9:                        if(textView1.getText().toString().equals("0")) {                           textView1.setText("5");                        } else {                            String get =textView1.getText().toString() + "5";                           textView1.setText(get);                        }                        break;                    case 10:                        if(textView1.getText().toString().equals("0")) {                           textView1.setText("6");                        } else {                            String get =textView1.getText().toString() + "6";                           textView1.setText(get);                        }                       break;                    case 11:                        if(textView2.getText().toString().equals("")) {                            a =Double.valueOf(textView1.getText().toString());                           textView2.setText(textView1.getText().toString() + " - ");                           textView1.setText("0");                           Log.e("tag", String.valueOf(a) + "  if- " + String.valueOf(b));                            op = 3;                        } else {                           if(textView1.getText().toString().contains("%")) {                                b =Double.valueOf(textView1.getText().toString().substring(0,textView1.getText().toString().length() - 1)) / 100;                            } else if(textView1.getText().toString().contains("√")) {                                b =Math.sqrt(Double.valueOf(textView1.getText().toString().substring(1,textView1.getText().toString().length())));                            } else if(textView1.getText().toString().contains("2")) {                                b =Double.valueOf(textView1.getText().toString().substring(0,textView1.getText().toString().length() - 1)) *Double.valueOf(textView1.getText().toString().substring(0, textView1.getText().toString().length()- 1));                            } else if(textView1.getText().toString().contains("1/")) {                                b = 1 /Double.valueOf(textView1.getText().toString().substring(2,textView1.getText().toString().length()));                            } else {                                b =Double.valueOf(textView1.getText().toString());                            }                            switch (op) {                                case 0:                                    a = b;                                    break;                                case 1:                                    a = a / b;                                    break;                                case 2:                                    a = a * b;                                    break;                                case 3:                                    a = a - b;                                    break;                                case 4:                                    a = a + b;                                    break;                                default:                                    break;                            }                           textView2.setText(textView2.getText().toString() +textView1.getText().toString() + " - ");                           textView1.setText("0");                           Log.e("tag", String.valueOf(a) + "  else- " + String.valueOf(b));                            op = 3;                        }                        break;                    case 12:                        if(textView1.getText().toString().equals("0")) {                           textView1.setText("1");                        } else {                            String get =textView1.getText().toString() + "1";                           textView1.setText(get);                        }                        break;                    case 13:                        if(textView1.getText().toString().equals("0")) {                           textView1.setText("2");                        } else {                            String get =textView1.getText().toString() + "2";                           textView1.setText(get);                        }                        break;                    case 14:                        if(textView1.getText().toString().equals("0")) {                           textView1.setText("3");                        } else {                            String get =textView1.getText().toString() + "3";                           textView1.setText(get);                        }                        break;                    case 15:                        if(textView2.getText().toString().equals("")) {                            a =Double.valueOf(textView1.getText().toString());                           textView2.setText(textView1.getText().toString() + " + ");                           textView1.setText("0");                            Log.e("tag", String.valueOf(a) + "  if+ " + String.valueOf(b));                            op = 4;                        } else {                            if(textView1.getText().toString().contains("%")) {                                b =Double.valueOf(textView1.getText().toString().substring(0,textView1.getText().toString().length() - 1)) / 100;                            } else if(textView1.getText().toString().contains("√")) {                                b =Math.sqrt(Double.valueOf(textView1.getText().toString().substring(1,textView1.getText().toString().length())));                            } else if(textView1.getText().toString().contains("2")) {                                b =Double.valueOf(textView1.getText().toString().substring(0, textView1.getText().toString().length()- 1)) * Double.valueOf(textView1.getText().toString().substring(0,textView1.getText().toString().length() - 1));                            } else if(textView1.getText().toString().contains("1/")) {                                b = 1 /Double.valueOf(textView1.getText().toString().substring(2,textView1.getText().toString().length()));                            } else {                                b =Double.valueOf(textView1.getText().toString());                            }                            switch (op) {                                case 0:                                    a = b;                                    break;                                case 1:                                    a = a / b;                                    break;                                case 2:                                    a = a * b;                                    break;                                case 3:                                    a = a - b;                                    break;                                case 4:                                    a = a + b;                                    break;                                default:                                    break;                            }                           textView2.setText(textView2.getText().toString() +textView1.getText().toString() + " + ");                           textView1.setText("0");                            Log.e("tag",String.valueOf(a) + "  else+  " + String.valueOf(b));                            op = 4;                        }                        break;                    case 16:                        if (textView1.getText().toString().contains("-")){                           textView1.setText(textView1.getText().toString().substring(1,textView1.getText().toString().length()));                        } else {                           textView1.setText("-" + textView1.getText().toString());                        }                        break;                    case 17:                        if(textView1.getText().toString().equals("0")) {                           textView1.setText("0");                        } else {                            String get =textView1.getText().toString() + "0";                           textView1.setText(get);                        }                        break;                    case 18:                        if(textView1.getText().toString().equals("0")) {                           textView1.setText("0.");                        } else {                            if(!textView1.getText().toString().contains(".")) {                                String get =textView1.getText().toString() + ".";                               textView1.setText(get);                            }                        }                        break;                    case 19:                        textView2.setText(textView2.getText().toString()+ textView1.getText().toString() + " =");                        if(textView1.getText().toString().contains("%")) {                            b =Double.valueOf(textView1.getText().toString().substring(0, textView1.getText().toString().length()- 1)) / 100;                        } else if(textView1.getText().toString().contains("√")) {                            b =Math.sqrt(Double.valueOf(textView1.getText().toString().substring(1,textView1.getText().toString().length())));                        } else if(textView1.getText().toString().contains("2")) {                            b =Double.valueOf(textView1.getText().toString().substring(0,textView1.getText().toString().length() - 1)) * Double.valueOf(textView1.getText().toString().substring(0,textView1.getText().toString().length() - 1));                        } else if(textView1.getText().toString().contains("1/")) {                            b = 1 /Double.valueOf(textView1.getText().toString().substring(2,textView1.getText().toString().length()));                        } else {                            b =Double.valueOf(textView1.getText().toString());                        }                        switch (op) {                            case 0:                                a = b;                                if(String.valueOf(a).length() > 11) {                                   textView1.setText(String.valueOf(a).substring(0, 11));                                } else {                                   textView1.setText(String.valueOf(a).substring(String.valueOf(a).length()- 2, String.valueOf(a).length()).equals(".0") ?String.valueOf(a).substring(0, String.valueOf(a).length() - 2) :String.valueOf(a));                                }                               Log.e("tag", "a=" + String.valueOf(a) + "     b=" + String.valueOf(b));                                break;                            case 1:                                a = a / b;                                if (String.valueOf(a).length()> 11) {                                   textView1.setText(String.valueOf(a).substring(0, 11));                                } else {                                   textView1.setText(String.valueOf(a).substring(String.valueOf(a).length()- 2, String.valueOf(a).length()).equals(".0") ?String.valueOf(a).substring(0, String.valueOf(a).length() - 2) :String.valueOf(a));                                }                               Log.e("tag", "a=" + String.valueOf(a) + "  / b=" + String.valueOf(b));                                break;                            case 2:                                a = a * b;                                if(String.valueOf(a).length() > 11) {                                    textView1.setText(String.valueOf(a).substring(0,11));                                } else {                                   textView1.setText(String.valueOf(a).substring(String.valueOf(a).length()- 2, String.valueOf(a).length()).equals(".0") ?String.valueOf(a).substring(0, String.valueOf(a).length() - 2) :String.valueOf(a));                                }                               Log.e("tag", "a=" + String.valueOf(a) + "  * b=" + String.valueOf(b));                                break;                            case 3:                                a = a - b;                                if(String.valueOf(a).length() > 11) {                                   textView1.setText(String.valueOf(a).substring(0, 11));                                } else {                                   textView1.setText(String.valueOf(a).substring(String.valueOf(a).length()- 2, String.valueOf(a).length()).equals(".0") ?String.valueOf(a).substring(0, String.valueOf(a).length() - 2) :String.valueOf(a));                                }                               Log.e("tag", "a=" + String.valueOf(a) + "  - b=" + String.valueOf(b));                                break;                            case 4:                               a = a +b;                                if(String.valueOf(a).length() > 11) {                                   textView1.setText(String.valueOf(a).substring(0, 11));                                } else {                                    textView1.setText(String.valueOf(a).substring(String.valueOf(a).length()- 2, String.valueOf(a).length()).equals(".0") ?String.valueOf(a).substring(0, String.valueOf(a).length() - 2) : String.valueOf(a));                                }                               Log.e("tag", "a=" + String.valueOf(a) + "  + b=" + String.valueOf(b));                                break;                            default:                                break;                        }                       op = 0;                        break;                    default:                        break;                }            }       });   }    class MyAdapter1 extends BaseAdapter {       private Context context;       private String[] ItemName =                {"%", "√","x2", "1/x"};        public MyAdapter1(Context context) {            // TODO Auto-generated constructorstub            this.context = context;       }        @Override       public int getCount() {            // TODO Auto-generated method stub            return ItemName.length;       }        @Override       public Object getItem(int position) {            // TODO Auto-generated method stub            return position;       }        @Override       public long getItemId(int position) {            // TODO Auto-generated method stub            return position;       }        @SuppressLint("ViewHolder")       @Override       public View getView(int position, View convertView, ViewGroup parent) {            // TODO Auto-generated method stub             convertView = View.inflate(context,R.layout.gridview1, null);            TextView textView = (TextView)convertView.findViewById(R.id.text);            textView.setText(ItemName[position]);             return convertView;       }    }    class MyAdapter2 extends BaseAdapter {       private Context context;       private String[] ItemName =                {"CE", "C","←", "÷", "7", "8", "9", "×", "4", "5", "6", "-","1", "2", "3", "+", "±", "0", ".", "="};        public MyAdapter2(Context context) {            // TODO Auto-generated constructorstub            this.context = context;       }        @Override       public int getCount() {            // TODO Auto-generated method stub            return ItemName.length;       }        @Override       public Object getItem(int position) {            // TODO Auto-generated method stub            return position;       }        @Override       public long getItemId(int position) {            // TODO Auto-generated method stub            return position;       }        @SuppressLint("ViewHolder")       @Override       public View getView(int position, View convertView, ViewGroup parent) {            // TODO Auto-generated method stub            convertView = View.inflate(context,R.layout.gridview1, null);            TextView textView = (TextView)convertView.findViewById(R.id.text);           textView.setText(ItemName[position]);             return convertView;       }    } }


七、  运行效果


新手第一次发博客,这本来是老师要求我们完成的作业,现在分享出来。

1 0
原创粉丝点击