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型变量a,b用于保存两个待操作数,int型op变量则是用来标识计算方式,如+-*/
在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; } } }
七、 运行效果
新手第一次发博客,这本来是老师要求我们完成的作业,现在分享出来。
- Android仿Win10计算器设计
- 仿android计算器
- Android仿计算器布局代码
- android计算器设计总结
- 用Android仿计算器布局代码
- android牛刀小试之计算器设计
- java制作仿win7计算器之一计算器的图形界面的设计
- 仿计算器布局代码
- java仿写计算器
- AWT高仿计算器
- 仿小米计算器
- 关于Android中计算器的设计
- 计算器设计
- Delphi仿系统计算器[源码]
- 仿安居客房贷计算器
- Java实现仿Windows计算器
- IOS 仿自带计算器
- 仿XP计算器界面练习
- UIButton 内容对齐方式
- Xamarin.Forms相关文章
- MVC3学习:实现文章上一篇下一篇链接
- C语言位操作
- 3、垃圾收集器与内存分配策略
- Android仿Win10计算器设计
- [CentOS]安装软件:/lib/ld-linux.so.2: bad ELF interpreter解决
- java编程、java学习:深刻理解Java编程的7个例子
- 《CSS权威指南》学习记录——定位(一)
- C语言枚举和联合
- userAgent判断客户端类型
- C语言文件
- iOS内核分析--iPhone手机存储
- JStorm-2.1.1初识及提交同名的Topology