第一个Android项目——计算器

效果

开始学Android一两个星期了,学习了一下基本的Activity、简单控件及几个简单布局,打算找个东西来练练手,于是就选择发计算器。关于计算器中用到的四则运算在上一篇博客表达式(四则运算)计算的算法中已经讲了。这里不再赘述。

先看一下要达成的效果图:

图1

这里只用到了一个Activity,有EditText、Button两个控件组成,所以比较简单。

布局

这里用到了三种布局:

LinearLayout: 一个整体的垂直的线性布局

有几个属性解释一下:

android:layout_width="match_parent"  layout宽度,match_parent匹配父控件,在这里就是Activity

android:layout_height="match_parent"  layoutr 高度

android:orientation="vertical"  定义为垂直方向

tools:context=".MainActivity"  对应的Activity的java文件

RelativeLayout:相对布局,用于控制backspace和clear按钮

android:layout_alignParentTop="true"  与父窗口顶部对齐

android:layout_toLeftOf="@+id/clear" 在clear组件的大侧

android:layout_alignParentRight="true"  与父窗口右端对齐

android:padding="18dip"  组件之前的空隙

android:gravity="center"  组件中文本的对齐方式

TableLayout  一个4*5的表格布局,用于存放数字和符号按钮

事件监听

我知道的事件监听有两种方式:

一种是先获得控件的对象,再通过控件对象设置监听setOnClickListener();如:

Button backspace = (Button)findViewById(R.id.backspace);

backspace.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

}

}

);

另一种方法是定义一个方法,通过getTag获得控件,然后为多个控件添加监听事件。

public void onClickTransaction(View v) {

// backspace and clear

if ("backspace".equals(v.getTag())) {

//do something

else if ("clear".equals(v.getTag())) {

//do something

}

}

然后在xml文件中对应的控件上设置该监听的函数名

<Button

android:onClick="onClickTransaction"

android:tag="1"

android:layout_height="fill_parent"

android:id="@+id/row0col0"

android:layout_gravity="center_vertical"

android:gravity="center"

android:padding="2dip"

android:text="@string/row0col0" >

</Button>

PS:

我在做这个项目的时候遇到一个很诡异的问题,大家交流一下。在我做出了整体的布局如上面的图1中的时候,相应的监听也加进去了,监听都没有问题。在加最后一个“=”按钮的监听时就不行了,一点按钮就崩溃,后面把最后一个按钮的监听事件去掉了,还是有问题。找了半天没有找到,叫老师过来用debug找了半个小时也没有找到什么错误。后来我一个同学,帮我一点点地试,发现好像什么id生成错误,后面eclipse的project/clean...清除一下缓存,重新编译一下,一切问题都没有了,运行良好。

当你遇到一些比较诡异的问题老是解决不了,你也不防试一下eclipse的project/clean清除一下缓存,也许问题就解决了。

项目下载:http://download.csdn.net/download/luoweifu/6041661

第一个Android项目——计算器的更多相关文章

  1. 用Kotlin创建第一个Android项目(KAD 01)

    原文标题:Create your first Android project using Kotlin (KAD 01) 作者:Antonio Leiva 时间:Nov 21, 2016 原文链接:h ...

  2. 3.创建第一个android项目

    安卓开发学习笔记 1.安卓开发之环境搭建 2.SDK目录结构和adb工具及命令介绍 3.创建第一个android项目 1.打开Eclipse,选择File——>new——>others.. ...

  3. Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)

    一.搭建Android开发环境 准备工作:下载Eclipse.JDK.Android SDK.ADT插件 下载地址:Eclipse:http://www.eclipse.org/downloads/ ...

  4. 第03讲- 第一个Android项目

    第03讲第一个Android项目 Android项目目录结构: 重要文件: src res AndroidManifest.xml 包含内容: MainActivity.java (程序主视图) 存放 ...

  5. 【Android Developers Training】 1. 创建一个Android项目工程

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  6. 如何快速高效地完成一个Android项目?

    本文的内容有别于之前文章中纯技术的探讨,会从业务逻辑.技术.团队和方法论的角度探讨如何快速高效地完成一个Android项目.当然,快速高效是有前提的,第一,本文依然是从研发的角度来谈如何把控项目的,而 ...

  7. 【Android开发】创建你的第一个Android项目

    原文:http://android.eoe.cn/topic/summary 本文中你将了解到: 1. 使用Eclipse创建项目 2. 使用命令行创建项目 你还应该阅读: 1. 安装SDK(官网页面 ...

  8. Creating an Android Project(创建一个android项目)

    一个android项目包含了你的应用程序中的所有源代码文件,我们可以通过android sdk tools轻松地创建一个拥有默认文件跟文件夹的android项目. 这部分课程我们将展示两种创建andr ...

  9. [Android开发教程]Android官网developer training中文版教程 - 1.1.1 创建一个Android项目

    本系列持续更新中.转载请注明来源. 前言:近期打算系统学习一下Android开发,发现Android官网上的developer training也是个非常好的学习资料,于是想到一边学习一边写一个中文版 ...

