- 浏览: 13991 次
文章分类
最新评论
刚接触android开发三天,看了一些视频,然后就突发奇想的看看可有啥简单的练笔程序,网上找了个关于计算器实现的demo,因此花了几个小时时间实现了该计算器程序,现将整个过程记载下来,也算是学习android途中的一点体会吧!
1、关于页面设计部分是看着网上的图片然后根据所学知识及网络上解决思路(当然也参考了下别人的设计内容啦)设计出了如附件中的界面【具体见附件的计算器的实现.png】
起主要代码设计如下【main.xml】:
2、实现了上面的那么多,计算器的实现.png图片基本搞定了,那么接下来就是要编写mainActivity.java的内容了,直接贴上源码
3、至此,一个简单的计算器程序就完成了,当然这个系统还是存在个小bug的,比如:如果数值过大,在显示框内内容无法很好的显示;当你输入的值或者计算后的值恰好等于-0.010101020202030303的时候得先clear一下才能继续使用,因为思想局限性,用这类思想暂未想到好的解决思路,后面随着学习深入的话会回过头来做些优化的(估计得更换实现思路)
4、或许其中还会有隐藏着其他bug暂未查出,如果您发现了,也欢迎指正;
1、关于页面设计部分是看着网上的图片然后根据所学知识及网络上解决思路(当然也参考了下别人的设计内容啦)设计出了如附件中的界面【具体见附件的计算器的实现.png】
起主要代码设计如下【main.xml】:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:stretchColumns="1" tools:context="${relativePackage}.${activityClass}" > <TableRow> <EditText android:id="@+id/result" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:drawable/editbox_background" android:layout_span="4" android:textSize="48sp" android:gravity="right|center_vertical" android:cursorVisible="false" android:inputType="none" android:lines="1" /> </TableRow> <TableRow> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" > <!--android:textSize表示的是该button内数字的的大小--> <Button android:id="@+id/num7" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:text="@string/num_7" android:layout_weight="1" /> <Button android:id="@+id/num8" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:text="@string/num_8" android:layout_weight="1" /> <Button android:id="@+id/num9" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:text="@string/num_9" android:layout_weight="1" /> <Button android:id="@+id/divide" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:text="@string/divide" android:layout_weight="1" /> </LinearLayout> </TableRow> <TableRow> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"> <Button android:id="@+id/num4" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:text="@string/num_4" android:layout_weight="1" /> <Button android:id="@+id/num5" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:text="@string/num_5" android:layout_weight="1" /> <Button android:id="@+id/num6" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:text="@string/num_6" android:layout_weight="1" /> <Button android:id="@+id/multiply" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:text="@string/multiply" android:layout_weight="1" /> </LinearLayout> </TableRow> <TableRow> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"> <Button android:id="@+id/num1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:text="@string/num_1" android:layout_weight="1" /> <Button android:id="@+id/num2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:text="@string/num_2" android:layout_weight="1" /> <Button android:id="@+id/num3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:text="@string/num_3" android:layout_weight="1" /> <Button android:id="@+id/subtract" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:text="@string/subtract" android:layout_weight="1" /> </LinearLayout> </TableRow> <TableRow> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"> <Button android:id="@+id/num0" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:text="@string/num_0" android:layout_weight="1" /> <Button android:id="@+id/point" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:text="@string/point" android:layout_weight="1" /> <Button android:id="@+id/add" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:text="@string/add" android:layout_weight="1" /> <Button android:id="@+id/equal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32sp" android:text="@string/equal" android:layout_weight="1" /> </LinearLayout> </TableRow> <TableRow> <Button android:id="@+id/clear" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="30sp" android:text="@string/clear" android:layout_span="4" android:gravity="center_vertical|center_horizontal"/> </TableRow> </TableLayout>
2、实现了上面的那么多,计算器的实现.png图片基本搞定了,那么接下来就是要编写mainActivity.java的内容了,直接贴上源码
public class MainActivity extends Activity { private StringBuffer btnsBuffer = new StringBuffer(""); private double num1 = -0.010101020202030303; private double num2 = -0.010101020202030303; private String operateString; Button[] btnArray = new Button[17]; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText resultText = (EditText) findViewById(R.id.result); btnArray[0] = (Button) findViewById(R.id.num0); btnArray[1] = (Button) findViewById(R.id.num1); btnArray[2] = (Button) findViewById(R.id.num2); btnArray[3] = (Button) findViewById(R.id.num3); btnArray[4] = (Button) findViewById(R.id.num4); btnArray[5] = (Button) findViewById(R.id.num5); btnArray[6] = (Button) findViewById(R.id.num6); btnArray[7] = (Button) findViewById(R.id.num7); btnArray[8] = (Button) findViewById(R.id.num8); btnArray[9] = (Button) findViewById(R.id.num9); btnArray[10] = (Button) findViewById(R.id.point); btnArray[11] = (Button) findViewById(R.id.add); btnArray[12] = (Button) findViewById(R.id.subtract); btnArray[13] = (Button) findViewById(R.id.multiply); btnArray[14] = (Button) findViewById(R.id.divide); btnArray[15] = (Button) findViewById(R.id.equal); btnArray[16] = (Button) findViewById(R.id.clear); OnClickListener listener = new OnClickListener() { @Override public void onClick(View v) { Button button = (Button) v; String btnString = button.getText().toString(); // 如果输入的是 +-*/ 那么就存到operateString中 if (("+").equals(btnString) || ("-").equals(btnString) || ("*").equals(btnString) || ("/").equals(btnString)) { // 如果buffer中内容不为空,那么就将值存入num1中,作为计算的第一个数 if (null != btnsBuffer && btnsBuffer.length() > 0) num1 = Double.parseDouble(btnsBuffer.toString()); // 如果num1为默认值的话,说明这是非正常输入【不输入数字,直接输入符号情况】 if (num1 != -0.010101020202030303) operateString = btnString; btnsBuffer.delete(0, btnsBuffer.length()); } else if (("=").equals(btnString)) { if (null != btnsBuffer && !("").equals(btnString)) num2 = Double.parseDouble(btnsBuffer.toString()); } else if (("clear").equals(btnString)) { num1 = -0.010101020202030303; num2 = -0.010101020202030303; operateString = null; btnsBuffer.delete(0, btnsBuffer.length()); resultText.setText(null); } else { btnsBuffer.append(btnString); resultText.setText(btnsBuffer); } if (-0.010101020202030303 != num1 && -0.010101020202030303 != num2 && ((null != operateString) && (!"" .equals(operateString)))) { Double result = 0.0d; if ("+".equals(operateString)) { result = num1 + num2; } else if ("-".equals(operateString)) { result = num1 - num2; } else if ("*".equals(operateString)) { result = num1 * num2; } else if ("/".equals(operateString)) { result = num1 / num2; } num1 = result; num2 = -0.010101020202030303; operateString = null; btnsBuffer.delete(0, btnsBuffer.length()); resultText.setText(result.toString()); } } }; for (Button button : btnArray) { button.setOnClickListener(listener); } } }
3、至此,一个简单的计算器程序就完成了,当然这个系统还是存在个小bug的,比如:如果数值过大,在显示框内内容无法很好的显示;当你输入的值或者计算后的值恰好等于-0.010101020202030303的时候得先clear一下才能继续使用,因为思想局限性,用这类思想暂未想到好的解决思路,后面随着学习深入的话会回过头来做些优化的(估计得更换实现思路)
4、或许其中还会有隐藏着其他bug暂未查出,如果您发现了,也欢迎指正;
相关推荐
通过完成特定的习题,学生能够发现自己在学习中的不足之处,并加以改进。 5. YFD高三语文团队:该名称可能属于某一教育机构或教学团队,专注于高三语文的教学与复习工作。资料中提到的暑期课后练笔题目,表明教学...
压缩包中的文件“第九讲课后练笔题目--材料作文的审题立意(上)2021最新.pdf”也更倾向于文学创作或教育领域的资料。因此,我无法依据这些信息生成相关的IT知识点。如果能提供与IT相关的压缩包文件或话题,我将非常...
在本资源"第二讲课后练笔题目--诗歌高频情感词速记大招2021最新.rar"中,我们可以深入探讨诗歌分析与情感词汇的重要性和应用。这份资料旨在帮助学习者掌握诗歌中常见的情感词汇,从而提升对诗词的理解和鉴赏能力。 ...
第七讲课后练笔题目--“六字诀”文言文翻译拿高分2021最新.rar
第五讲课后练笔题目--“快读论”突破论述类文本2021最新.pdf
针对这一需求,"第一讲课后练笔题目--‘六招’读懂古诗词2021最新.rar" 正是旨在为学生提供一种系统的、易于掌握的学习方法,让他们能够轻松地揭开古诗词的神秘面纱。 首先,"六招"所指的六个策略分别是诗词背景...
很抱歉,但根据您提供的信息,这个压缩包文件"第十讲课后练笔题目--材料作文的审题立意(下)2021最新.rar"以及包含的PDF文件似乎与IT行业知识无关。标题和描述指出这是一个关于写作训练或者教育资料,特别是针对...
在本资源"第八讲课后练笔题目--成语·词语零失分辨析技法2021最新.rar"中,我们可以深入探讨一个重要的语文学习主题:成语与词语的零失分辨析。这一技法对于提升汉语理解与运用能力至关重要,尤其是在写作、阅读理解...
至于提供的压缩包文件“第五讲课后练笔题目--“快读论”突破论述类文本2021最新.pdf”,很可能是包含了具体的练习题目和指导材料,可能包括各种类型的论述文,旨在帮助学习者实践和掌握快速阅读技巧。这些练习可能...
通过这份文档,学生可以学习到如何通过分析唐诗中所蕴含的高频情感词汇、意象和艺术手法,提高对诗歌主题和情感的理解。同时,通过练习题目,学生能够对诗歌鉴赏技巧进行实战演练,加深对高考诗歌部分的掌握。这是对...
根据给定的文件标题“练笔基本动作-突破训练-教程版--经典教程”以及描述“练笔基本动作-突破训练-教程版--经典教程”,我们可以推断出这份材料主要涉及的是关于练字技巧和方法的指导教程。尽管提供的具体内容仅包含...
通过《微纪元》的分析,学生可以学习如何从作品的构思、情节安排、语言运用等方面来鉴赏文学作品,并在自己的写作中尝试运用类似的技巧。 以上知识点是从文件中提炼出的相关概念和分析方法,旨在帮助学生提高文学类...
标题和描述提到的是关于"文言文实词秒记方法"的学习资料,通常这属于语文教育或者古汉语学习的范畴,而非信息技术。然而,我可以将这个主题关联到IT的一个方面——数字化学习资源的管理和利用。 在数字化时代,...
10. **在线教育平台**:对于"第四讲课后练笔题目"这样的教学资源,数字化平台提供了方便的分发和评估方式,教师可以更有效地跟踪学生的学习进度和理解情况。 然而,以上所述的IT应用更多是文学研究和教育的辅助手段...
成语和词语的零失分辨析技法是高考语文的重要考点之一,其主要考察学生对于成语和词语的准确理解和恰当运用。在给定的文件中,我们看到的是一份关于高考语文成语辨析的练习题。题目中包含了一段关于戏曲创新与传承的...
对于高考语文而言,古诗词阅读是考查的重点之一,学生需要掌握如何深入解读诗歌内容、理解作者的思想感情以及掌握诗歌的艺术风格。高考的古诗词题目通常要求考生不仅要能正确解读,还要能够在一定文字量的限制下,用...
最后,文章中提到的YFD高三语文团队暑期课后练笔题目1和题目2表明,这是一系列的作文练习中的一部分,目的是让学生通过不断的练习来提高作文水平。 综上所述,这份材料作文练习的知识点涵盖了材料作文的理解、审题...
YFD高三语文团队提供的课后练笔题目旨在帮助学生巩固和提升材料作文审题立意的能力。高三的学生正处在高考前的一轮复习阶段,这个阶段对提升写作水平至关重要。学生应该重视这一练习过程,通过不断的实践和老师的...
标题所指的“六字诀”指的是一种在高考语文文言文翻译中取得...由于提供的内容篇幅有限,无法完整提供一份详细的学习指南,但是根据上述知识点,学生可以有针对性地进行复习和练习,为高考文言文翻译部分做好充分准备。