




已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
摘要從沒有比現(xiàn)在更好的時機,能通過為Android編寫程序,將我們的創(chuàng)意帶人生活中。安卓App Store給了我們巨大的機會,程序的開發(fā)也從未像如今這樣簡單和廣泛。你不僅能夠擁有數(shù)百萬的潛在客戶還能擁有尖端的開發(fā)工具和硬件。2008年Google推出了一款名為Android的開源智能手機操作系統(tǒng),它采用Linux內(nèi)核,開放手機聯(lián)盟(OHA)成員可以任意使用和修改SDK包,系統(tǒng)的開源性使其具有良好的拓展性。而很少受到早期手持設(shè)備的硬件和軟件限制。本設(shè)計在對Android開發(fā)有初步了解的情況下,設(shè)計一個有代表性的Android商業(yè)App,通過對商業(yè)實例的學習,了解真實項目的系統(tǒng)構(gòu)架、引擎設(shè)計,了解聲音、視頻、圖片處理等相關(guān)的編程技術(shù)要點、以便在實際的游戲項目開發(fā)中借鑒和綜合應(yīng)用這些知識。關(guān)鍵字:Android;APP;目錄1 開發(fā)工具與環(huán)境11.1 下載并安裝eclipse11.2 下載并安裝jdk11.3開發(fā)環(huán)境簡介11.4開發(fā)環(huán)境搭建21.4.2安裝Eclipse41.4.3 安裝Android SDK41.4.4 ADT安裝創(chuàng)建AVD42 系統(tǒng)的設(shè)計與分析52.1 Android系統(tǒng)的概述52.1.1應(yīng)用層52.1.2應(yīng)用程序框架52.1.3系統(tǒng)運行庫62.1.4 Linux內(nèi)核72.3 日歷流程圖73 系統(tǒng)詳細設(shè)計83.1 日歷其實是由3個預制的數(shù)據(jù)集組成83.2 視圖的生成83.3當所示日期發(fā)生選擇變更是的視圖更新103.4 啟動和運行134 運行結(jié)果144.1 系統(tǒng)啟動144.2 進入日歷144.4 退出應(yīng)用155 結(jié)論16參考文獻171 開發(fā)工具與環(huán)境1.1 下載并安裝eclipseEclipse 版本有要求:The Eclipse Classic version is recommended. Otherwise, a Java or RCP version of Eclipse is recommended.1.下載eclipse只需登錄到http://downlands/即可下載最新版本的eclipse安裝程序。2.將下載好的eclipse解壓到D:eclipse for android。3.雙擊D:eclipse for android目錄下的eclipse.exe運行eclipse即可2。1.2 下載并安裝jdk首先登錄到SUN官方網(wǎng)站/javase/downloads下載最新的JDK安裝程序。然后雙擊剛下載的JDK安裝程序jdk-7u21-windows-i586,根據(jù)提示將JDK安裝到默認目錄。右鍵單擊我的電腦,依次選擇屬性/高級/環(huán)境變量,在系統(tǒng)變量中新建一個名為JAVA_HOME,值為“C:Program FilesJavajdk1.7.0_21”的環(huán)境變量。再打開Path環(huán)境變量,在最后加上“C:Program FilesJavajdk1.7.0_21bin;”,單擊“確定”按鈕即可。1.3開發(fā)環(huán)境簡介JDK(Java Development Kit)是Sun Microsystems針對Java開發(fā)員的產(chǎn)品。自從Java誕生以來,JDK已經(jīng)成為最廣泛的Java SDK。JDK是整個Java的核心內(nèi)容,包括了Java運行環(huán)境、Java工具和Java基礎(chǔ)類庫三部分。從Sun的JDK1.5開始,提供了一些非常使用的功能,其版本也不斷更新,運行效率得到了非常大的提高。Eclipse是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組建構(gòu)建開發(fā)環(huán)境。Eclipse附帶了一個標準的插件集,包括Java開發(fā)工具(Java Development Kit,JDK)。Android SDK即軟件開發(fā)工具包(software development kit)。被軟件開發(fā)工程師用于為特定的軟件包、軟件架構(gòu)、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件工具的集合。因此Android SDK是Android專屬的開發(fā)工具包。其授權(quán)協(xié)議為Apache,開發(fā)語言為Java、需要Android操作系統(tǒng)的支持。1.4開發(fā)環(huán)境搭建下載安裝Java開發(fā)包(JDK)。選擇“windows offline installation,multi-language”,根據(jù)屏幕提示完成安裝。打開計算機點右鍵屬性高級系統(tǒng)設(shè)置環(huán)境變量,在系統(tǒng)變量中添加。圖1.1環(huán)境變量新建JavaHome:C:Program FilesJavajdk1.6.0_10,如圖1.2。圖1.2JavaHome新建CLASSPATH:.;%JavaHome%libdt.jar;%JavaHome%libtools.jar;,如圖1.3。圖1.3 CLASSPATH編輯Path,在變量值前添加:%JavaHome%bin;,如圖1.4。圖1.4 Path在CMD窗體中輸入java version,如果屏幕出現(xiàn)如圖1.5一樣的代碼信息,說明JDK安裝成功了。圖1.5 CMD窗體1.4.2安裝Eclipse選擇標有eclipseIDEforjavadevelopers的文件進行安裝。進入解壓后的目錄,就可以看到一個名為“eclipse.exe”的可執(zhí)行文件,雙擊此文件直接運行,eclipse能自動找到用戶先期安裝的JDK路徑1.4.3 安裝Android SDK將下載的android-sdk壓縮包解壓為文件放于自選位置。在Eclipse中選擇WindowsPreferencesAndroidBrowse找到解壓文件ApplyOK。打開環(huán)境變量,編輯Path,在變量值前添加:C: javaadt-bundle-windows-x86-20130522sdktools;,如圖1.6。圖1.6 Path1.4.4 ADT安裝創(chuàng)建AVD打開SDK Manager.exe,選擇toolsManage AVDs,在Android Virtual Device Manager中點擊New,輸入AVD的信息,點OK完成AVD的創(chuàng)建。如圖1.7。圖1.7 AVD2 系統(tǒng)的設(shè)計與分析2.1 Android系統(tǒng)的概述Android是一個包括操作系統(tǒng),中間件以及一些重要應(yīng)用程序的專門針對移動設(shè)備的層次結(jié)構(gòu)的軟件集。作為一個層次結(jié)構(gòu)的軟件集,一定有一個層次的系統(tǒng)構(gòu)架,下圖為Android的構(gòu)架圖:圖2.1 Android 系統(tǒng)構(gòu)架2.1.1應(yīng)用層Android會同一系列核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括email客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是使用JAVA語言編寫的。2.1.2應(yīng)用程序框架開發(fā)人員也可以完全訪問核心應(yīng)用程序所使用的API框架。該應(yīng)用程序的架構(gòu)設(shè)計簡化了組件的重用;任何一個應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過得遵循框架的安全性限制)。同樣,該應(yīng)用程序重用機制也使用戶可以方便的替換程序組件。隱藏在每個應(yīng)用后面的是一系列的服務(wù)和系統(tǒng), 其中包括:豐富而又可擴展的視圖(Views),可以用來構(gòu)建應(yīng)用程序, 它包括列表(lists),網(wǎng)格(grids),文本框(text boxes),按鈕(buttons), 甚至可嵌入的web瀏覽器; 內(nèi)容提供器(Content Providers)使得應(yīng)用程序可以訪問另一個應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫), 或者共享它們自己的數(shù)據(jù):資源管理器(Resource Manager)提供 非代碼資源的訪問,如本地字符串,圖形,和布局文件( layout files );通知管理器 (Notification Manager) 使得應(yīng)用程序可以在狀態(tài)欄中顯示自定義的提示信息; 活動管理器( Activity Manager) 用來管理應(yīng)用程序生命周期并提供常用的導航回退功能。2.1.3系統(tǒng)運行庫系統(tǒng)運行庫包括程序庫和Android運行庫。首先是程序庫,Android 包含一些C/C+庫,這些庫能被Android系統(tǒng)中不同的組件使用。它們通過 Android 應(yīng)用程序框架為開發(fā)者提供服務(wù)。以下是一些核心庫:系統(tǒng) C 庫 - 一個從 BSD 繼承來的標準 C 系統(tǒng)函數(shù)庫( libc ), 它是專門為基于 embedded linux 的設(shè)備定制的;媒體庫 - 基于 PacketVideo OpenCORE;該庫支持多種常用的音頻、視頻格式回放和錄制,同時支持靜態(tài)圖像文件。編碼格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG ; Surface Manager - 對顯示子系統(tǒng)的管理,并且為多個應(yīng)用程序提 供了2D和3D圖層的無縫融合; LibWebCore - 一個最新的web瀏覽器引擎用,支持Android瀏覽器和一個可嵌入的web視圖;SGL - 底層的2D圖形引擎;3D libraries - 基于OpenGL ES 1.0 APIs實現(xiàn);該庫可以使用硬件 3D加速(如果可用)或者使用高度優(yōu)化的3D軟加速;FreeType -位圖(bitmap)和矢量(vector)字體顯示;SQLite - 一個對于所有應(yīng)用程序可用,功能強勁的輕型關(guān)系型數(shù)據(jù)庫引擎。其次是Android 運行庫,Android 包括了一個核心庫,該核心庫提供了JAVA編程語言核心庫的大多數(shù)功能。每一個Android應(yīng)用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。Dalvik被設(shè)計成一個設(shè)備可以同時高效地運行多個虛擬系統(tǒng)。 Dalvik虛擬機執(zhí)行(.dex)的Dalvik可執(zhí)行文件,該格式文件針對小內(nèi)存使用做了優(yōu)化。同時虛擬機是基于寄存器的,所有的類都經(jīng)由JAVA編譯器編譯,然后通過SDK中 的 dx 工具轉(zhuǎn)化成.dex格式由虛擬機執(zhí)行。Dalvik虛擬機依賴于linux內(nèi)核的一些功能,比如線程機制和底層內(nèi)存管理機制。2.1.4 Linux內(nèi)核Android 的核心系統(tǒng)服務(wù)依賴于 Linux 2.6 內(nèi)核,如安全性,內(nèi)存管理,進程管理, 網(wǎng)絡(luò)協(xié)議棧和驅(qū)動模型。 Linux 內(nèi)核也同時作為硬件和軟件棧之間的抽象層。2.3 日歷流程圖iPlanet日歷S2erver2.xRun db_recover下載和安裝Calender Server5.1.1運行db_upgrade運行l(wèi)es2milgrateSun ONE下載和安裝Calender Server6.x運行cs5migrateSun Java System Calender Server 6Netscape Calender Server4.x下載和安裝Calender Server5.1.1運行ncs4migrate圖2.2 流程圖3 系統(tǒng)詳細設(shè)計3.1 日歷其實是由3個預制的數(shù)據(jù)集組成日歷整個系統(tǒng)是由3個GridView組成,3個GridView分別預制當前月、上個月和下個月當發(fā)生滑動事件的時候產(chǎn)生替換,同時在加載時重新生成。private Context mContext = BaseCalendar.this;private GridView title_gView;private GridView gView1;/ 上一個月private GridView gView2;/ 當前月private GridView gView3;/ 下一個月/ private GridView gView1;boolean bIsSelection = false;/ 是否是選擇事件發(fā)生private Calendar calStartDate = Calendar.getInstance();/ 當前顯示的日歷private Calendar calSelected = Calendar.getInstance(); / 選擇的日歷private Calendar calToday = Calendar.getInstance(); / 今日private CalendarGridViewAdapter gAdapter;private CalendarGridViewAdapter gAdapter1;private CalendarGridViewAdapter gAdapter3;/ 頂部按鈕private Button btnToday = null;private RelativeLayout mainLayout;/private int iMonthViewCurrentMonth = 0; / 當前視圖月private int iMonthViewCurrentYear = 0; / 當前視圖年private int iFirstDayOfWeek = Calendar.MONDAY;private static final int mainLayoutID = 88; / 設(shè)置主布局IDprivate static final int titleLayoutID = 77; / title布局IDprivate static final int caltitleLayoutID = 66; / title布局IDprivate static final int calLayoutID = 55; / 日歷布局ID3.2 視圖的生成 生成一個主視圖/ 生成內(nèi)容視圖private View generateContentView() / 創(chuàng)建一個垂直的線性布局(整體內(nèi)容)viewFlipper = new ViewFlipper(this);viewFlipper.setId(calLayoutID);mainLayout = new RelativeLayout(this); / 創(chuàng)建一個垂直的線性布局(整體內(nèi)容)RelativeLayout.LayoutParams params_main = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);mainLayout.setLayoutParams(params_main);mainLayout.setId(mainLayoutID);mainLayout.setGravity(Gravity.CENTER_HORIZONTAL);LinearLayout layTopControls = createLayout(LinearLayout.HORIZONTAL); / 生成頂部按鈕布局generateTopButtons(layTopControls); / 生成頂部按鈕 (上一月,下一月,當前月)RelativeLayout.LayoutParams params_title = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);params_title.topMargin = 5;/ params_title.addRule(RelativeLayout.ALIGN_PARENT_TOP, 20);layTopControls.setId(titleLayoutID);mainLayout.addView(layTopControls, params_title);calStartDate = getCalendarStartDate();setTitleGirdView();RelativeLayout.LayoutParams params_cal_title = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);params_cal_title.addRule(RelativeLayout.BELOW, titleLayoutID);/ params_cal_title.topMargin = 5;mainLayout.addView(title_gView, params_cal_title);CreateGirdView();RelativeLayout.LayoutParams params_cal = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);params_cal.addRule(RelativeLayout.BELOW, caltitleLayoutID);mainLayout.addView(viewFlipper, params_cal);LinearLayout br = new LinearLayout(this);RelativeLayout.LayoutParams params_br = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, 1);params_br.addRule(RelativeLayout.BELOW, calLayoutID);br.setBackgroundColor(getResources().getColor(R.color.calendar_background);mainLayout.addView(br, params_br);return mainLayout;3.3當所示日期發(fā)生選擇變更是的視圖更新在主視圖所示日期改變時更新,主要代碼如下:/ 根據(jù)改變的日期更新日歷/ 填充日歷控件用private void UpdateStartDateForMonth() calStartDate.set(Calendar.DATE, 1); / 設(shè)置成當月第一天iMonthViewCurrentMonth = calStartDate.get(Calendar.MONTH);/ 得到當前日歷顯示的月iMonthViewCurrentYear = calStartDate.get(Calendar.YEAR);/ 得到當前日歷顯示的年String s = calStartDate.get(Calendar.YEAR)+ -+ NumberHelper.LeftPad_Tow_Zero(calStartDate.get(Calendar.MONTH) + 1);btnToday.setText(s);/ 星期一是2 星期天是1 填充剩余天數(shù)int iDay = 0;int iFirstDayOfWeek = Calendar.MONDAY;int iStartDay = iFirstDayOfWeek;if (iStartDay = Calendar.MONDAY) iDay = calStartDate.get(Calendar.DAY_OF_WEEK) - Calendar.MONDAY;if (iDay 0)iDay = 6;if (iStartDay = Calendar.SUNDAY) iDay = calStartDate.get(Calendar.DAY_OF_WEEK) - Calendar.SUNDAY;if (iDay 0)iDay = 6;calStartDate.add(Calendar.DAY_OF_WEEK, -iDay);private Calendar getCalendarStartDate() calToday.setTimeInMillis(System.currentTimeMillis();calToday.setFirstDayOfWeek(iFirstDayOfWeek);if (calSelected.getTimeInMillis() = 0) calStartDate.setTimeInMillis(System.currentTimeMillis();calStartDate.setFirstDayOfWeek(iFirstDayOfWeek); else calStartDate.setTimeInMillis(calSelected.getTimeInMillis();calStartDate.setFirstDayOfWeek(iFirstDayOfWeek);return calStartDate;public class TitleGridAdapter extends BaseAdapter int titles = new int R.string.Sun, R.string.Mon, R.string.Tue,R.string.Wed, R.string.Thu, R.string.Fri, R.string.Sat ;private Activity activity;/ constructpublic TitleGridAdapter(Activity a) activity = a;Overridepublic int getCount() return titles.length;Overridepublic Object getItem(int position) return titlesposition;Overridepublic long getItemId(int position) return position;Overridepublic View getView(int position, View convertView, ViewGroup parent) LinearLayout iv = new LinearLayout(activity);TextView txtDay = new TextView(activity);txtDay.setFocusable(false);txtDay.setBackgroundColor(Color.TRANSPARENT);iv.setOrientation(1);txtDay.setGravity(Gravity.CENTER);LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);int i = (Integer) getItem(position);txtDay.setTextColor(Color.WHITE);Resources res = getResources();if (i = R.string.Sat) / 周六txtDay.setBackgroundColor(res.getColor(R.color.title_text_6); else if (i = R.string.Sun) / 周日txtDay.setBackgroundColor(res.getColor(R.color.title_text_7); else txtDay.setText(Integer) getItem(position);iv.addView(txtDay, lp);return iv;3.4 啟動和運行當你點擊運行程序是的加載代碼 TextView txtDay = new TextView(activity);/ 日期txtDay.setGravity(Gravity.CENTER_HORIZONTAL);/ 判斷是否是當前月if (iMonth = iMonthViewCurrentMonth) txtToDay.setTextColor(resources.getColor(R.color.ToDayText);txtDay.setTextColor(resources.getColor(R.color.Text); else txtDay.setTextColor(resources.getColor(R.color.noMonth);txtToDay.setTextColor(resources.getColor(R.color.noMonth);int day = myDate.getDate(); / 日期txtDay.setText(String.valueOf(day);txtDay.setId(position + 500);iv.setTag(myDate);LinearLayout.LayoutParams lp = new Linear
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省成都市青白江區(qū)2024-2025學年三下數(shù)學期末學業(yè)質(zhì)量監(jiān)測試題含解析
- 臺州科技職業(yè)學院《文化產(chǎn)業(yè)經(jīng)營案例分析》2023-2024學年第二學期期末試卷
- 蘇州科技大學《給排水工程結(jié)構(gòu)》2023-2024學年第二學期期末試卷
- 江西省景德鎮(zhèn)市2025屆初三第一次中考適應(yīng)性性考試數(shù)學試題含解析
- 江蘇省無錫市宜興市丁蜀區(qū)市級名校2025屆初三考前熱身數(shù)學試題試卷含解析
- 濟南市市中區(qū)2025屆六年級下學期小升初數(shù)學試卷含解析
- 2025年中級經(jīng)濟師考試試卷及答案
- 山東科技職業(yè)學院《現(xiàn)代交換技術(shù)與網(wǎng)絡(luò)》2023-2024學年第二學期期末試卷
- 南寧師范大學師園學院《拓展英語》2023-2024學年第一學期期末試卷
- 萍鄉(xiāng)學院《物理化學Ⅰ(上)》2023-2024學年第二學期期末試卷
- 農(nóng)村安全用電知識宣傳培訓
- 《門診醫(yī)療質(zhì)量管理》課件
- 【地理】俄羅斯第1課時 課件-2024-2025學年七年級地理下冊(湘教版2024)
- 船舶與海洋工程行業(yè)作業(yè)指導書
- 起重機械使用單位安全風險日管控、周排查、月調(diào)度管理制度
- 2025年赤峰新正電工技術(shù)服務(wù)限公司社會招聘66人(內(nèi)蒙古)高頻重點提升(共500題)附帶答案詳解
- 游泳館托管服務(wù)游泳館日常運營方案
- 大學體育與健康知到智慧樹章節(jié)測試課后答案2024年秋齊魯師范學院
- 便利店衛(wèi)生清潔管理規(guī)范
- 脊髓膠質(zhì)瘤診療中國專家共識(2024版)解讀
- 公司手持電動工具安全使用管理制度模版(3篇)
評論
0/150
提交評論