随机推荐

  1. Linux发行版

    Linux 发行版(英语:Linux distribution,也被叫做GNU/Linux 发行版),为一般用户预先集成好的Linux操作系统及各种应用软件.一般用户不需要重新编译,在直接安装之后,只 ...

  2. Android动画总结#补间动画(Tween Animation/View Animation) #帧动画(Frame Animation/Drawable Animation)#属性动画(PropertyAnimation)

    1.共有三种动画,英文名字多种叫法如下 第一种动画:补间动画(Tween Animation/View Animation) 四个:RotateAnimation旋转. AlphaAnimation透 ...

  3. Sprint5

    进展:今天开始进行了登录界面的编写及实现. 燃尽图: 工作照:

  4. Win7系统Matlab2013a安装.m文件不自动关联到MATLAB.exe解决方法

    1.在matlab命令行中输入以下代码: cwd=pwd; cd([matlabroot '\toolbox\matlab\winfun\private']); fileassoc('add',{'. ...

  5. ActivityManager的使用

    本节内容主要是讲解ActivityManager的使用,通过ActivityManager我们可以获得系统里正在运行的activities,包括 进程(Process)等.应用程序/包.服务(Serv ...

  6. bzoj3131

    这是一道很好也很烦的综合题…… 首先我们肯定要先把f(i)处理出来这是毫无疑问的 我们要求出数位乘积为now的个数,首先是空间上的问题 直接肯定会爆空间,不难发现 乘积的质因数只有2,3,5,7,并且 ...

  7. 发送带有认证信息的HTTP请求并取回响应

    问题 如何发送 一个带有网络认证证书的HTTP请求并返回相应的HTTP响应. 设计 创建一个WebRequest对象和一个NetWorkCredential对象.把NetWorkCredential对 ...

  8. Android开发必知--使用View.setId的正确姿势

    这两天在写一个柱状图的自定义控件,用的直接继承ViewGroup的方式实现的,我们都知道,这是自定义控件里面最简单的一种了,有时间写个总结分享一下.这里我想说的重点是,在写这个自定义控件的时候遇到了个 ...

  9. WE-1202 (JGX-X5 v1.3)刷openwrt

    当前固件版本显示 固件版本 RippleOS硬件型号 RippleTek WE-1202CPU型号是 MT7620N路由主板上面丝印是 JGX-X5  v1.3 买的时候选择的RippleOS固件,后 ...

  10. 机器学习-review-1 线性回归

    发现隔一段时间,忘记了好多知识点,这里认为重要的知识点记录下来,作为笔记,方便以后回顾. From “李航- 统计学习方法” 统计学习方法的三要素: 模型,策略, 算法 对于线性回归 -------- ...