




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、武漢輕工大學 數學與計算機學院 Android大作業 班 級: 軟件工程1404 學 號: 1405130039 姓 名: 李 濤 指導教師: 丁 月 華 目錄第1章 開發工具與環境11.1 Android平臺11.2 Java開發環境11.3 Eclipse11.4 Android程序基礎Android應用程序的構成2第2章 系統分析與設計42.1系統的可行性分析42.2 系統的需求分析42.3 系統的優勢42.4 系統的流程圖5第3章 系統詳細設計63.1 動作Activity63.2 布局文件XML63.3 Activity的詳細設計73.4 布局文件XML的詳細設計213.5 運行結果
2、24結論25第1章 開發工具與環境1.1 Android平臺1. 谷歌與開放手機聯盟合作開發了Android, 這個聯盟由包括中國移動、摩托羅拉、高通、宏達和T-Mobile在內的30多家技術和無線應用的領軍企業組成。2. Android是一個真正意義上的開放性移動設備綜合平臺。通過與運營商、設備制造商、開發商和其他有關各方結成深層次的合作伙伴關系,來建立標準化、開放式的移動電話軟件平臺,在移動產業內形成一個開放式的生態系統,這樣應用之間的通用性和互聯性將在最大程度上得到保持。3. 所有的Android應用之間是完全平等的。4. 所有的應用都運行在一個核心的引擎上面,這個核心引擎其實就是一個虛
3、擬機,它提供了一系列用于應用和硬件資源間進行通訊的API。撇開這個核心引擎,Android的所有其他的東西都是“應用”。5. Android打破了應用之間的界限,比如開發人員可以把Web上的數據與本地的聯系人,日歷,位置信息結合起來,為用戶創造全新的用戶體驗。1.2 Java開發環境Java技術包含了一個編程語言及一個平臺。Java編程語言具有很多特性,如面向對象、跨平臺、分布式、多線程、解釋性等等。Java編程語言起源于Sun公司的一個叫“Green”的項目,目的是開發嵌入式家用電器的分布式系統,使電氣更加智能化。1996年1月發布了JDK1.1版本,一門新語言自此走向世界。之后,1998年
4、12月發布了1.2版本,2002年2月發布1.4版本,2004年10月發布1.5版本(5.0),2006年12月發布1.6(6.0)版本,這是目前的最新版本。Java1.2版本是一個重要的版本,基于該版本,Sun將Java技術分為J2SE、J2ME、J2EE,其中J2SE為創建和運行Java程序提供了最基本的環境,J2ME與J2EE建立在J2SE的基礎上,J2ME為嵌入式應用(如運行在手機里的Java程序)提供開發與運行環境,J2EE為分布式的企業應用提供開發與運行環境。1.3 EclipseEclipse采用的技術是IBM公司開發的SWT,這是一種基于Java的窗口組件,類似Java本身提供
5、的AWT和Swing窗口組件:不過IBM聲稱SWT比其他Java窗口組件更有效率。Eclipse的用戶界面還使用了GUI中間層JFace,從而簡化了基于SWT的應用程序的構建。Eclipse的設計思想是:一切皆插件。Eclipse核心很小,其他所有功能都以插件的形式附加于Eclipse核心之上。Eclipse基于內核包括:圖形API(SWT/JFace),Java開發環境插件(JDT),插件開發環境(PDE)等。Eclipse的插件機制是輕型軟件組件化架構。在富客戶機平臺上,Eclipse使用插件來提供所有的附加功能,例如支持Java以外的其他語言。已有的分離的插件已經能夠支持C/C+(CDT
6、)、Perl、Ruby、Python、telnet和數據庫開發。插件架構能夠支持將任意的擴展加入到現有環境中,例如配置管理,而決不僅僅限于支持各種編程語言。1.4 Android程序基礎Android應用程序的構成 1.Activity 顧名思義,Activity就是活動。應用程序必須至少包含一個Activity。Activity提供了一個虛擬的用戶接口,每一個Activity都有一個默認的窗口可以用來顯示用戶界面,一般情況下,它是全屏的窗口。例如,影音播放軟件的每個用戶界面就是Activity。 2.Service Service與Activity的主要區別在于,Service是在后臺活動的
7、,它沒有用戶界面。典型的應用場景是,用戶選擇了一個播放列表開始播放后,離開了該用戶界面(Activity),如果仍然希望歌曲不會暫停,就可以用Service去調用播放器,而不是在Activity中調用播放器。 3.Intent 在Android中,每一個行為都可以抽象為一個Intent。可以簡單地把Intent理解為一個包含了數據的消息。Intent可以用于啟動一個Act-ivity或者Service,可以用于進程間的通信。事實上,應用程序的啟動也是通過Intent實現的。 4.Content providers Android平臺內置了一套SQLite數據儲存機制,并包含一系列管理SQLit
8、e Database的相關方法。在應用程序中,可以通過Content prov-iders訪問數據庫。每個Content provider都定義了一系列的方法用于訪問它對應的數據庫。應用程序在新建數據庫時也可以定義相應的Con-tent provider用于向其他應用程序共享數據。一般情況下,應用程序不直接調用Content provider定義的函數,而是通過ContentResolver間接調用。第2章 系統分析與設計2.1系統的可行性分析可行性研究是為了弄清楚系統開發的項目是不是可以實現和值得進行研究的過程,實際上是一次大大簡化系統分析和系統設計的過程,所以,進行可執行性的分析是非常必要
9、的,也是很重要的,經過最初的設計目標和進行的實時調查得出以下四點的可行性分析:(1)技術可行性:Eclipse + Android ADT的技術已經較為成熟,通過SUN公司(現被ORCEL公司收購)推出的跨平臺、動態的JAVA語言進行開發。(2)運行可行性:該系統需要Android虛擬機環境,Eclipse中安裝ADT,DDMS等Google Android相關插件。其運行環境已經相當穩定,它功能豐富,包括了完備的Android程序的編碼、調試、測試和發布功能,其中支持所有Android應用開發相關技術,包括SQLite,Skia,3D制作,Android XML,能夠很好的發布Android
10、的應用程序APK包。(3)法律可行性:因為是自主開發設計,所以不會構成侵權,在法律上是可行的。通過以上的可行性分析,將采用Eclipse+Android ADT + DDMS技術,運用JAVA語言進行系統的開發。2.2 系統的需求分析根據分析需求,這個系統必須實現以下的功能:(1) 實現簡單的數字計算功能。作為計算器,其核心就是加減乘除。(2) 能夠在手機里面以良好的界面。簡單計算器能夠給予用戶良好的人機互動界面。2.3 系統的優勢Android是以Linux為核心的手機操作平臺,作為一款開放式的操作系統,隨著Android的快速發展,如今已允許開發者使用多種編程語言來開發Android應用程
11、序,而不再是以前只能使用Java開發Android應用程序的單一局面,因而受到眾多開發者的歡迎,成為真正意義上的開放式操作系統。本次課程設計一個簡易的計算器。主要了解Activity的創建和Intent的使用。Intent不僅可以連接兩個Activity。而且可以傳遞數據。下面是整個程序的設計流程。2.4 系統的流程圖 本程序的流程是一個開機畫面,開機畫面之后就是計算機的主頁面了所有這個簡單程序的流程圖如圖2.1所示。第一個Activity第二個Activity加法乘法除法減法圖2.1 程序流程圖第3章 系統詳細設計3.1 動作Activity 參照程序的流程圖,設計Activity。分別為進
12、入頁面的Activity,和選擇運算方式的Activity。在這里應該注意的是每當創建一個新的class,就要繼承Activity如圖3.1所示。圖3.1 程序所需的Activity3.2 布局文件XML相應的,需要在res/layout文件夾中建立XML文件來對上述的十個Activity進行布局,如圖3.2所示。 圖3.2 3個XML布局文件總體上所需要的Activity和XML布局文件已經建立完畢,下面開始對進入計算器的Activity進行編寫,3.3 Activity的詳細設計動作模塊中CalculatorActivity.java的詳細代碼如下:package com.android.
13、xiong.gridlayoutTest;import java.math.BigDecimal;import java.util.regex.Pattern;import com.android.xiong.gridlayoutTest.R.id;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;im
14、port android.widget.EditText;import android.widget.GridLayout;import android.widget.TextView;public class MainActivity extends Activity private EditText print;private static String fistNumber = "0"/ 第一次輸入的值private static String secondNumber = "0"/ 第二次輸入的值private static String num
15、 = "0"/ 顯示的結果private static int flg = 0;/ 結果累加一次public Counts take = null;private int btidTake = R.id.txtdivide, R.id.txtx, R.id.txtmin,R.id.txttakesum ;private Button buttonTake = new ButtonbtidTake.length;private int btidNum = R.id.txt0, R.id.txt1, R.id.txt2, R.id.txt3,R.id.txt4, R.id.tx
16、t5, R.id.txt6, R.id.txt7, R.id.txt8, R.id.txt9,R.id.txtspl ;private Button buttons = new ButtonbtidNum.length;private int btcl = R.id.chars, R.id.charx, R.id.txtb, R.id.txtv ;private Button btcls = new Buttonbtcl.length;private GridLayout gly;Overrideprotected void onCreate(Bundle savedInstanceState
17、) super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);gly=(GridLayout)findViewById(R.id.gly);print = (EditText) findViewById(R.id.print);print.setText("0");print.setEnabled(false);GetNumber get = new GetNumber();for (int i = 0; i < btidNum.length; i+) buttonsi = (B
18、utton) findViewById(btidNumi);buttonsi.setOnClickListener(get);Compute cm = new Compute();for (int i = 0; i < btidTake.length; i+) buttonTakei = (Button) findViewById(btidTakei);buttonTakei.setOnClickListener(cm);Button eq = (Button) findViewById(R.id.txteq);eq.setOnClickListener(new OnClickListe
19、ner() Overridepublic void onClick(View v) if (flg = 0) secondNumber = print.getText().toString();if (take = Counts.DIVIDE && secondNumber.equals("0") print.setText("0不能為被除數"); else num = take.Values(fistNumber, secondNumber);fistNumber = num;secondNumber = "0"pr
20、int.setText(num);flg = 1;gly.setBackgroundResource(R.drawable.jz););Button cleargo = (Button) findViewById(R.id.cleargo);cleargo.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubif (num.length() > 1) num = num.substring(0, num.length()
21、- 1); else num = "0"print.setText(num););Button clear = (Button) findViewById(R.id.clear);clear.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubnum = "0"fistNumber = secondNumber = num;print.setText(num);flg = 0;);for
22、(int i = 0; i < btcl.length; i+) btclsi = (Button) findViewById(btcli);btclsi.setOnClickListener(new OnTake();/ 給 EditText賦值class GetNumber implements OnClickListener Overridepublic void onClick(View v) / TODO Auto-generated method stubif (flg = 1)num = "0"if (num.equals("0")
23、print.setText("");num = v.getId() = R.id.txtspl ? "0" : ""String txt = (Button) v).getText().toString();boolean s = Pattern.matches("-*(d+).?(d)*", num + txt);num = s ? (num + txt) : num;gly.setBackgroundResource(R.drawable.js);print.setText(num);/ 根據條件計算class
24、 Compute implements OnClickListener Overridepublic void onClick(View arg0) fistNumber = print.getText().toString();/ TODO Auto-generated method stubswitch (arg0.getId() case R.id.txttakesum:take = Counts.ADD;break;case R.id.txtmin:take = Counts.MINUS;break;case R.id.txtx:take = Counts.MULTIPLY;break
25、;case R.id.txtdivide:take = Counts.DIVIDE;break;num = "0"flg = 0;gly.setBackgroundResource(R.drawable.js);class OnTake implements OnClickListener Overridepublic void onClick(View v) / TODO Auto-generated method stubswitch (v.getId() case R.id.chars:num = "-" + num;break;case R.id
26、.charx:if(!num.equals("0")num = BigDecimal.valueOf(1).divide(new BigDecimal(num),12,BigDecimal.ROUND_UP).stripTrailingZeros().toString();break;case R.id.txtb:num = new BigDecimal(num).divide(BigDecimal.valueOf(100),12,BigDecimal.ROUND_UP).stripTrailingZeros().toString();break;case R.id.txt
27、v:Double numss = Math.sqrt(new BigDecimal(num).doubleValue();int stratindex=numss.toString().contains(".")?numss.toString().indexOf("."):0;num = numss.toString().length()>13?numss.toString().substring(0, 12+stratindex):numss.toString();print.setText(num);flg=0;num = "0&qu
28、ot;Overridepublic boolean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;3.4 布局文件XML的詳細設計布局文件main.xml編寫布局代碼如下:<GridLayout xmlns:android=" xmlns:tools=" android:layout_width=&q
29、uot;match_parent" android:layout_height="wrap_content" android:layout_marginTop="10px" android:columnCount="5" android:rowCount="6" android:background="drawable/js" android:id="+id/gly" tools:context=".MainActivity" > <
30、EditText android:id="+id/print" android:layout_width="match_parent" android:layout_height="60px" android:layout_columnSpan="5" android:layout_marginLeft="2px" android:layout_marginRight="2px" android:layout_row="0" android:textCol
31、or="#ff0000" android:textSize="55px" android:gravity="right" android:background="#eee"/> <Button android:id="+id/cleargo" android:layout_width="wrap_content" android:layout_height="120px" android:layout_column="0"
32、android:layout_gravity="top" android:layout_row="1" android:text="-" /> <Button android:id="+id/clear" android:layout_width="wrap_content" android:layout_height="120px" android:layout_column="3" android:layout_columnSpan=&qu
33、ot;2" android:layout_row="1" android:layout_gravity="fill_horizontal" android:text="清屏" /> <Button android:id="+id/chars" android:layout_width="wrap_content" android:layout_height="120px" android:layout_column="1" andro
34、id:layout_row="1" android:text="-/+" /> <Button android:id="+id/charx" android:layout_width="wrap_content" android:layout_height="120px" android:layout_column="2" android:layout_row="1" android:text="1/x" /> <
35、;Button android:id="+id/txt7" android:layout_width="wrap_content" android:layout_height="120px" android:layout_column="0" android:layout_row="2" android:text="7" /> <Button android:id="+id/txt8" android:layout_width="wr
36、ap_content" android:layout_height="120px" android:layout_column="1" android:layout_row="2" android:text="8" /> <Button android:id="+id/txt9" android:layout_width="wrap_content" android:layout_height="120px" android:layo
37、ut_column="2" android:layout_row="2" android:text="9" /> <Button android:id="+id/txtdivide" android:layout_width="wrap_content" android:layout_height="120px" android:layout_column="3" android:layout_row="2" android
38、:text="÷" /> <Button android:id="+id/txtb" android:layout_width="wrap_content" android:layout_height="120px" android:layout_column="4" android:layout_row="2" android:text="%" /> <Button android:id="+id/txt4&q
39、uot; android:layout_width="wrap_content" android:layout_height="120px" android:layout_column="0" android:layout_row="3" android:text="4" /> <Button android:id="+id/txt5" android:layout_width="wrap_content" android:layout_hei
40、ght="120px" android:layout_column="1" android:layout_row="3" android:text="5" /> <Button android:id="+id/txt6" android:layout_width="wrap_content" android:layout_height="120px" android:layout_column="2" android:lay
41、out_row="3" android:text="6" /> <Button android:id="+id/txtx" android:layout_width="wrap_content" android:layout_height="120px" android:layout_column="3" android:layout_row="3" android:text="X" /> <Button and
42、roid:id="+id/txtv" android:layout_width="wrap_content" android:layout_height="120px" android:layout_column="4" android:layout_row="3" android:text="" /> <Button android:id="+id/txt1" android:layout_width="wrap_content&q
43、uot; android:layout_height="120px" android:layout_column="0" android:layout_row="4" android:text="1" /> <Button android:id="+id/txt2" android:layout_width="wrap_content" android:layout_height="120px" android:layout_column=&q
44、uot;1" android:layout_row="4" android:text="2" /> <Button android:id="+id/txt3" android:layout_width="wrap_content" android:layout_height="120px" android:layout_column="2" android:layout_row="4" android:text="3" /> <Button android:id="+id/txtmin" android:layout_width="wrap_content" android:layout_height="120px" android:layo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文化賦能培訓課件
- 市場業務知識培訓
- 文藝匯演活動方案
- 消化道護理教學查房
- 西瓜釀白酒技術與管理
- 秘書培訓課件
- 個人對個人借貸合同格式
- 精神科病房巡視護理
- 小學數學五 分數的意義9 分數的大小教案
- 皮革制品行業的創業機會與投資風險考核試卷
- 2024年浙江長征職業技術學院單招綜合素質考試題庫附答案
- 2025屆安徽省池州市普通高中高三下學期教學質量統一監測物理試卷(含答案)
- 庫房管理工作職責與規范化
- Unit 3Keep Fit.教案2024-2025學年人教版(2024)七年級英語下冊
- 專題06文學文化常識中考語文一輪復習
- 第16課《有為有不為》公開課一等獎創新教學設計
- 小米創業思考(商業思考)
- 保障公路、公路附屬設施質量和安全的技術評價報告
- 2022年10月自考06779應用寫作學試題及答案
- 竣工結算審計服務投標方案
- 2009研究生數值分析試題和答案-石家莊鐵道大學(word文檔良心出品)
評論
0/150
提交評論