文档章节

第一个Android项目——计算器

自由的角马
 自由的角马
发布于 2015/01/10 13:56
字数 726
阅读 75
收藏 0

第一个Android项目——计算器

效果

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

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

1

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

布局

这里用到了三种布局:

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

有几个属性解释一下:

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

 android:layout_height="match_parent"  layoutr 高度

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

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

RelativeLayout相对布局,用于控制backspaceclear按钮

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生成错误,后面eclipseproject/clean...清除一下缓存,重新编译一下,一切问题都没有了,运行良好。

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

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

本文转载自:http://blog.csdn.net/luoweifu/article/details/10696693

自由的角马
粉丝 1
博文 269
码字总数 0
作品 0
文山
私信 提问
简单计算器 安卓 Android 作业

Android老师布置的课程作业——简单计算器 功能要求实现四则运算,参考界面见下图: 首先给各位老铁提供apk安装包以及项目压缩包,略表诚意~ github地址:https://github.com/wonke/Calculat...

知亦行
04/14
0
0
QT实战-计算器-刘桂林-专题视频课程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26787115/article/details/83580590 QT实战-计算器—152人已学习 课程介绍 使用Qt Creator开发一个具有运算...

刘某人程序员
2018/04/27
0
0
Android Studio 3.0 正式发布,支持 Kotlin 语言

除了 Android 8.1 Oreo 开发者预览版,Google 今日还正式发布了 Android Studio 3.0 ,为其 IDE 引入了一系列新功能。 Android Studio 3.0 专注于加速 Android 应用开发,包含大量更新内容,...

王练
2017/10/26
17K
57
RecyclerView的进场动画、点击动画

本文链接:https://blog.csdn.net/cpcpcp123/article/details/84567010 下面图片即为本次的运行效果: 1.进场动画是在viewholder中的onViewAttachedToWindow()中添加动画即可,动画的代码:...

shzwork
10/08
26
0
Android JNI学习(二)——实战JNI之“hello world”

本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Native相互调用 Android JNI学习(四)——JNI的常用方法...

隔壁老李头
2018/05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

对比ubuntu与centos系统 ​​​​

CentOS与Ubuntu该如何选择,哪个更好用。笔者在自媒体平台收集了一些网友的观点,较为经典,分享给大家。至于应该选择哪个,希望看完本文章后,读者心中有数。 观点1:CentOS适用于服务器,U...

老孟的Linux私房菜
今天
12
0
Java的基本类型

一、Java的基本类型 Java的基本类型有哪些? boolean char byte short int long float double ? 延伸思考 思考一:为什么有的书籍说Java存在第9种数据类型? 实际上,JAVA中还存在另外一种基...

yumoop
今天
14
0
OSChina 周四乱弹 —— 富婆小时候

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @猿敲月下码 :#今日歌曲推荐# 分享陈慧娴的单曲《夜机》 《夜机》- 陈慧娴 手机党少年们想听歌,请使劲儿戳(这里) @開源中國張學友 :早上...

小小编辑
今天
23
0
MyMinimad ── Linux下用libmad写的mp3解码播放程序(四)

优化了内存使用,不再使用mmap映射整个文件到内存 /* * 本程序是从 minimad 改进而来,如要更详细的说明请参看 minimad.c * * Gu Zhou, 2009/12/25, SiChuan University, China *...

代码强国
今天
18
0
Minikube安装

1、下载Minikube二进制文件 sudo curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/latest/minikube-linux-amd64 2、设置权限 sudo chmod +x minikube......

RogueQ
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部