版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 操作系統(tǒng) 課程設(shè)計(jì)報(bào)告書</p><p> 題 目 安卓計(jì)算器的開發(fā)與設(shè)計(jì) </p><p> 系 別 計(jì)算機(jī)工程系 </p><p> 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) </p><p> 班 級(jí)
2、 </p><p> 姓 名 </p><p> 指導(dǎo)教師 </p><p> 下達(dá)日期 2013年 6 月 13 日</p><p> 設(shè)計(jì)時(shí)間自2013 年 7 月 1 日 至 2013 年 7 月 4 日</p><p><b> 目
3、錄</b></p><p><b> 摘 要3</b></p><p><b> 一、設(shè)計(jì)概述4</b></p><p><b> 1.設(shè)計(jì)背景4</b></p><p><b> 2.設(shè)計(jì)目的4</b></p>
4、<p><b> 3.設(shè)計(jì)要求4</b></p><p><b> 4.開發(fā)環(huán)境6</b></p><p><b> 二、設(shè)計(jì)細(xì)節(jié)7</b></p><p><b> 1.整體思想7</b></p><p><b>
5、 2.容錯(cuò)處理7</b></p><p> 3.數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)8</p><p> 4.用戶界面的實(shí)現(xiàn)8</p><p><b> 5.文件結(jié)構(gòu)9</b></p><p> 6.界面組件設(shè)計(jì)10</p><p> (1) XML文件生成11</p>
6、<p> (2)用戶界面在程序代碼實(shí)現(xiàn)11</p><p> (3)用戶自定義頁面組件11</p><p><b> 7.程序流程12</b></p><p> 三、詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)13</p><p> 1.開發(fā)環(huán)境搭建13</p><p> (1)安裝Androi
7、d 開發(fā)插件13</p><p> (2)配置android sdk15</p><p> 2.圖形界面設(shè)計(jì)17</p><p> 3.程序功能實(shí)現(xiàn)22</p><p><b> 四、測(cè)試分析28</b></p><p> 1.模擬器創(chuàng)建28</p><p
8、><b> 2.計(jì)算功能29</b></p><p><b> 3.應(yīng)用卸載30</b></p><p> 3.應(yīng)用導(dǎo)出為.APK文件30</p><p><b> 小結(jié)31</b></p><p><b> 致 謝32</b>&
9、lt;/p><p><b> 摘 要</b></p><p> Android成功地成為了最具有潛力的新一代的手機(jī)應(yīng)用軟件。正如了標(biāo)準(zhǔn)化PC和Macintosh平臺(tái)上創(chuàng)建的桌面和服務(wù)器軟件市場(chǎng),在Android上,通過提供一個(gè)標(biāo)準(zhǔn)的手機(jī)應(yīng)用環(huán)境,將增加移動(dòng)應(yīng)用程序和應(yīng)用開發(fā)商的利潤。</p><p> Android給開發(fā)人員提供了一種獨(dú)特
10、的,創(chuàng)造性的應(yīng)用開發(fā)方式,并且應(yīng)用到客戶手機(jī)中?,F(xiàn)在出現(xiàn)了成千上萬的Android手機(jī)用戶,正在尋找最優(yōu)秀的手機(jī)應(yīng)用程序。然后把這些優(yōu)秀的應(yīng)用程序應(yīng)用到手機(jī)中。</p><p> 本程序是一個(gè)基于現(xiàn)有手機(jī)計(jì)算器開發(fā)的在觸屏手機(jī)上運(yùn)行的簡單計(jì)算器,使用戶可以更加簡單便捷的使用計(jì)算器的功能,在此次程序設(shè)計(jì)中所做的工作主要是設(shè)計(jì)程序的圖形化操作界面,以及利用編程語言實(shí)現(xiàn)整個(gè)程序的計(jì)算功能,使其能夠正確地運(yùn)行。<
11、/p><p> 關(guān)鍵詞:應(yīng)用程序,操作系統(tǒng),Android,應(yīng)用開發(fā),計(jì)算器</p><p><b> 一、設(shè)計(jì)概述</b></p><p><b> 1.設(shè)計(jì)背景</b></p><p> 隨著社會(huì)的發(fā)展,經(jīng)濟(jì)水平的提高,手機(jī)越來越普及。同時(shí)伴隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的發(fā)展,手機(jī)的功能也變得越來越豐
12、富。從原來只具有簡單通信功能的非智能手機(jī)到現(xiàn)在具有手機(jī)操作系統(tǒng),除通話功能以外,還集上網(wǎng)、聊天、炒股、收發(fā)郵件等功能于一身的智能手機(jī)系統(tǒng)。</p><p> Java語言是當(dāng)今流行的網(wǎng)絡(luò)編程語言,它具有面向?qū)ο?、跨平臺(tái)、分布應(yīng)用等特點(diǎn)。面向?qū)ο蟮拈_發(fā)方法是當(dāng)今世界最流行的開發(fā)方法,它不僅具有更貼近自然的語義,而且有利于軟件的維護(hù)和繼承。</p><p><b> 2.設(shè)計(jì)目的
13、</b></p><p> 通過此次課程設(shè)計(jì),鞏固所學(xué)操作系統(tǒng)與Java語言的基本知識(shí),增進(jìn)Java語言編輯基本功,掌握J(rèn)DK、Editplus、Eclipse、JCreator等開發(fā)工具的運(yùn)用,拓寬常用類庫的應(yīng)用。使學(xué)生通過該教學(xué)環(huán)節(jié)與手段,把所學(xué)課程及相關(guān)知識(shí)加以融會(huì)貫通,全面掌握J(rèn)ava語言的編程思想及面向?qū)ο蟪绦蛟O(shè)計(jì)的方法,為今后從事實(shí)際工作打下堅(jiān)實(shí)的基礎(chǔ)。</p><p
14、><b> 3.設(shè)計(jì)要求</b></p><p> 根據(jù)用戶的實(shí)際要求,程序應(yīng)實(shí)現(xiàn)以下功能:計(jì)算器界面友好,方便使用,具有基本的加、減、乘、除功能,能夠判斷用戶輸入運(yùn)算數(shù)是否正確,支持小數(shù)運(yùn)算,具有退格功能,能夠刪除最后一個(gè)輸入,具有清除功能,即“C”。</p><p> 整個(gè)程序基于Android技術(shù)開發(fā),除總體模塊外主要分為輸入模塊、顯示模塊以及計(jì)算模
15、塊這三大部分。在整個(gè)系統(tǒng)中總體模塊控制系統(tǒng)的生命周期,輸入模塊部分負(fù)責(zé)讀取用戶輸入的數(shù)據(jù),顯示模塊部分負(fù)責(zé)顯示用戶之前輸入的數(shù)據(jù)以及顯示最終的計(jì)算結(jié)果,計(jì)算機(jī)模塊部分負(fù)責(zé)進(jìn)行數(shù)據(jù)的運(yùn)算以及一些其他的功能。下面較為詳細(xì)的做了說明。</p><p> 具體的說,總體模塊的作用主要是生成應(yīng)用程序的主類,控制應(yīng)用程序的生命周期。輸入模塊主要描述了計(jì)算器鍵盤以及鍵盤的監(jiān)聽即主要負(fù)責(zé)讀取用戶的鍵盤輸入以及響應(yīng)觸屏的按鍵,需
16、要監(jiān)聽手機(jī)動(dòng)作以及用指針事件處理方法處理觸屏的單擊動(dòng)作。同時(shí)提供了較為直觀的鍵盤圖形用戶界面。</p><p> 顯示模塊描述了計(jì)算器的顯示區(qū),即該區(qū)域用于顯示用戶輸入的數(shù)據(jù)以及最終的計(jì)算結(jié)果,同時(shí)負(fù)責(zé)顯示一些其他的信息。</p><p> 計(jì)算模塊則主要描述了計(jì)算器的整體,實(shí)現(xiàn)了計(jì)算器的界面,負(fù)責(zé)計(jì)算用戶輸入數(shù)據(jù),包括加、減、乘、除等各種功能,記憶數(shù)據(jù)的相關(guān)功能,退格以及清零的功能。
17、</p><p> 系統(tǒng)除了總體模塊以外主要由三大模塊來組成,即輸入模塊、顯示模塊和計(jì)算模塊,如下圖所示:</p><p><b> 三大模塊</b></p><p> 輸入模塊主要描述了計(jì)算器鍵盤以及鍵盤的監(jiān)聽即主要負(fù)責(zé)讀取用戶的鍵盤輸入以及響應(yīng)觸屏的按鍵,需要監(jiān)聽手機(jī)按鍵動(dòng)作以及用指針事件處理方法處理觸屏的單擊動(dòng)作(以松開按鍵為準(zhǔn))。
18、同時(shí)提供了較為直觀的鍵盤圖形用戶界面。顯示模塊描述了計(jì)算器的顯示區(qū),即該區(qū)域用于顯示用戶輸入的數(shù)據(jù)以及最終的計(jì)算結(jié)果,同時(shí)還負(fù)責(zé)顯示一些其他的信息。計(jì)算模塊則主要描述了計(jì)算器的整體,實(shí)現(xiàn)了計(jì)算器的界面,負(fù)責(zé)計(jì)算用戶輸入數(shù)據(jù),包括加、減、乘、除、等各種計(jì)算功能,記憶數(shù)據(jù)的相關(guān)功能,退格以及清零的功能。</p><p><b> 4.開發(fā)環(huán)境</b></p><p>
19、 Android是Google于2007年11月5日宣布的基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng)的名稱,該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號(hào)稱是首個(gè)為移動(dòng)終端打造的真正開放和完整的移動(dòng)軟件??梢园阉唵卫斫獬?Linux上套了一個(gè) JAVA 的殼。 </p><p> Android 的平臺(tái)基本上是免費(fèi)的,雖然有部份原生鏈接庫會(huì)要求費(fèi)用,但大部份是免權(quán)利金。 Android 的程序可以采用 JAV
20、A 開發(fā), 因?yàn)樗奶摂M機(jī)(Virtual Machine) Dalvik,只是它將 JAVA 的 bytecode 轉(zhuǎn)成自己的格式,回避掉需要付給 SUN 有關(guān) JAVA 的授權(quán)費(fèi)用。因此,Android 開發(fā)環(huán)境是需要 JDK 的。</p><p> Eclipse 是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclip
21、se 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(Java Development Kit,JDK)。雖然大多數(shù)用戶很樂于將 Eclipse 當(dāng)作 Java 集成開發(fā)環(huán)境(IDE)來使用,但 Eclipse 的目標(biāo)卻不僅限于此。Eclipse 還包括插件開發(fā)環(huán)境(Plug-in Development Environment,PDE),這個(gè)組件主要針對(duì)希望擴(kuò)展 Eclipse 的軟件開發(fā)人員,因?yàn)樗试S他們構(gòu)建與 Eclipse 環(huán)境
22、無縫集成的工具。由于 Eclipse 中的每樣?xùn)|西都是插件,對(duì)于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場(chǎng)所。這種平等和一致性并不僅限于 Java 開發(fā)工具。盡管 Eclipse 是使用 Java 語言開發(fā)的,但它的用途并不限于 Java 語言;例如,支持諸如 C/C++ 和 COBOL 等編程語言的插件已經(jīng)可用,或預(yù)計(jì)將會(huì)推出。Ecl</p><p&
23、gt;<b> 二、設(shè)計(jì)細(xì)節(jié)</b></p><p><b> 1.整體思想</b></p><p> 在整個(gè)過程中,首先應(yīng)該對(duì)輸入進(jìn)行容錯(cuò)處理,這樣有利于提高用戶體驗(yàn)。對(duì)于用戶的按鍵輸入,需要及時(shí)地顯示在第一個(gè)EditView中。在EditView中顯示的是一個(gè)字符串,用戶每輸入一個(gè)操作,字符串發(fā)生相應(yīng)改變,然后在EditView中反映出
24、來。</p><p> 接著便是對(duì)第一個(gè)EditView中的字符串進(jìn)行處理。通過程序設(shè)計(jì),可以將字符串中的數(shù)據(jù)和操作符分別存在兩個(gè)棧中。</p><p> 然后需要設(shè)計(jì)算法處理兩個(gè)棧,通過算法得出字符串表達(dá)式的運(yùn)算結(jié)果,再將運(yùn)算結(jié)果反映在第二個(gè)EditView中的字符串中。</p><p><b> 2.容錯(cuò)處理</b></p>
25、;<p> 用戶在輸入過程中,肯定會(huì)存在一定的錯(cuò)誤,程序設(shè)計(jì)過程中需要對(duì)應(yīng)用程序進(jìn)行容錯(cuò)處理。容錯(cuò)設(shè)計(jì)比如:在輸入過程中小數(shù)的話只能有一個(gè)小數(shù)點(diǎn),操作符不能連續(xù)輸入,整數(shù)數(shù)據(jù)的開頭不能出現(xiàn)0等等。</p><p> 在設(shè)計(jì)的應(yīng)用程序中,設(shè)計(jì)了幾個(gè)標(biāo)記flag,每按下一個(gè)按鍵,若是按鍵是合理的話,都會(huì)引起標(biāo)記flag的改變。標(biāo)記flag將會(huì)限制接下來的輸入是否有效,無效則不做任何處理。</p
26、><p> flag0=0:處理0的輸出,為1則表示數(shù)字的開頭有一個(gè)0。當(dāng)flag0=1時(shí),不能再輸入0,當(dāng)再輸入數(shù)字或者操作符時(shí),flag0重新置0。</p><p> flag1=0:處理0的輸出,每個(gè)數(shù)字開頭的標(biāo)志 數(shù)值為0表示為數(shù)字開頭。當(dāng)flag1=0時(shí),如果先輸入0再輸入1的話,前面的0自動(dòng)消除。還有當(dāng)flag1=0時(shí),不能輸入小數(shù)點(diǎn)等等。</p><p&g
27、t; flag2=0:處理小數(shù)點(diǎn),一個(gè)數(shù)字最多只能有一個(gè)小數(shù)點(diǎn)。當(dāng)數(shù)字中有小數(shù)點(diǎn)時(shí),flag2變?yōu)?,此后不能再輸入小數(shù)點(diǎn),輸入操作符等操作后,flag2又變?yōu)?。</p><p> flag3=0:處理運(yùn)算符的輸出。很明顯不能連續(xù)輸入操作符,用此標(biāo)志,來限制連續(xù)操作符的輸入。</p><p> flag4=0:處理ON/OFF問題。當(dāng)OFF之后,flag變?yōu)?,只有當(dāng)flag等于1
28、時(shí),ON按鈕才能進(jìn)行操作。</p><p> flag5=0:處理等號(hào)問題。很明顯操作符之后不能按下等號(hào)按鈕,等號(hào)按鈕按下之后要在第二個(gè)EditView中顯示結(jié)果、將顯示輸出的EditView清空。</p><p><b> 3.數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)</b></p><p> 在程序設(shè)計(jì)過程中,需要設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)來存儲(chǔ)數(shù)字、操作符和容錯(cuò)標(biāo)記,在本
29、程序中使用了棧,對(duì)這些數(shù)據(jù)進(jìn)行了存儲(chǔ)。</p><p><b> 4.用戶界面的實(shí)現(xiàn)</b></p><p> 每一個(gè)應(yīng)用程序,我們都要設(shè)計(jì)一個(gè)圖標(biāo),可以說圖標(biāo)是應(yīng)用程序的名片,好的圖標(biāo)能夠很快地吸引用戶。</p><p> 本人在網(wǎng)上尋找了一個(gè)圖標(biāo)作為計(jì)算器應(yīng)用的圖標(biāo),如圖所示。</p><p> 由于不同的a
30、ndroid手機(jī)有著不同的分辨率,將不同分辨率的圖標(biāo)圖片放置在相應(yīng)位置,drawable-hdpi中放置分辨率最高的圖標(biāo),drawable-mdpi中放置分辨率中等的圖標(biāo),drawable-ldpi中放置分辨率最低的圖標(biāo),實(shí)現(xiàn)效果如下。</p><p><b> 5.文件結(jié)構(gòu)</b></p><p> 在Eclipse建立計(jì)算器的Android項(xiàng)目工程,計(jì)算器的工
31、程文件名為Calculator。然后創(chuàng)建存放源文件、資源文件、頁面文件等各個(gè)文件夾。整個(gè)工程項(xiàng)目的目錄結(jié)構(gòu)如圖所示。</p><p> 其中src和gen文件夾下是整個(gè)項(xiàng)目的源文件,所有的java代碼都在這兩個(gè)文件夾下。src文件夾存放的是本文中開發(fā)的所有java文件。這java文件是整個(gè)項(xiàng)目的代碼。gen下面的R.java文件為Eclipse自動(dòng)生成的系統(tǒng)文件,此文件中包含了本文開發(fā)過程中所吸引的資源的標(biāo)示。
32、</p><p> res是存放整個(gè)系統(tǒng)中所用到的所有資源,其中, Drawble文件夾存放的是本文開發(fā)過程中所用到的所有圖片。Drawble包括drawable-hdpi,drawable-ldpi,drawable-mdpi三個(gè)文件夾,這是Adroid2.1版本的改進(jìn),是為了適應(yīng)Android手機(jī)系統(tǒng)不同的屏幕大小而設(shè)計(jì)的。用高分辨率的屏幕時(shí),頁面所需要的圖片在drawable-hdpi中,用地分辨率的屏幕
33、時(shí),則采用drawable-ldpi文件夾下的資源圖片;而普通分辨率時(shí)采用drawable-mdpi文件夾下的圖片資源。因此這種設(shè)計(jì)具有很好的版本適應(yīng)性及兼容性,大大提高了用戶體驗(yàn)。</p><p> AndroidManifest.xml是每個(gè)Android程序中所必需的,它位于Android工程的根目錄,描述了package中的全局?jǐn)?shù)據(jù),包括package中的組件,各自的實(shí)現(xiàn)類,各種能被處理的類和啟動(dòng)位置等
34、。Manifest文件的主要功能是聲明應(yīng)用程序的組件。例如,一個(gè)activitiy必須要有一個(gè)<Activity>標(biāo)志對(duì)應(yīng),無論它是供應(yīng)外部使用還是只用于自己的package中。如果一個(gè)Activity沒有對(duì)應(yīng)的標(biāo)記,他將不能被運(yùn)行。</p><p> Layout文件夾下面存放了本文所用到的所有用戶界面的XML布局文件。這些用戶界面資源文件定義后系統(tǒng)會(huì)在gen文件夾下的R.java文件中生成對(duì)應(yīng)的
35、資源引用符號(hào)。當(dāng)系統(tǒng)調(diào)用生成用戶界面時(shí),只需要引用對(duì)應(yīng)的引用符號(hào)即可。</p><p> Values文件夾下存放的是本系統(tǒng)所用到的文字及數(shù)字資源,這些資源以鍵值得形式存放。如<string name=”save_toast”>The file has been saved<sring>。這些文字或數(shù)值資源對(duì)放在,<resources></resources>為開
36、頭結(jié)尾的標(biāo)簽對(duì)xml文件中。Values-zh-rCN文件夾存放的是資源的英文形式,當(dāng)程序所運(yùn)行的系統(tǒng)平臺(tái)為英文系統(tǒng)時(shí),調(diào)用values文件夾下資源;當(dāng)程序所運(yùn)行的平臺(tái)為中文時(shí),調(diào)用Values-zh-rCN文件夾下資源,顯示中文方式。</p><p><b> 6.界面組件設(shè)計(jì)</b></p><p> 基于Android的手機(jī)計(jì)算器,是以用戶為中心的。因此構(gòu)建
37、良好的用戶界面是很重要的。Android構(gòu)建用戶界面有以下三種方式:</p><p><b> XML文件生成</b></p><p> 根據(jù)MVC原則,UI應(yīng)該與程序邏輯相分離,因此,在XML中定義UI結(jié)構(gòu)是強(qiáng)烈推薦的。常用的方式是用圖形化的方式來編寫布局Layout,這些布局保存在XML文件中,然后編譯成資源,在程序中Activity通過setContentV
38、iew()方法來加載,然后通過findViewByld()方式來獲得每一個(gè)界面組件的引用。實(shí)現(xiàn)過程及步驟。在layout文件夾下定義自己的XML頁面。</p><p> 用XML實(shí)現(xiàn)用戶界面具有以下優(yōu)點(diǎn):</p><p> 1)XML文件結(jié)構(gòu)清晰,易于擴(kuò)展,系統(tǒng)可擴(kuò)展性好。</p><p> 2) 用戶界面與業(yè)務(wù)邏輯完全分離,降低了系統(tǒng)界面與業(yè)務(wù)邏輯的耦合性。
39、</p><p> 3)XML文件簡單易懂,可維護(hù)性好。</p><p> 缺點(diǎn)是:XML文件構(gòu)建的界面已在配置文件中實(shí)現(xiàn),無法在系統(tǒng)運(yùn)行時(shí)動(dòng)態(tài)更新頁面。</p><p> 用戶界面在程序代碼實(shí)現(xiàn)</p><p> 對(duì)于一些開發(fā)者而言,喜歡最直觀的方式,既代碼中動(dòng)態(tài)生成的方式。這種方式和XML定義是完全等價(jià)的。在程序中代碼構(gòu)建的方式還
40、可以在系統(tǒng)運(yùn)行時(shí)動(dòng)態(tài)更改頁面布局及效果</p><p><b> 用戶自定義頁面組件</b></p><p> 由于Android應(yīng)用程序中的用戶界面都是View及View的各個(gè)子類如Button,TextView等子View及各種容器ViewGroup如LinearLayout、RealtiveLayout等ViewGroup構(gòu)成。因此要實(shí)現(xiàn)自己定制化的界面及頁
41、組件只需要繼承View類。自定義組件的步驟是:</p><p> a)創(chuàng)建類,并繼承Android.view.View。</p><p> b) 重寫構(gòu)造函數(shù),wtNumber()、wtOperater()等方法。</p><p> c) 注冊(cè)構(gòu)件到頁面布局文件中。</p><p><b> 7.程序流程</b>
42、</p><p><b> 輸入模塊</b></p><p><b> 計(jì)算模塊</b></p><p><b> 顯示模塊</b></p><p><b> 三、詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</b></p><p><b>
43、 1.開發(fā)環(huán)境搭建</b></p><p> (1)安裝Android 開發(fā)插件</p><p> 打開Eclipse, 在菜單欄上選擇 help->Install New SoftWare</p><p> 點(diǎn)擊 Add按鈕,出現(xiàn)如下界面</p><p> 輸入網(wǎng)址
44、: https://dl-ssl.google.com/android/eclipse/</p><p> 名稱: Android,點(diǎn)擊確定。</p><p> 點(diǎn)擊 Next->Next按鈕</p><p> 選擇 I accept the terms of the license agreements,點(diǎn)擊Ne
45、xt,進(jìn)入安裝插件界面。</p><p> 安裝完成后,重啟Eclipse。</p><p> (2)配置android sdk</p><p> 點(diǎn)擊菜單window->preferences, 選擇Android SDK解壓后的目錄</p><p> 升級(jí)SDK版本,選擇菜單 window->Android sdk a
46、nd avd manager 出現(xiàn)如下界面</p><p> 選擇update all按鈕,進(jìn)入安裝</p><p><b> 安裝完成如下:</b></p><p><b> 2.圖形界面設(shè)計(jì)</b></p><p> 圖形化設(shè)計(jì)框架代碼:</p><p>
47、;<b> MAIN.XML</b></p><p> <?xml version="1.0" encoding="utf-8"?></p><p> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&
48、quot;</p><p> android:layout_width="fill_parent"</p><p> android:layout_height="fill_parent"</p><p> android:background="@drawable/background"</p
49、><p> android:gravity="center"</p><p> android:orientation="vertical" ></p><p> <LinearLayout android:layout_width="fill_parent" </p><
50、p> android:layout_height="wrap_content" </p><p> android:gravity="center"</p><p> android:orientation="vertical"></p><p><b> <EditTe
51、xt</b></p><p> android:id="@+id/etResult"</p><p> android:layout_width="280px"</p><p> android:layout_height="wrap_content"</p><p&g
52、t; android:gravity="right"</p><p> android:singleLine="true"</p><p> android:textSize="20sp" /></p><p> </LinearLayout></p><p&g
53、t; <!-- 加plus 減subtract 乘multiply 除divide --></p><p> <LinearLayout android:layout_width="fill_parent" </p><p> android:layout_height="wrap_content"
54、 </p><p> android:orientation="horizontal"</p><p> android:gravity="center"></p><p> <Button android:id="@+id/btMultiply"</p><p>
55、 android:text="*"</p><p> android:layout_width="70px"</p><p> android:layout_height="70px"</p><p> android:textSize="20sp"</p><
56、;p> android:gravity="center"</p><p> android:layout_gravity="center_horizontal"/></p><p> <Button android:id="@+id/btDivide"</p><p> andro
57、id:text="/"</p><p> android:layout_width="70px"</p><p> android:layout_height="70px"</p><p> android:textSize="20sp"</p><p>
58、 android:gravity="center"</p><p> android:layout_gravity="center_horizontal"/></p><p> <Button android:id="@+id/btPlus"</p><p> android:text=&
59、quot;+"</p><p> android:layout_width="70px"</p><p> android:layout_height="70px"</p><p> android:textSize="20sp"</p><p> android:
60、gravity="center"</p><p> android:layout_gravity="center_horizontal"/></p><p> <Button android:id="@+id/btSubtract"</p><p> android:text="
61、-"</p><p> android:layout_width="70px"</p><p> android:layout_height="70px"</p><p> android:textSize="20sp"</p><p> android:gravi
62、ty="center"</p><p> android:layout_gravity="center_horizontal"/></p><p> </LinearLayout></p><p> <!-- 7 8 9 delete --></p><p> &l
63、t;LinearLayout android:layout_width="fill_parent" </p><p> android:layout_height="wrap_content" </p><p> android:orientation="horizontal"</p><p> an
64、droid:gravity="center"></p><p> <Button android:id="@+id/bt7"</p><p> android:text="7"</p><p> android:layout_width="70px"</p>
65、<p> android:layout_height="70px"</p><p> android:textSize="20sp"</p><p> android:gravity="center"</p><p> android:layout_gravity="cent
66、er_horizontal"/></p><p> <Button android:id="@+id/bt8"</p><p> android:text="8"</p><p> android:layout_width="70px"</p><p>
67、 android:layout_height="70px"</p><p> android:textSize="20sp"</p><p> android:gravity="center"</p><p> android:layout_gravity="center_horizonta
68、l"/></p><p> <Button android:id="@+id/bt9"</p><p> android:text="9"</p><p> android:layout_width="70px"</p><p> android:lay
69、out_height="70px"</p><p> android:textSize="20sp"</p><p> android:gravity="center"</p><p> android:layout_gravity="center_horizontal"/>
70、</p><p><b> <Button</b></p><p> android:id="@+id/btDelete"</p><p> android:layout_width="70px"</p><p> android:layout_height=&quo
71、t;70px"</p><p> android:layout_gravity="center_horizontal"</p><p> android:gravity="center"</p><p> android:text="←"</p><p> andr
72、oid:textSize="20sp" /></p><p> </LinearLayout></p><p> <!-- 4 5 6 ce(清空) --></p><p> <LinearLayout android:layout_width="fill_parent" </p
73、><p> android:layout_height="wrap_content" </p><p> android:orientation="horizontal"</p><p> android:gravity="center" ></p><p> <Bu
74、tton android:id="@+id/bt4"</p><p> android:text="4"</p><p> android:layout_width="70px"</p><p> android:layout_height="70px"</p>&l
75、t;p> android:textSize="20sp"</p><p> android:gravity="center"</p><p> android:layout_gravity="center_horizontal"/></p><p> <Button android
76、:id="@+id/bt5"</p><p> android:text="5"</p><p> android:layout_width="70px"</p><p> android:layout_height="70px"</p><p> and
77、roid:textSize="20sp"</p><p> android:gravity="center"</p><p> android:layout_gravity="center_horizontal"/></p><p> <Button android:id="@+
78、id/bt6"</p><p> android:text="6"</p><p> android:layout_width="70px"</p><p> android:layout_height="70px"</p><p> android:textSiz
79、e="20sp"</p><p> android:gravity="center"</p><p> android:layout_gravity="center_horizontal"/></p><p> <Button android:id="@+id/btCe"
80、;</p><p> android:text="C"</p><p> android:layout_width="70px"</p><p> android:layout_height="70px"</p><p> android:textSize="20s
81、p"</p><p> android:gravity="center"</p><p> android:layout_gravity="center_horizontal"/></p><p> </LinearLayout> </p><p> <!--
82、1 2 3 以及 . 0 = --></p><p> <LinearLayout android:layout_width="fill_parent" </p><p> android:layout_height="wrap_content" </p><p> android:gravity=&q
83、uot;center"</p><p> android:layout_gravity="center_horizontal"</p><p> android:orientation="horizontal"></p><p> <LinearLayout android:layout_width
84、="wrap_content" </p><p> android:layout_height="wrap_content" </p><p> android:orientation="vertical"></p><p> <LinearLayout android:layout_wi
85、dth="wrap_content" </p><p> android:layout_height="wrap_content" </p><p> android:orientation="horizontal"></p><p><b> <Button</b>
86、</p><p> android:id="@+id/bt1"</p><p> android:layout_width="70px"</p><p> android:layout_height="70px"</p><p> android:layout_gravity
87、="center_horizontal"</p><p> android:gravity="center"</p><p> android:text="1"</p><p> android:textSize="20sp" /></p><p>
88、 <Button android:id="@+id/bt2"</p><p> android:text="2"</p><p> android:layout_width="70px"</p><p> android:layout_height="70px"</p
89、><p> android:textSize="20sp"</p><p> android:gravity="center"</p><p> android:layout_gravity="center_horizontal"/></p><p> <Button
90、 android:id="@+id/bt3"</p><p> android:text="3"</p><p> android:layout_width="70px"</p><p> android:layout_height="70px"</p><p&
91、gt; android:textSize="20sp"</p><p> android:gravity="center"</p><p> android:layout_gravity="center_horizontal"/></p><p> </LinearLayout>&
92、lt;/p><p> <LinearLayout android:layout_width="wrap_content" </p><p> android:layout_height="wrap_content" </p><p> android:orientation="horizontal"
93、></p><p> <Button android:id="@+id/btPoint"</p><p> android:text="."</p><p> android:layout_width="70px"</p><p> android:layout_
94、height="70px"</p><p> android:textSize="20sp"</p><p> android:gravity="center"</p><p> android:layout_gravity="center_horizontal"/><
95、/p><p> <Button android:id="@+id/bt0"</p><p> android:text="0"</p><p> android:layout_width="140px"</p><p> android:layout_height=&quo
96、t;70px"</p><p> android:textSize="20sp"</p><p> android:gravity="center"</p><p> android:layout_gravity="center_horizontal"/></p><
97、;p> </LinearLayout></p><p> </LinearLayout></p><p> <LinearLayout </p><p> android:layout_width="wrap_content"</p><p> android:layout_h
98、eight="wrap_content"</p><p> android:orientation="vertical"></p><p> <Button android:id="@+id/btDeng"</p><p> android:text="="</p
99、><p> android:layout_width="70px"</p><p> android:layout_height="140px"</p><p> android:textSize="20sp"</p><p> android:gravity="cen
100、ter"</p><p> android:layout_gravity="center_horizontal"/></p><p> </LinearLayout></p><p> </LinearLayout></p><p> </LinearLayout>
101、;</p><p><b> 3.程序功能實(shí)現(xiàn)</b></p><p> CalculatorActivity.java</p><p> package com.he;</p><p> import android.app.Activity;</p><p> import andr
102、oid.os.Bundle;</p><p> import android.text.InputType;</p><p> import android.view.View;</p><p> import android.view.View.OnClickListener;</p><p> import android.wid
103、get.Button;</p><p> import android.widget.EditText;</p><p> import android.widget.Toast;</p><p> public class CalculatorActivity extends Activity {</p><p> //加plus
104、 減subtract 乘multiply 除divide</p><p> private EditText etResult;</p><p> private Button btPlus;</p><p> private Button btSub;</p><p> private Button btM
105、ultiply;</p><p> private Button btDivide;</p><p> private Button btDelete;</p><p> private Button btCe;</p><p> private Button btPoint;</p><p> privat
106、e Button btDeng;</p><p> private Button bt0;</p><p> private Button bt1;</p><p> private Button bt2;</p><p> private Button bt3;</p><p> private Butto
107、n bt4;</p><p> private Button bt5;</p><p> private Button bt6;</p><p> private Button bt7;</p><p> private Button bt8;</p><p> private Button bt9;<
108、/p><p> /** Called when the activity is first created. */</p><p><b> @Override</b></p><p> public void onCreate(Bundle savedInstanceState) {</p><p> super.
109、onCreate(savedInstanceState);</p><p> setContentView(R.layout.main);</p><p> etResult=(EditText)findViewById(R.id.etResult);</p><p> btPlus=(Button)findViewById(R.id.btPlus);<
110、/p><p> btSub=(Button)findViewById(R.id.btSubtract);</p><p> btMultiply=(Button)findViewById(R.id.btMultiply);</p><p> btDivide=(Button)findViewById(R.id.btDivide);</p><p
111、> btDelete=(Button)findViewById(R.id.btDelete);</p><p> btDeng=(Button)findViewById(R.id.btDeng);</p><p> btPoint=(Button)findViewById(R.id.btPoint);</p><p> btCe=(Button)fin
112、dViewById(R.id.btCe);</p><p> bt0=(Button)findViewById(R.id.bt0);</p><p> bt1=(Button)findViewById(R.id.bt1);</p><p> bt2=(Button)findViewById(R.id.bt2);</p><p> bt
113、3=(Button)findViewById(R.id.bt3);</p><p> bt4=(Button)findViewById(R.id.bt4);</p><p> bt5=(Button)findViewById(R.id.bt5);</p><p> bt6=(Button)findViewById(R.id.bt6);</p>&
114、lt;p> bt7=(Button)findViewById(R.id.bt7);</p><p> bt8=(Button)findViewById(R.id.bt8);</p><p> bt9=(Button)findViewById(R.id.bt9);</p><p> etResult.setInputType(InputType.TYPE
115、_NULL); </p><p><b> /** .按鈕*/</b></p><p> btPoint.setOnClickListener(new OnClickListener() {</p><p> public void onClick(View arg0) {</p><p> String str
116、1=etResult.getText().toString();</p><p> if(str1.equals("")){</p><p> etResult.setText("");</p><p><b> }else{</b></p><p> etResult.s
117、etText(str1+btPoint.getText().toString());</p><p><b> }</b></p><p><b> }</b></p><p><b> });</b></p><p> /** 0---------9的數(shù)字按鈕*/&l
118、t;/p><p> bt0.setOnClickListener(new OnClickListener() {</p><p> public void onClick(View arg0) {</p><p> String str1=etResult.getText().toString();</p><p> if(str1.eq
119、uals("")){</p><p> etResult.setText("");</p><p><b> }else{</b></p><p> etResult.setText(str1+bt0.getText().toString());</p><p><b&
120、gt; }</b></p><p><b> }</b></p><p><b> });</b></p><p> bt1.setOnClickListener(new OnClickListener() {</p><p> public void onClick(View
121、 arg0) {</p><p> String str1=etResult.getText().toString();</p><p> etResult.setText(str1+bt1.getText().toString());</p><p><b> }</b></p><p><b> }
122、);</b></p><p> bt2.setOnClickListener(new OnClickListener() {</p><p> public void onClick(View arg0) {</p><p> String str1=etResult.getText().toString();</p><p&g
123、t; etResult.setText(str1+bt2.getText().toString());</p><p><b> }</b></p><p><b> });</b></p><p> bt3.setOnClickListener(new OnClickListener() {</p>
124、<p> public void onClick(View arg0) {</p><p> String str1=etResult.getText().toString();</p><p> etResult.setText(str1+bt3.getText().toString());</p><p><b> }</b&
125、gt;</p><p><b> });</b></p><p> bt4.setOnClickListener(new OnClickListener() {</p><p> public void onClick(View arg0) {</p><p> String str1=etResult.getT
126、ext().toString();</p><p> etResult.setText(str1+bt4.getText().toString());</p><p><b> }</b></p><p><b> });</b></p><p> bt5.setOnClickListene
127、r(new OnClickListener() {</p><p> public void onClick(View arg0) {</p><p> String str1=etResult.getText().toString();</p><p> etResult.setText(str1+bt5.getText().toString());<
128、/p><p><b> }</b></p><p><b> });</b></p><p> bt6.setOnClickListener(new OnClickListener() {</p><p> public void onClick(View arg0) {</p>
129、<p> String str1=etResult.getText().toString();</p><p> etResult.setText(str1+bt6.getText().toString());</p><p><b> }</b></p><p><b> });</b></p&g
130、t;<p> bt7.setOnClickListener(new OnClickListener() {</p><p> public void onClick(View arg0) {</p><p> String str1=etResult.getText().toString();</p><p> etResult.setText
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- android開發(fā)計(jì)算器課程設(shè)計(jì)
- 安卓開發(fā)課程設(shè)計(jì)報(bào)告
- java計(jì)算器課程設(shè)計(jì)-- 計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)
- 課程設(shè)計(jì)-計(jì)算器
- 《c#計(jì)算器程序設(shè)計(jì)》課程設(shè)計(jì)--計(jì)算器的開發(fā)與應(yīng)用
- 計(jì)算器java課程設(shè)計(jì)--簡單計(jì)算器
- 計(jì)算器課程設(shè)計(jì)---計(jì)算器仿真程序設(shè)計(jì)
- 課程設(shè)計(jì)報(bào)告---計(jì)算器設(shè)計(jì)
- java課程設(shè)計(jì)—計(jì)算器
- java課程設(shè)計(jì)計(jì)算器
- java計(jì)算器課程設(shè)計(jì)
- 課程設(shè)計(jì)--簡單的計(jì)算器設(shè)計(jì)
- 課程設(shè)計(jì)--簡單計(jì)算器的設(shè)計(jì)
- 微機(jī)課程設(shè)計(jì)--計(jì)算器
- 簡易計(jì)算器課程設(shè)計(jì)
- java課程設(shè)計(jì)---計(jì)算器
- 簡單計(jì)算器課程設(shè)計(jì)
- 課程設(shè)計(jì)計(jì)算器模擬
- 計(jì)算器課程設(shè)計(jì)報(bào)告
- 簡易計(jì)算器課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論