版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 操作系統(tǒng) 課程設(shè)計報告書</p><p> 題 目 安卓計算器的開發(fā)與設(shè)計 </p><p> 系 別 計算機(jī)工程系 </p><p> 專 業(yè) 計算機(jī)科學(xué)與技術(shù) </p><p> 班 級
2、 </p><p> 姓 名 </p><p> 指導(dǎo)教師 </p><p> 下達(dá)日期 2013年 6 月 13 日</p><p> 設(shè)計時間自2013 年 7 月 1 日 至 2013 年 7 月 4 日</p><p><b> 目
3、錄</b></p><p><b> 摘 要3</b></p><p><b> 一、設(shè)計概述4</b></p><p><b> 1.設(shè)計背景4</b></p><p><b> 2.設(shè)計目的4</b></p>
4、<p><b> 3.設(shè)計要求4</b></p><p><b> 4.開發(fā)環(huán)境6</b></p><p><b> 二、設(shè)計細(xì)節(jié)7</b></p><p><b> 1.整體思想7</b></p><p><b>
5、 2.容錯處理7</b></p><p> 3.數(shù)據(jù)結(jié)構(gòu)的設(shè)計8</p><p> 4.用戶界面的實(shí)現(xiàn)8</p><p><b> 5.文件結(jié)構(gòu)9</b></p><p> 6.界面組件設(shè)計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è)計與實(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è)計17</p><p> 3.程序功能實(shí)現(xiàn)22</p><p><b> 四、測試分析28</b></p><p> 1.模擬器創(chuàng)建28</p><p
8、><b> 2.計算功能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平臺上創(chuàng)建的桌面和服務(wù)器軟件市場,在Android上,通過提供一個標(biāo)準(zhǔn)的手機(jī)應(yīng)用環(huán)境,將增加移動應(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> 本程序是一個基于現(xiàn)有手機(jī)計算器開發(fā)的在觸屏手機(jī)上運(yùn)行的簡單計算器,使用戶可以更加簡單便捷的使用計算器的功能,在此次程序設(shè)計中所做的工作主要是設(shè)計程序的圖形化操作界面,以及利用編程語言實(shí)現(xiàn)整個程序的計算功能,使其能夠正確地運(yùn)行。<
11、/p><p> 關(guān)鍵詞:應(yīng)用程序,操作系統(tǒng),Android,應(yīng)用開發(fā),計算器</p><p><b> 一、設(shè)計概述</b></p><p><b> 1.設(shè)計背景</b></p><p> 隨著社會的發(fā)展,經(jīng)濟(jì)水平的提高,手機(jī)越來越普及。同時伴隨著移動互聯(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ū)ο?、跨平臺、分布應(yīng)用等特點(diǎn)。面向?qū)ο蟮拈_發(fā)方法是當(dāng)今世界最流行的開發(fā)方法,它不僅具有更貼近自然的語義,而且有利于軟件的維護(hù)和繼承。</p><p><b> 2.設(shè)計目的
13、</b></p><p> 通過此次課程設(shè)計,鞏固所學(xué)操作系統(tǒng)與Java語言的基本知識,增進(jìn)Java語言編輯基本功,掌握J(rèn)DK、Editplus、Eclipse、JCreator等開發(fā)工具的運(yùn)用,拓寬常用類庫的應(yīng)用。使學(xué)生通過該教學(xué)環(huán)節(jié)與手段,把所學(xué)課程及相關(guān)知識加以融會貫通,全面掌握J(rèn)ava語言的編程思想及面向?qū)ο蟪绦蛟O(shè)計的方法,為今后從事實(shí)際工作打下堅實(shí)的基礎(chǔ)。</p><p
14、><b> 3.設(shè)計要求</b></p><p> 根據(jù)用戶的實(shí)際要求,程序應(yīng)實(shí)現(xiàn)以下功能:計算器界面友好,方便使用,具有基本的加、減、乘、除功能,能夠判斷用戶輸入運(yùn)算數(shù)是否正確,支持小數(shù)運(yùn)算,具有退格功能,能夠刪除最后一個輸入,具有清除功能,即“C”。</p><p> 整個程序基于Android技術(shù)開發(fā),除總體模塊外主要分為輸入模塊、顯示模塊以及計算模
15、塊這三大部分。在整個系統(tǒng)中總體模塊控制系統(tǒng)的生命周期,輸入模塊部分負(fù)責(zé)讀取用戶輸入的數(shù)據(jù),顯示模塊部分負(fù)責(zé)顯示用戶之前輸入的數(shù)據(jù)以及顯示最終的計算結(jié)果,計算機(jī)模塊部分負(fù)責(zé)進(jìn)行數(shù)據(jù)的運(yùn)算以及一些其他的功能。下面較為詳細(xì)的做了說明。</p><p> 具體的說,總體模塊的作用主要是生成應(yīng)用程序的主類,控制應(yīng)用程序的生命周期。輸入模塊主要描述了計算器鍵盤以及鍵盤的監(jiān)聽即主要負(fù)責(zé)讀取用戶的鍵盤輸入以及響應(yīng)觸屏的按鍵,需
16、要監(jiān)聽手機(jī)動作以及用指針事件處理方法處理觸屏的單擊動作。同時提供了較為直觀的鍵盤圖形用戶界面。</p><p> 顯示模塊描述了計算器的顯示區(qū),即該區(qū)域用于顯示用戶輸入的數(shù)據(jù)以及最終的計算結(jié)果,同時負(fù)責(zé)顯示一些其他的信息。</p><p> 計算模塊則主要描述了計算器的整體,實(shí)現(xiàn)了計算器的界面,負(fù)責(zé)計算用戶輸入數(shù)據(jù),包括加、減、乘、除等各種功能,記憶數(shù)據(jù)的相關(guān)功能,退格以及清零的功能。
17、</p><p> 系統(tǒng)除了總體模塊以外主要由三大模塊來組成,即輸入模塊、顯示模塊和計算模塊,如下圖所示:</p><p><b> 三大模塊</b></p><p> 輸入模塊主要描述了計算器鍵盤以及鍵盤的監(jiān)聽即主要負(fù)責(zé)讀取用戶的鍵盤輸入以及響應(yīng)觸屏的按鍵,需要監(jiān)聽手機(jī)按鍵動作以及用指針事件處理方法處理觸屏的單擊動作(以松開按鍵為準(zhǔn))。
18、同時提供了較為直觀的鍵盤圖形用戶界面。顯示模塊描述了計算器的顯示區(qū),即該區(qū)域用于顯示用戶輸入的數(shù)據(jù)以及最終的計算結(jié)果,同時還負(fù)責(zé)顯示一些其他的信息。計算模塊則主要描述了計算器的整體,實(shí)現(xiàn)了計算器的界面,負(fù)責(zé)計算用戶輸入數(shù)據(jù),包括加、減、乘、除、等各種計算功能,記憶數(shù)據(jù)的相關(guān)功能,退格以及清零的功能。</p><p><b> 4.開發(fā)環(huán)境</b></p><p>
19、 Android是Google于2007年11月5日宣布的基于Linux平臺的開源手機(jī)操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件??梢园阉唵卫斫獬?Linux上套了一個 JAVA 的殼。 </p><p> Android 的平臺基本上是免費(fèi)的,雖然有部份原生鏈接庫會要求費(fèi)用,但大部份是免權(quán)利金。 Android 的程序可以采用 JAV
20、A 開發(fā), 因為它的虛擬機(jī)(Virtual Machine) Dalvik,只是它將 JAVA 的 bytecode 轉(zhuǎn)成自己的格式,回避掉需要付給 SUN 有關(guān) JAVA 的授權(quán)費(fèi)用。因此,Android 開發(fā)環(huán)境是需要 JDK 的。</p><p> Eclipse 是一個開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclip
21、se 附帶了一個標(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),這個組件主要針對希望擴(kuò)展 Eclipse 的軟件開發(fā)人員,因為它允許他們構(gòu)建與 Eclipse 環(huán)境
22、無縫集成的工具。由于 Eclipse 中的每樣?xùn)|西都是插件,對于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。這種平等和一致性并不僅限于 Java 開發(fā)工具。盡管 Eclipse 是使用 Java 語言開發(fā)的,但它的用途并不限于 Java 語言;例如,支持諸如 C/C++ 和 COBOL 等編程語言的插件已經(jīng)可用,或預(yù)計將會推出。Ecl</p><p&
23、gt;<b> 二、設(shè)計細(xì)節(jié)</b></p><p><b> 1.整體思想</b></p><p> 在整個過程中,首先應(yīng)該對輸入進(jìn)行容錯處理,這樣有利于提高用戶體驗。對于用戶的按鍵輸入,需要及時地顯示在第一個EditView中。在EditView中顯示的是一個字符串,用戶每輸入一個操作,字符串發(fā)生相應(yīng)改變,然后在EditView中反映出
24、來。</p><p> 接著便是對第一個EditView中的字符串進(jìn)行處理。通過程序設(shè)計,可以將字符串中的數(shù)據(jù)和操作符分別存在兩個棧中。</p><p> 然后需要設(shè)計算法處理兩個棧,通過算法得出字符串表達(dá)式的運(yùn)算結(jié)果,再將運(yùn)算結(jié)果反映在第二個EditView中的字符串中。</p><p><b> 2.容錯處理</b></p>
25、;<p> 用戶在輸入過程中,肯定會存在一定的錯誤,程序設(shè)計過程中需要對應(yīng)用程序進(jìn)行容錯處理。容錯設(shè)計比如:在輸入過程中小數(shù)的話只能有一個小數(shù)點(diǎn),操作符不能連續(xù)輸入,整數(shù)數(shù)據(jù)的開頭不能出現(xiàn)0等等。</p><p> 在設(shè)計的應(yīng)用程序中,設(shè)計了幾個標(biāo)記flag,每按下一個按鍵,若是按鍵是合理的話,都會引起標(biāo)記flag的改變。標(biāo)記flag將會限制接下來的輸入是否有效,無效則不做任何處理。</p
26、><p> flag0=0:處理0的輸出,為1則表示數(shù)字的開頭有一個0。當(dāng)flag0=1時,不能再輸入0,當(dāng)再輸入數(shù)字或者操作符時,flag0重新置0。</p><p> flag1=0:處理0的輸出,每個數(shù)字開頭的標(biāo)志 數(shù)值為0表示為數(shù)字開頭。當(dāng)flag1=0時,如果先輸入0再輸入1的話,前面的0自動消除。還有當(dāng)flag1=0時,不能輸入小數(shù)點(diǎn)等等。</p><p&g
27、t; flag2=0:處理小數(shù)點(diǎn),一個數(shù)字最多只能有一個小數(shù)點(diǎn)。當(dāng)數(shù)字中有小數(shù)點(diǎn)時,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、時,ON按鈕才能進(jìn)行操作。</p><p> flag5=0:處理等號問題。很明顯操作符之后不能按下等號按鈕,等號按鈕按下之后要在第二個EditView中顯示結(jié)果、將顯示輸出的EditView清空。</p><p><b> 3.數(shù)據(jù)結(jié)構(gòu)的設(shè)計</b></p><p> 在程序設(shè)計過程中,需要設(shè)計數(shù)據(jù)結(jié)構(gòu)來存儲數(shù)字、操作符和容錯標(biāo)記,在本
29、程序中使用了棧,對這些數(shù)據(jù)進(jìn)行了存儲。</p><p><b> 4.用戶界面的實(shí)現(xiàn)</b></p><p> 每一個應(yīng)用程序,我們都要設(shè)計一個圖標(biāo),可以說圖標(biāo)是應(yīng)用程序的名片,好的圖標(biāo)能夠很快地吸引用戶。</p><p> 本人在網(wǎng)上尋找了一個圖標(biāo)作為計算器應(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建立計算器的Android項目工程,計算器的工
31、程文件名為Calculator。然后創(chuàng)建存放源文件、資源文件、頁面文件等各個文件夾。整個工程項目的目錄結(jié)構(gòu)如圖所示。</p><p> 其中src和gen文件夾下是整個項目的源文件,所有的java代碼都在這兩個文件夾下。src文件夾存放的是本文中開發(fā)的所有java文件。這java文件是整個項目的代碼。gen下面的R.java文件為Eclipse自動生成的系統(tǒng)文件,此文件中包含了本文開發(fā)過程中所吸引的資源的標(biāo)示。
32、</p><p> res是存放整個系統(tǒng)中所用到的所有資源,其中, Drawble文件夾存放的是本文開發(fā)過程中所用到的所有圖片。Drawble包括drawable-hdpi,drawable-ldpi,drawable-mdpi三個文件夾,這是Adroid2.1版本的改進(jìn),是為了適應(yīng)Android手機(jī)系統(tǒng)不同的屏幕大小而設(shè)計的。用高分辨率的屏幕時,頁面所需要的圖片在drawable-hdpi中,用地分辨率的屏幕
33、時,則采用drawable-ldpi文件夾下的資源圖片;而普通分辨率時采用drawable-mdpi文件夾下的圖片資源。因此這種設(shè)計具有很好的版本適應(yīng)性及兼容性,大大提高了用戶體驗。</p><p> AndroidManifest.xml是每個Android程序中所必需的,它位于Android工程的根目錄,描述了package中的全局?jǐn)?shù)據(jù),包括package中的組件,各自的實(shí)現(xiàn)類,各種能被處理的類和啟動位置等
34、。Manifest文件的主要功能是聲明應(yīng)用程序的組件。例如,一個activitiy必須要有一個<Activity>標(biāo)志對應(yīng),無論它是供應(yīng)外部使用還是只用于自己的package中。如果一個Activity沒有對應(yīng)的標(biāo)記,他將不能被運(yùn)行。</p><p> Layout文件夾下面存放了本文所用到的所有用戶界面的XML布局文件。這些用戶界面資源文件定義后系統(tǒng)會在gen文件夾下的R.java文件中生成對應(yīng)的
35、資源引用符號。當(dāng)系統(tǒng)調(diào)用生成用戶界面時,只需要引用對應(yīng)的引用符號即可。</p><p> Values文件夾下存放的是本系統(tǒng)所用到的文字及數(shù)字資源,這些資源以鍵值得形式存放。如<string name=”save_toast”>The file has been saved<sring>。這些文字或數(shù)值資源對放在,<resources></resources>為開
36、頭結(jié)尾的標(biāo)簽對xml文件中。Values-zh-rCN文件夾存放的是資源的英文形式,當(dāng)程序所運(yùn)行的系統(tǒng)平臺為英文系統(tǒng)時,調(diào)用values文件夾下資源;當(dāng)程序所運(yùn)行的平臺為中文時,調(diào)用Values-zh-rCN文件夾下資源,顯示中文方式。</p><p><b> 6.界面組件設(shè)計</b></p><p> 基于Android的手機(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()方式來獲得每一個界面組件的引用。實(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)行時動態(tài)更新頁面。</p><p> 用戶界面在程序代碼實(shí)現(xiàn)</p><p> 對于一些開發(fā)者而言,喜歡最直觀的方式,既代碼中動態(tài)生成的方式。這種方式和XML定義是完全等價的。在程序中代碼構(gòu)建的方式還
40、可以在系統(tǒng)運(yùn)行時動態(tài)更改頁面布局及效果</p><p><b> 用戶自定義頁面組件</b></p><p> 由于Android應(yīng)用程序中的用戶界面都是View及View的各個子類如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) 注冊構(gòu)件到頁面布局文件中。</p><p><b> 7.程序流程</b>
42、</p><p><b> 輸入模塊</b></p><p><b> 計算模塊</b></p><p><b> 顯示模塊</b></p><p><b> 三、詳細(xì)設(shè)計與實(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> 升級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è)計</b></p><p> 圖形化設(shè)計框架代碼:</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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- android開發(fā)計算器課程設(shè)計
- 安卓開發(fā)課程設(shè)計報告
- java計算器課程設(shè)計-- 計算器的設(shè)計與實(shí)現(xiàn)
- 課程設(shè)計-計算器
- 《c#計算器程序設(shè)計》課程設(shè)計--計算器的開發(fā)與應(yīng)用
- 計算器java課程設(shè)計--簡單計算器
- 計算器課程設(shè)計---計算器仿真程序設(shè)計
- 課程設(shè)計報告---計算器設(shè)計
- java課程設(shè)計—計算器
- java課程設(shè)計計算器
- java計算器課程設(shè)計
- 課程設(shè)計--簡單的計算器設(shè)計
- 課程設(shè)計--簡單計算器的設(shè)計
- 微機(jī)課程設(shè)計--計算器
- 簡易計算器課程設(shè)計
- java課程設(shè)計---計算器
- 簡單計算器課程設(shè)計
- 課程設(shè)計計算器模擬
- 計算器課程設(shè)計報告
- 簡易計算器課程設(shè)計
評論
0/150
提交評論