第一个Android项目——计算器
第一个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项目——计算器的更多相关文章
- 用Kotlin创建第一个Android项目(KAD 01)
原文标题:Create your first Android project using Kotlin (KAD 01) 作者:Antonio Leiva 时间:Nov 21, 2016 原文链接:h ...
- 3.创建第一个android项目
安卓开发学习笔记 1.安卓开发之环境搭建 2.SDK目录结构和adb工具及命令介绍 3.创建第一个android项目 1.打开Eclipse,选择File——>new——>others.. ...
- Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)
一.搭建Android开发环境 准备工作:下载Eclipse.JDK.Android SDK.ADT插件 下载地址:Eclipse:http://www.eclipse.org/downloads/ ...
- 第03讲- 第一个Android项目
第03讲第一个Android项目 Android项目目录结构: 重要文件: src res AndroidManifest.xml 包含内容: MainActivity.java (程序主视图) 存放 ...
- 【Android Developers Training】 1. 创建一个Android项目工程
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 如何快速高效地完成一个Android项目?
本文的内容有别于之前文章中纯技术的探讨,会从业务逻辑.技术.团队和方法论的角度探讨如何快速高效地完成一个Android项目.当然,快速高效是有前提的,第一,本文依然是从研发的角度来谈如何把控项目的,而 ...
- 【Android开发】创建你的第一个Android项目
原文:http://android.eoe.cn/topic/summary 本文中你将了解到: 1. 使用Eclipse创建项目 2. 使用命令行创建项目 你还应该阅读: 1. 安装SDK(官网页面 ...
- Creating an Android Project(创建一个android项目)
一个android项目包含了你的应用程序中的所有源代码文件,我们可以通过android sdk tools轻松地创建一个拥有默认文件跟文件夹的android项目. 这部分课程我们将展示两种创建andr ...
- [Android开发教程]Android官网developer training中文版教程 - 1.1.1 创建一个Android项目
本系列持续更新中.转载请注明来源. 前言:近期打算系统学习一下Android开发,发现Android官网上的developer training也是个非常好的学习资料,于是想到一边学习一边写一个中文版 ...
随机推荐
- 织梦中limit的用法详解(调用指定id下的指定文章)
limit的用法大致可以理解为:调用指定id下的指定文章. 下面为代码片段,需要的朋友自行拿去: {dede:arclist typeid='6' row='1' limit='0,1'} <l ...
- bzoj 1209: [HNOI2004]最佳包裹 三维凸包
1209: [HNOI2004]最佳包裹 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 160 Solved: 58[Submit][Status] ...
- BZOJ 1690: [Usaco2007 Dec]奶牛的旅行
Description 作为对奶牛们辛勤工作的回报,Farmer John决定带她们去附近的大城市玩一天.旅行的前夜,奶牛们在兴奋地讨论如何最好地享受这难得的闲暇. 很幸运地,奶牛们找到了一张详细的城 ...
- 剖析ECMALL的登录机制
在ecmall.php文件中实例化控制器类,每一个控制器类,必须继承(extends)upload\admin\app\backend.base.php文件.在继承中调用方法是谁先被继承谁的方法被先调 ...
- 从 IT 中断中学到的最佳监控实践
每个运维监控工具,一般要追踪数十万个内部性能指标.学会对哪些事件进行告警以及监控确实需要花费想当长的一段时间.因为,并非所有的指标等级都是一致.因此我们需要摸索出一套简单的方法,便于管理所有指标,而且 ...
- Application对象的使用-数据传递以及内存泄漏
Application的使用 What is Application Application和Activity,Service一样是android框架的一个系统组件,当android程序启动时系统会创 ...
- GCC优化选项-fomit-frame-pointer对于esp和ebp优化的作用
我的博客:www.while0.com -fomit-frame-pointer选项是发布产品时经常会用到的优化选项,它可以优化汇编函数中用edp协助获取堆栈中函数参数的部分,不使用edp,而是通过计 ...
- perl unload utf-8 oracle Wide character in print at unload_oracle.pl line 105.
#!/usr/bin/perl use DBI; use Encode; my $dbName = 'oadb'; my $dbUser = 'vxspace'; my $dbUserPass = ' ...
- Java 多维数组 按某列 排序
public MetaCell[][] getByColumn(final int columnIndex, int decisionIndex) {//[注意]final咯 ...
- 【CF】259 Div.1 B Little Pony and Harmony Chest
还蛮有趣的一道状态DP的题目. /* 435B */ #include <iostream> #include <string> #include <map> #i ...