第一个Android项目——计算器

第一个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()如:

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

backspace.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

}

}

);

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

publicvoidonClickTransaction(Viewv){

//backspaceandclear

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

//dosomething

}elseif("clear".equals(v.getTag())){

//dosomething

}

}

然后在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值