Android智能手機開發(fā)課程講義完整版



《Android智能手機開發(fā)課程講義完整版》由會員分享,可在線閱讀,更多相關(guān)《Android智能手機開發(fā)課程講義完整版(162頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、AndroidAndroid智能手機開發(fā)課智能手機開發(fā)課程講義程講義(完整版完整版)索引索引nAndroid教程01-平臺概述-6nAndroid教程02-開發(fā)環(huán)境-37nAndroid教程03-應(yīng)用程序模型-55nAndroid教程04-用戶界面-72nAndroid教程05-應(yīng)用編程-117nAndroid教程06-網(wǎng)絡(luò)連接-137nAndroid教程07-硬件訪問-142浙江大學(xué)計算機學(xué)院課程結(jié)構(gòu)課程結(jié)構(gòu)n目標(biāo):了解智能手機開發(fā)現(xiàn)狀,Android平臺體系結(jié)構(gòu)和應(yīng)用程序模型,覆蓋了幾個主要技術(shù)應(yīng)用。平臺綜述平臺綜述開發(fā)環(huán)境開發(fā)環(huán)境程序結(jié)構(gòu)程序結(jié)構(gòu)數(shù)據(jù)存取數(shù)據(jù)存取網(wǎng)絡(luò)連接網(wǎng)絡(luò)連接硬件訪問硬
2、件訪問圖形編程圖形編程用戶界面用戶界面HelloWorldHelloAndroidFileAndroidHttpAndroidCameraAndroidHelloAndroid浙江大學(xué)計算機學(xué)院課程結(jié)構(gòu)課程結(jié)構(gòu)nAndroid平臺綜述:q平臺介紹、開發(fā)者社區(qū)n開發(fā)環(huán)境:q構(gòu)建Android開發(fā)環(huán)境n應(yīng)該程序:q應(yīng)用程序結(jié)構(gòu)n典型應(yīng)用:q用戶界面q圖形編程q數(shù)據(jù)存取q網(wǎng)絡(luò)連接q硬件訪問浙江大學(xué)計算機學(xué)院獲取獲取Android資料的途徑資料的途徑nhttp:/q有時需要翻墻nhttp:/q下載SDK等相關(guān)軟件q查看文檔q在線幫助q開發(fā)社區(qū)浙江大學(xué)計算機學(xué)院1、平臺概述、平臺概述智能手機開發(fā)智能手機
3、開發(fā)2010.06.開放手機聯(lián)盟開放手機聯(lián)盟n開放手機聯(lián)盟,Open Handset Alliance:是美國Google 公司與2007 年11 月5 日宣布組建的一個全球性的聯(lián)盟組織。n聯(lián)盟將會支持Google 發(fā)布的Android 手機操作系統(tǒng)或者應(yīng)用軟件,共同開發(fā)名為Android 的開放源代碼的移動系統(tǒng)。n開放手機聯(lián)盟包括手機制造商、手機芯片廠商和移動運營商幾類。目前,聯(lián)盟成員數(shù)量已經(jīng)達到了43 家。浙江大學(xué)計算機學(xué)院移動手機聯(lián)盟創(chuàng)始成員移動手機聯(lián)盟創(chuàng)始成員nAplix、Ascender、Audience、Broadcom、中國移動、eBay、Esmertec、谷歌、宏達電、英特爾、
4、KDDI、Living Image、LG、Marvell、摩托羅拉、NMS、NTT DoCoMo、Nuance、Nvidia、PacketVideo、高通、三星、SiRF、SkyPop、Sonic Network、Sprint Nextel、Synaptics、TAT、意大利電信、西班牙電信、德州儀器、T-Mobile和Wind River。浙江大學(xué)計算機學(xué)院浙江大學(xué)計算機學(xué)院Google Phone浙江大學(xué)計算機學(xué)院OHA與與AndroidnOHA是一個軟硬件開發(fā)者組織,包括 Google,NTT DoCoMo,Sprint Nextel,and HTC n目標(biāo):q加速智能移動設(shè)備的發(fā)展 q
5、提供用戶更多更好更便宜的服務(wù)n由OHA開發(fā)的Android,是第一個完整的、開放的、免費的智能移動開發(fā)平臺。浙江大學(xué)計算機學(xué)院AndroidnAndroid 軟件系列包括操作系統(tǒng)、中間件和一些關(guān)鍵應(yīng)用。nAndroid是基于JAVA的系統(tǒng),運行在 Linux 2.6核上。nAndroid SDK 提供多種開發(fā)所必要的工具與API。浙江大學(xué)計算機學(xué)院特點特點1n應(yīng)用框架可以重復(fù)使用,其組件也可以更換。nDalvik虛擬機針對移動設(shè)備進行了優(yōu)化。n優(yōu)化的圖形能力支持2D、3D圖形(OpenGL ES 1.0)。n集成了基于開源WebKit引掣的瀏覽器。nSQLite作為結(jié)構(gòu)化數(shù)據(jù)存儲。浙江大學(xué)計算
6、機學(xué)院特點特點2n多媒體支持多種音頻、視頻格式。nGSM Telephony(hardware dependent)n支持藍牙Bluetooth,3G和WiFin支持照相機、GPS、指南針和加速度儀等傳感器硬件。n豐富的開發(fā)環(huán)境。包括模擬機、調(diào)試工具、內(nèi)存運行檢測,以及為Eclipse IDE所寫的插件。浙江大學(xué)計算機學(xué)院Android的優(yōu)勢的優(yōu)勢n 源代碼完全開放,便于開發(fā)人員更清楚的把握實現(xiàn)細節(jié),便于提高開發(fā)人員的技術(shù)水平,有利于開發(fā)出更具差異性的應(yīng)用。n采用了對有限內(nèi)存、電池和CPU 優(yōu)化過的虛擬機Dalvik,Android 的運行速度比想象的要快很多。n運營商(中國移動等)的大力支持
7、,產(chǎn)業(yè)鏈條的熱捧。n良好的盈利模式(3/7 開),產(chǎn)業(yè)鏈條的各方:運營商、制造商、獨立軟件生產(chǎn)商都可以獲得不錯的利益。將移動終端的評價標(biāo)準(zhǔn)從硬件向軟件轉(zhuǎn)變,極大的激發(fā)了軟件開發(fā)者的熱情。nAndroid 的源代碼遵循Apache V2 軟件許可,而不是通常的GPL v2 許可。有利于商業(yè)開發(fā)。n具有強大的Linux 社區(qū)的支持。浙江大學(xué)計算機學(xué)院Android的不足的不足n由于采用了Java 作為應(yīng)用開發(fā)語言,目前可用的傳統(tǒng)第三方應(yīng)用還很少,但由于Android 是一款完全開源的移動計算平臺,相信第三方應(yīng)用會很快的豐富起來。nGoogle 提供了一套Java 核心包(J2SE 5,J2SE 6
8、)的有限子集,尚不承諾遵守Java 任何Java 規(guī)范,可能會造成ava 陣營的進一步分裂。n現(xiàn)有應(yīng)用完善度不太夠,需要的開發(fā)工作量較大。n基于QEMU 開發(fā)的模擬器調(diào)試手段不十分豐富,只支持通話、等,速度慢。n暫不具備Push Mail 和Office(DataViz、QuickOffice 計劃近期推出)功能,目前主要面向的是普通消費者用戶,對商業(yè)用戶支持尚弱。浙江大學(xué)計算機學(xué)院系統(tǒng)環(huán)境系統(tǒng)環(huán)境nAndroid SDK所支持的操作系統(tǒng):qWindows XP(32-bit)or Vista(32-or 64-bit)qMac OS X 10.4.8 or later(x86 only)qL
9、inux(tested on Linux Ubuntu Dapper Drake)浙江大學(xué)計算機學(xué)院Android的系統(tǒng)架構(gòu)的系統(tǒng)架構(gòu)浙江大學(xué)計算機學(xué)院Linux KernelnAndroid 基于Linux內(nèi)核,但不是Linuxn內(nèi)核提供系統(tǒng)核心服務(wù),如進程、內(nèi)存、電源管理,網(wǎng)絡(luò)連接,驅(qū)動與安全等。n并不包括全部的Linux。浙江大學(xué)計算機學(xué)院Android內(nèi)核內(nèi)核nLinux 內(nèi)核位于硬件和軟件堆之間的抽象層q核心服務(wù):安全機制、內(nèi)存管理、進程管理、網(wǎng)絡(luò)、硬件驅(qū)動。q內(nèi)核扮演的是硬件層和系統(tǒng)其它層次之間的一個抽象層的概念。q操作系統(tǒng)的初始化和編程接口和標(biāo)準(zhǔn)的Linux 系統(tǒng)是有所不同的。浙
10、江大學(xué)計算機學(xué)院LibrariesnBionic LibcnFunction LibrariesnNative ServersnHardware Abstraction Libraries浙江大學(xué)計算機學(xué)院LibrariesnC/C+庫:被各種Android 組件使用通過應(yīng)用程序框架開發(fā)者可以使用其功能包括:n媒體庫:MPEG4 H.264 MP3 JPG PNG.nWebKit/LibWebCore:Web 瀏覽引擎nSQLite 關(guān)系數(shù)據(jù)庫引擎n2D,3D 圖形庫、引擎浙江大學(xué)計算機學(xué)院Function LibrariesnWebKitq基于開源WebKit的瀏覽器q支持CSS、Javas
11、cript、DOM、Ajaxn多媒體框架q基于PacketVideo OpenCORE平臺q支持標(biāo)準(zhǔn)音頻、視頻nSQLiteq輕型數(shù)據(jù)庫,支持多種平臺浙江大學(xué)計算機學(xué)院Native Servers-Surfacen為多種應(yīng)用提供2D、3D表面設(shè)計浙江大學(xué)計算機學(xué)院Native Servers-Audion音頻處理浙江大學(xué)計算機學(xué)院Hardware Abstraction Libsn硬件虛擬層nUser space C/C+library layern硬件接口驅(qū)動n使Android平臺邏輯與硬件接口分離浙江大學(xué)計算機學(xué)院Andoid Runtimen應(yīng)用開發(fā)語言:JavanDalvik虛擬機q指
12、令:Dalvik Excutable nJava標(biāo)準(zhǔn)庫q把java代碼編譯為Dalvik可執(zhí)行文件(dex format)浙江大學(xué)計算機學(xué)院運行環(huán)境運行環(huán)境n核心庫提供的Java 功能Dalvik 虛擬機依賴于Linux 內(nèi)核,n可同時運行多個Dalvik 虛擬機,n每一個Android 應(yīng)用程序在它自己的Dalvik VM 實例中運行VM 執(zhí)行優(yōu)化的Dalvik 可執(zhí)行文件(.dex)qDx-工具把編譯過的Java 文件轉(zhuǎn)換為dex 文件浙江大學(xué)計算機學(xué)院Dalvik Virtual MachinenAndroid custom implementation virtual machineq
13、Provides application portability and runtime consistencyqRuns optimized file format(.dex)and Dalvik bytecodeqJava.class/.jar files converted to.dex at build timenDesigned for embedded environmentqSupports multiple virtual machine processes per deviceqHighly CPU-optimized bytecode interpreterqEfficie
14、ntly Using runtime memorynCore LibrariesqCore APIs for Java language provide a powerful,yet simple and familiar development platform浙江大學(xué)計算機學(xué)院DVM vs JVMnDVMqGoogleqDalvik excutablenJVMqSunqJava bytecode浙江大學(xué)計算機學(xué)院浙江大學(xué)計算機學(xué)院Applications FrameworknActivity managerq管理運行應(yīng)用程序nContent Providerq在各應(yīng)用之間共享數(shù)據(jù)nReso
15、urce Managerq管理非代碼資源nNotification Managerq顯示用戶提示和狀態(tài)欄nViews Systemq可擴展顯示,可構(gòu)建UI浙江大學(xué)計算機學(xué)院應(yīng)用和框架應(yīng)用和框架n核心應(yīng)用,例如聯(lián)系人,電子郵件,電話,瀏覽器,日歷,地圖,.n充分訪問所有核心應(yīng)用框架APIn簡化組件的重用n用Java 編寫應(yīng)用程序浙江大學(xué)計算機學(xué)院ApplicationsnJAVA編寫的應(yīng)用程序浙江大學(xué)計算機學(xué)院開發(fā)環(huán)境開發(fā)環(huán)境 nIDE Eclipse nEclipse plug-in-ADTnSoftware Development Kit(SDK)nAndroid EmulatornDebu
16、ger浙江大學(xué)計算機學(xué)院Constants浙江大學(xué)計算機學(xué)院2、開發(fā)環(huán)境、開發(fā)環(huán)境智能手機開發(fā)建立建立Android開發(fā)環(huán)境開發(fā)環(huán)境nJDK 5 or JDK 6(JRE alone is not sufficient)q設(shè)置環(huán)境變量:JAVA_HOME、CLASSPATHnEclipse 3.3(Europa),3.4(Ganymede)nAndroid SDK nADT 0.8.0nEclipse安裝ADT 插件浙江大學(xué)計算機學(xué)院Quick Startn1.準(zhǔn)備q安裝JDK(version 5 or 6 required)qEclipse(version 3.4 or 3.5,needed
17、 only if you want develop using the ADT Plugin).n2.下載安裝SDK starter packageqTo install the SDK,simply unpack the starter package to a safe location and then add the location to your PATH.n3.為Eclipse安裝ADT插件n4.添加其它SDK組件qUse the Android SDK and AVD Manager,included in the SDK starter package,to add one
18、or more Android platforms and other components to your SDK.nSDK Setup Done!浙江大學(xué)計算機學(xué)院Android可視化環(huán)境配置可視化環(huán)境配置nJDK1.6q下載網(wǎng)址:http:/ SDK 2.xq下載網(wǎng)址:http:/浙江大學(xué)計算機學(xué)院安裝安裝Java JDKnJDK 5 or JDK 6(JRE alone is not sufficient)nAndroid Development Tools plugin(optional)nNot compatible with Gnu Compiler for Java(gcj)浙
19、江大學(xué)計算機學(xué)院安裝安裝EclipsenEclipse 3.4(Ganymede)or 3.5(Galileo)nEclipse JDT plugin(included in most Eclipse IDE packages)qIf you need to install or update Eclipse,you can download it from http:/www.eclipse.org/downloads/.nSeveral types of Eclipse packages are available for each platform.For developing Andr
20、oid applications,we recommend that you install one of these packages:qEclipse IDE for Java EE Developers qEclipse IDE for Java Developers qEclipse for RCP/Plug-in Developers qEclipse Classic(versions 3.5.1 and higher)浙江大學(xué)計算機學(xué)院Android的的SDK版本版本nAndroid 2.1 Platform(new!)nAndroid 1.6 PlatformnAndroid 1
21、.5 PlatformnOlder PlatformsqAndroid 2.0.1 PlatformqAndroid 2.0 PlatformqAndroid 1.1 Platform浙江大學(xué)計算機學(xué)院操作系統(tǒng)操作系統(tǒng)nWindows XP(32-bit)or Vista(32-or 64-bit)nMac OS X 10.5.8 or later(x86 only)nLinux(tested on Linux Ubuntu Hardy Heron)q64-bit distributions must be capable of running 32-bit applications.For
22、information about how to add support for 32-bit applications.浙江大學(xué)計算機學(xué)院硬件環(huán)境硬件環(huán)境n不包括JAVA、Eclipse。浙江大學(xué)計算機學(xué)院安裝安裝Androidn解壓,在Eclipse中Install New Software浙江大學(xué)計算機學(xué)院Android學(xué)習(xí)方法學(xué)習(xí)方法n了解什么是Androin建立開發(fā)環(huán)境n閱讀SDK 文檔n背景知識qJavaq面向?qū)ο髊設(shè)計模式qEclipse使用qJ2ME、Brew、Symbian(選)浙江大學(xué)計算機學(xué)院Adroid應(yīng)用應(yīng)用浙江大學(xué)計算機學(xué)院Activity活動活動1n最基本的And
23、roid 應(yīng)用程序組件,應(yīng)用程序中,一個活動通常就是一個單獨的屏幕。每一個活動都被實現(xiàn)為一個獨立的類,并且從活動基類中繼承而來,活動類將會顯示由視圖控件組成的用戶接口,并對事件做出響應(yīng)。n大多數(shù)的應(yīng)用是由多個屏幕顯示組成。q例如:一個文本信息的應(yīng)用也許有一個顯示發(fā)送消息的聯(lián)系人列表屏幕,第二個屏幕用來寫文本消息和選擇收件人,再來一個屏幕查看消息歷史或者消息設(shè)置操作等。這里每一個這樣的屏幕就是一個活動,很容易實現(xiàn)從一個屏幕到一個新的屏幕并且完成新的活動。n在某些情況下當(dāng)前的屏幕也許需要向上一個屏幕活動提供返回值-比如讓用戶從手機中挑選一張照片返回通訊錄做為電話撥入者的頭像。浙江大學(xué)計算機學(xué)院Ac
24、tivity活動活動2n當(dāng)一個新的屏幕打開后,前一個屏幕將會暫停,并保存在歷史堆棧中。用戶可以返回到歷史堆棧中的前一個屏幕。當(dāng)屏幕不再使用時,還可以從歷史堆棧中刪除。默認情況下,Android 將會保留從主屏幕到每一個應(yīng)用的運行屏幕。n簡單理解Activity 代表一個用戶所能看到的屏幕,Activity 主要是處理一個應(yīng)用的整體性工作,例如,監(jiān)聽系統(tǒng)事件(按鍵事件、觸摸屏事件等)、為用戶顯示指定的View,啟動其他Activity 等。所有應(yīng)用的Activity都繼承于android.app.Activity 類,該類是Android 提供的基層類,其他的Activity 繼承該父類后,通過
25、Override父類的方法來實現(xiàn)各種功能,這種設(shè)計在其他領(lǐng)域也較為常見。浙江大學(xué)計算機學(xué)院Activity生命周期生命周期浙江大學(xué)計算機學(xué)院Android模擬器模擬器nAndroid Emulator:q可模擬電話本、通話等功能q內(nèi)置的瀏覽器和Google Maps都可以聯(lián)網(wǎng)q可以使用鍵盤輸入,q可單擊模擬器按鍵輸入,q可以使用鼠標(biāo)單擊、拖動屏幕進行操作。浙江大學(xué)計算機學(xué)院Android模擬器模擬器n模擬器和真機的不同之處 q不支持呼叫和接聽實際來電,但可以通過控制臺模擬電話呼叫(呼入和呼出)。q不支持USB連接。q不支持相機/視頻捕捉。q不支持音頻輸入(捕捉),但支持輸出(重放)。q不支持擴
26、展耳機。q不能確定連接狀態(tài)。q不能確定電池電量水平和交流充電狀態(tài)。q不能確定SD卡的插入/彈出。q不支持藍牙。浙江大學(xué)計算機學(xué)院模擬器使用注意事項模擬器使用注意事項n遇到系統(tǒng)關(guān)于C盤空間不足之類的提示,是由于Android模擬器每次運行時會臨時生成幾個.tmp后綴的臨時文件,一段時間后,其可能占用幾G的磁盤空間。需要手工定期清理。浙江大學(xué)計算機學(xué)院3、應(yīng)用程序、應(yīng)用程序智能手機開發(fā)智能手機開發(fā)Android虛擬機虛擬機DalviknDalvik和標(biāo)準(zhǔn)Java虛擬機(JVM)首要差別qDalvik 基于寄存器,而JVM 基于棧。n基于寄存器的虛擬機對于更大的程序來說,在它們編譯的時候,花費的時間
27、更短。nDalvik和Java運行環(huán)境的區(qū)別qDalvik 經(jīng)過優(yōu)化,允許在有限的內(nèi)存中同時運行多個虛擬機的實例,q每一個Dalvik 應(yīng)用作為一個獨立的Linux 進程執(zhí)行。n獨立進程可防止在虛擬機崩潰的時候所有程序都被關(guān)閉。qDalvik 提供一個擁有較少限制許可證的平臺。浙江大學(xué)計算機學(xué)院重要包的描述重要包的描述nAndroid.app:提供高層的程序模型、提供基本的運行環(huán)境nAndroid.content:包含各種的對設(shè)備上的數(shù)據(jù)進行訪問和發(fā)布的類nAndroid.database:通過內(nèi)容提供者瀏覽和操作數(shù)據(jù)庫nAndroid.graphics:底層的圖形庫,可以將它們直接繪制到屏幕
28、上.nAndroid.location:定位和相關(guān)服務(wù)的類nAndroid.media:提供一些類管理多種音頻、視頻的媒體接口nA:提供幫助網(wǎng)絡(luò)訪問的類,超過通常的.*接口nAndroid.os:提供了系統(tǒng)服務(wù)、消息傳輸、IPC 機制nAndroid.opengl:提供OpenGL 的工具nAndroid.provider:提供類訪問Android 的內(nèi)容提供者nAndroid.telephony:提供與撥打電話相關(guān)的API 交互nAndroid.view:提供基礎(chǔ)的用戶界面接口框架nAndroid.util:涉及工具性的方法,例如時間日期的操作nAndroid.webkit:默認瀏覽器操作接
29、口nAndroid.widget:各種UI 元素(大部分可見)在應(yīng)用程序的屏幕中使用浙江大學(xué)計算機學(xué)院Android的相關(guān)文件類型的相關(guān)文件類型nJava文件-應(yīng)用程序源文件qandroid 本身相當(dāng)一部分都是用java 編寫而成qandroid 的應(yīng)用使用java 來開發(fā)。nClass文件-Java編譯后的目標(biāo)文件qGoogle使用Dalvik 來運行應(yīng)用程序qAndroid的class 文件是編譯過程中的中間目標(biāo)文件,需要鏈接成dex 文件才能在Dalvik 上運行。浙江大學(xué)計算機學(xué)院Dex文件文件nDex文件-Android平臺上的可執(zhí)行文件qAndroid 虛擬機Dalvik 支持的字
30、節(jié)碼文件格式。q這種虛擬機執(zhí)行的并非Java 字節(jié)碼,而是另一種字節(jié)碼:dex 格式的字節(jié)碼。q在編譯Java 代碼之后,通過Android 平臺上的工具可以將Java 字節(jié)碼轉(zhuǎn)換成Dex 字節(jié)碼。qDalvik VM 針對手機程式/CPU 做過最佳化,可以同時執(zhí)行許多VM 而不會占用太多Resource。浙江大學(xué)計算機學(xué)院Apk文件文件nApk文件-Android上的安裝文件qApk 是Android 安裝包的擴展名,一個Android 安裝包包含了與該Android 應(yīng)用程序相關(guān)的所有文件。napk文件將AndroidManifest.xml文件、應(yīng)用程序代碼(.dex 文件)、資源文件和
31、其他文件打成一個壓縮包。q一個工程只能打進一個.apk文件。qapk 文件的本質(zhì)是一個zip包。浙江大學(xué)計算機學(xué)院Hello world!第一個運行程序第一個運行程序HelloAndroidnEclipse自動生成qnew android projectnHelloAndroid浙江大學(xué)計算機學(xué)院HelloAndroid.javanJava程序package com.android.helloAndroid;import android.app.Activity;import android.os.Bundle;public class HelloAndroid extends Activit
32、y /*Called when the activity is first created.*/Override public void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);浙江大學(xué)計算機學(xué)院R.javanJava程序/*AUTO-GENERATED FILE.DO NOT MODIFY.*/package com.android.helloAndroid;public final class R public static fin
33、al class attr public static final class drawable public static final int icon=0 x7f020000;public static final class layout public static final int main=0 x7f030000;public static final class string public static final int app_name=0 x7f040001;public static final int hello=0 x7f040000;浙江大學(xué)計算機學(xué)院main.xm
34、lnXml文件Resources浙江大學(xué)計算機學(xué)院strings.xmlnXml文件 Hello Android,2010.HelloAndroid將要顯示內(nèi)容:Hello Android,2010.浙江大學(xué)計算機學(xué)院RUNRUN浙江大學(xué)計算機學(xué)院模擬運行模擬運行顯示內(nèi)容:Hello Android,2010.浙江大學(xué)計算機學(xué)院命令行運行命令行運行n啟動模擬器qemulator-avd android1.6-skin HVGA-pn連接模擬器:qtelnet localhost 5554n撥打電話:qgsm call 13810000086n發(fā)送短信:qsms send 13810000086
35、 HelloAndroid浙江大學(xué)計算機學(xué)院模擬器屏幕模擬器屏幕nHVGA-L:480 x320橫屏nHVGA-P:320 x480豎屏(默認)nQVGA-L:320 x240橫屏nQVGA-P:240 x320豎屏nWVGA-L:800 x480橫屏浙江大學(xué)計算機學(xué)院顯示圖像顯示圖像n增加ImageView浙江大學(xué)計算機學(xué)院4、用戶界面、用戶界面智能手機開發(fā)智能手機開發(fā)User Interface用戶界面用戶界面n說明布局Layoutn創(chuàng)建菜單Menusn創(chuàng)建對話Dialogsn處理用戶UI事件n用戶提示n確定風(fēng)格n定制組件n數(shù)據(jù)與界面綁定浙江大學(xué)計算機學(xué)院模擬器屏幕模擬器屏幕nHVGA-L
36、:480 x320橫屏nHVGA-P:320 x480豎屏(默認)nQVGA-L:320 x240橫屏nQVGA-P:240 x320豎屏nWVGA-L:800 x480橫屏浙江大學(xué)計算機學(xué)院UI用戶界面設(shè)計:用戶界面設(shè)計:Icon設(shè)計設(shè)計n應(yīng)用程序需要各種各樣的圖標(biāo)尺寸和定位尺寸和定位nLauncher icons要有多樣化的形狀和樣式,但又要形成統(tǒng)一的視覺風(fēng)格,其尺寸和定位也用統(tǒng)一:q紅色邊框為圖標(biāo)尺寸q藍色邊框是圖形尺寸,比圖標(biāo)尺寸稍小,圖形之外的空間用于顯示陰影和特殊效果。q橙色邊框是另外一種圖形尺寸。兩種類型的圖形尺寸可以達到統(tǒng)一的視覺權(quán)重。浙江大學(xué)計算機學(xué)院Icon的風(fēng)格的風(fēng)格n符
37、合當(dāng)下的流行趨勢,避免過度使用隱喻。n高度簡化和夸張,小尺寸圖標(biāo)也能易于識別,不宜太復(fù)雜。n嘗試抓住程序的主要特征,比如音像作為音樂的icon。n使用自然的輪廓和形狀,看起來幾何化和有機化,不失真實感。n采用前視角,幾乎沒有透視,光源在頂部。n不光滑但富有質(zhì)感。浙江大學(xué)計算機學(xué)院UI用戶界面設(shè)計:用戶界面設(shè)計:Widget設(shè)計設(shè)計nWidget是Android 1.5的一個新特性,允許程序顯示一些常用而又重要的信息在用戶的桌面主屏上q標(biāo)準(zhǔn)的Android系統(tǒng)映像包含了一些示例widgets包括指針時鐘、音樂播放器和其他工具如Google搜索欄。qWidget即是可由用戶自己編寫的功能控件。n典
38、型的Android Widget有三個主要組件:q邊框q框架q圖形控件以及其他元素n注意widgets的開狀尺寸以便在主屏上顯示浙江大學(xué)計算機學(xué)院User Interface GuidelinesnActivity and Task DesignqActivities are the basic,independent building blocks of applications.As you design your applications UI and feature set,you are free to re-use activities from other application
39、s as if they were yours,to enrich and extend your application.qThese guidelines describe how activities work,illustrates them with examples,and describes important underlying principles and mechanisms,such as multitasking,activity reuse,intents,the activity stack,and tasks.It covers this all from a
40、high-level design perspective.浙江大學(xué)計算機學(xué)院UI用戶界面設(shè)計:用戶界面設(shè)計:Menu設(shè)計設(shè)計n選項菜單Options Menu:活動的主菜單。通過按下設(shè)備菜單鍵來顯示它。選項菜單包含兩組菜單項:q圖標(biāo)菜單Icon Menun這個是當(dāng)用戶按下菜單鍵時最初出現(xiàn)屏幕下方的item集合。它支持最多6個菜單項。只有這些菜單支持圖標(biāo)而且這些菜單并不支持checkboxes或者radio buttons。q擴展菜單Expanded Menun這是通過按“更多”菜單顯現(xiàn)出來的一個豎向的項目列表。它僅當(dāng)圖標(biāo)菜單過多時存在而且是由6個以及其它選項菜單組成。n上下文菜單Contex
41、t Menu:浮動菜單列表,通常在你長時間按在一個視圖上時出現(xiàn)(比如一個列表項)n子菜單Submenu:浮動菜單列表,通過在選項菜單或上下文菜單選擇菜單項顯露出來。不支持嵌套子菜單。浙江大學(xué)計算機學(xué)院Android UI布局布局nViewGroup通過各種Layout,控制所屬View的顯示位置。ViewGroup(Layout)ViewViewViewViewViewViewGroup(Layout)浙江大學(xué)計算機學(xué)院LayoutnAbsoluteLayoutnFrameLayoutnGridViewnLinearLayoutnListLayoutnRadioGroupnTableLayou
42、tn浙江大學(xué)計算機學(xué)院顯示圖像顯示圖像n增加ImageViewn與原先的TextView,按垂直線性布局。線性布局LinearLayout浙江大學(xué)計算機學(xué)院布局布局n線性布局LinearLayoutq垂直:android:orientation=vertical“q水平:android:orientation=horizontal浙江大學(xué)計算機學(xué)院FrameLayoutn在屏幕上故意保留的空白空間,可以填充一個單獨的對象。n所有子元素都釘?shù)狡聊坏淖笊辖莕不能為子元素指定位置浙江大學(xué)計算機學(xué)院TableLayoutn子元素放入到行與列中n不顯示行、列或是單元格邊界線n單元格不能橫跨行,如HTML
43、 中一樣浙江大學(xué)計算機學(xué)院AbsoluteLayoutn指明子元素確切的屏幕(X,Y)坐標(biāo)n(0,0)是左上角,下移或右移時,坐標(biāo)值增加n允許元素重疊(但是不推薦)n注意:q一般建議不使用AbsoluteLayout 除非你有很好的理由來使用它q因為它相當(dāng)嚴格并且在不同的設(shè)備顯示中不能很好地工作浙江大學(xué)計算機學(xué)院RelativeLayoutn讓子元素指定它們相對于其他元素的位置(通過ID 來指定)或相對于父布局對象,跟AbsoluteLayout這個絕對坐標(biāo)布局是個相反。n在RelativeLayout布局里的控件包含豐富的排列屬性:qLayout above:控件在指定控件的上方qLayou
44、t below:控件在指定控件的下方qLayout to left of。n使用 RelativeLayout布局的時候,盡少程序運行時做控件布局的更改,因為 RelativeLayout布局里面的屬性之間,很容易沖突。浙江大學(xué)計算機學(xué)院Color顏色顏色nandroid.graphics.Color 包含顏色值qColor.BLACKqColor.BLUEqColor.CYANqColor.DKGRAYqColor.GRAYqColor.GREENqColor.LTGRAYqColor.MAGENTAqColor.REDqColor.TRANSPARENTqColor.WHITEqColor
45、.YELLOW浙江大學(xué)計算機學(xué)院字體風(fēng)格字體風(fēng)格Typefacenandroid.graphics.Typeface實踐qTypeface.create(Typeface family,int style)n創(chuàng)建一個混合型新的字體:有4*5 中搭配qTypeface.setTypeface(Typeface tf,int style)n設(shè)置一個混合型字體:有4*5 中搭配qTypeface.setTypeface(Typeface tf)n設(shè)置一個只有Typeface 風(fēng)格的字體:有五種形式n字體(4種)qBOLD、BOLD_ITALIC、ITALIC、NORMALq粗體、粗斜體、斜體、普通字
46、體n風(fēng)格(5種)qDEFAULT、DEFAULT_BOLD、MONOSPACE、SANS_SERIF、SERIFq默認字體、默認粗體、單間隔字體、無襯線字體、襯線字體浙江大學(xué)計算機學(xué)院Android菜單菜單nandroid提供了三種菜單類型,分別為options menu,context menu,sub menu。noptions menu(主菜單)就是通過按home鍵來顯示,ncontext menu(右鍵菜單)在view上按上2s后顯示n兩種menu都有可以加入子菜單,子菜單不能種不能嵌套子菜單。nandroid還提供了對菜單項進行分組的功能,可以把相似功能的菜單項分成同一個組,這樣可以
47、通過調(diào)用setGroupCheckable,setGroupEnabled,setGroupVisible來設(shè)置菜單屬性,而無須單獨設(shè)置。浙江大學(xué)計算機學(xué)院OptionMenu 1nOptionMenu(主菜單)qoptions menu最多只能在屏幕最下面顯示6個菜單選項,稱為icon menunicon menu不能有checkable選項。q多于6的菜單項會以more icon menu來調(diào)出,稱為expanded menu。qoptions menu通過activity的onCreateOptionsMenu來生成,q這個函數(shù)只會在menu第一次生成時調(diào)用。n任何想改變options
48、menu的想法只能在onPrepareOptionsMenu來實現(xiàn),這個函數(shù)會在menu顯示前調(diào)用。qonOptionsItemSelected 用來處理選中的菜單項。浙江大學(xué)計算機學(xué)院OptionMenu 2浙江大學(xué)計算機學(xué)院ContextMenu菜單菜單nContextMenu(右鍵菜單)qcontext menu是跟某個具體的view綁定在一起,在activity中用registerForContextMenu來為某個view注冊context menu。context menu在顯示前都會調(diào)用onCreateContextMenu來生成menu。onContextItemSelecte
49、d用來處理選中的菜單項。浙江大學(xué)計算機學(xué)院SubmenunSubmenu(子菜單)q一個浮動菜單列表,通過在選項菜單或上下文菜單選擇菜單項顯露出來。不支持嵌套子菜單。浙江大學(xué)計算機學(xué)院ButtonnMain.xmlnButton事件響應(yīng)show=(TextView)findViewById(R.id.TextView01);press=(Button)findViewById(R.id.Button01);press.setOnClickListener(new OnClickListener()public void onClick(View v)show.setText(Hi,Google
50、 Android!););浙江大學(xué)計算機學(xué)院進程優(yōu)先級順序進程優(yōu)先級順序n 前臺進程(Active Process):q前臺Activity、包含正在運行的廣播接收器、正在運行的服務(wù)n 可視進程(Visible Process):q包含一個可視化的Activityn 服務(wù)進程(Started Service Process):q包含一個被開啟的服務(wù)(處理服務(wù),不是直接可視,例如媒體播放器,網(wǎng)絡(luò)上傳、下載)n 后臺進程(Background Process):q包含一個不可視的Activity(可以在任意時刻殺死該進程來回收內(nèi)存)n 空進程(Empty Process):q沒有持有任何應(yīng)用程序組
51、件浙江大學(xué)計算機學(xué)院Activity狀態(tài)狀態(tài)1nactive:q當(dāng)一個Activity 在屏幕的最上層時(對堆棧的最頂端),它就是屬于active 或者running 的狀態(tài)npaused:q如果一個Activity 失去焦點(focus)但還看得到它的畫面(比如:一個新的Activity 畫面并不是全屏幕或者它是一個半透明的情況),那失去焦點的Activity 則處在paused 的狀態(tài)。像這個失去焦點的Activity它還是完全活著的,并沒有消失。(活著的意思是指,Activity 自己本身所有的狀態(tài)及數(shù)據(jù)都還是存在的,也跟窗口管理程序window manager 保持聯(lián)系著),像這種pa
52、used 的Activity,會在一種情況下消失,那就是當(dāng)系統(tǒng)的內(nèi)存不夠用之時,系統(tǒng)會自動判斷,將不重要的Activity 移除。浙江大學(xué)計算機學(xué)院Activity狀態(tài)狀態(tài)2nstop:q如果一個Activity 被其它的Activity 完全的遮蓋住時,它仍然保有全部的狀態(tài)及數(shù)據(jù),但因為它已不再被使用者看見,所以它的畫面是被隱藏起來的(畫面不需要更新),當(dāng)系統(tǒng)內(nèi)存不足時,這種stop 狀態(tài)的Activity 時最先被系統(tǒng)考慮拿下來釋放內(nèi)存的。n finish:q當(dāng)一個Activity 處于pause 或stop 的狀態(tài)時,系統(tǒng)可以要求Activity 結(jié)束(finish)或直接移除(kill
53、)它。當(dāng)它需要再度呈現(xiàn)在使用者面前時,它必須要能完整的重新啟動及回復(fù)先前的狀態(tài)。浙江大學(xué)計算機學(xué)院Activity狀態(tài)轉(zhuǎn)換狀態(tài)轉(zhuǎn)換nActivity狀態(tài)轉(zhuǎn)換浙江大學(xué)計算機學(xué)院Activity狀態(tài)管理狀態(tài)管理浙江大學(xué)計算機學(xué)院Active、PausednActive:qWhen an Activity is at the top of the stack,it is the visible,focused,foreground activity that is receiving user input.Android will attempt to keep it alive at all co
54、sts,killing Activities further down the stack as needed,to ensure that it has the resources it needs.When another Activity becomes active,this one will be paused.nPaused:qIn some cases,your Activity will be visible but will not have focus;at this point,its paused.This state is reached if a transpare
55、nt or non-full-screen Activity is active in front of it.When paused,an Activity is treated as if it were active;however,it doesnt receive user input events.In extreme cases,Android will kill a paused Activity to recover resources for the active Activity.When an Activity becomes totally obscured,it b
56、ecomes stopped.浙江大學(xué)計算機學(xué)院Stopped、InactivenStopped:qWhen an Activity isnt visible,it“stops.”The Activity will remain in memory retaining all state and member information;however,it is now a prime candidate for execution when the system requires memory elsewhere.When an Activity is stopped,its importan
57、t to save data and the current UI state.Once an Activity has exited or closed,it becomes inactive.nInactive:qAfter an Activity has been killed,and before its been launched,its inactive.Inactive Activities have been removed from the Activity stack and need to be restarted before they can be displayed
58、 and used.浙江大學(xué)計算機學(xué)院服務(wù)服務(wù)(Service)n服務(wù)是運行在后臺的一段代碼。它可以運行在它自己的進程,也可以運行在其他應(yīng)用程序的上下文context里面,這取決于自身的需要。其他的組件可以綁定到一個服務(wù)Service上面,通過遠程過程調(diào)用(RPC)來調(diào)用這個方法。q例如:媒體播放器的服務(wù),當(dāng)用戶退出媒體選擇界面后,由服務(wù)Service來保證音樂繼續(xù)播放。n如何使用服務(wù)q第一種是通過調(diào)用Context.startServece()啟動,調(diào)用Context.stoptService()結(jié)束,startService()可以傳遞參數(shù)給Service。q第二種方式是通過調(diào)用Conte
59、xt.bindService()啟動,調(diào)用Context.unbindService()結(jié)束,q通過ServiceConnection 訪問Service。二者可以混合使用,比如說我可以先startServece()再unbindService()。浙江大學(xué)計算機學(xué)院Service的生命周期的生命周期nstartService():q啟動服務(wù),直到調(diào)用stoptService(),或者Service調(diào)用stopSelf()停止。nbindService():qService和調(diào)用bindService()的進程同生共死,也就是說當(dāng)調(diào)用bindService()的進程死了,那么它bind 的Se
60、rvice 跟著結(jié)束,期間可以調(diào)用unbindService()解除綁定讓Service 結(jié)束n兩種方式混合使用。浙江大學(xué)計算機學(xué)院使用服務(wù)進行音樂播放使用服務(wù)進行音樂播放nManifest.xml中的Service定義qqqqqqnService 子類中的Playerqpublic void onStart(Intent intent,int startId)qsuper.onStart(intent,startId);qplayer=MediaPlayer.create(this,R.raw.seven_days);qplayer.start();qqpublic void onDestr
61、oy()qsuper.onDestroy();qplayer.stop();qnActivity 中定義的Intent開啟相應(yīng)的ServiceqstartService(new Intent(com.liangshan.wuyong.START_AUDIO_SERVICE);qstopService(new Intent(com.liangshan.wuyong.START_AUDIO_SERVICE);浙江大學(xué)計算機學(xué)院使用服務(wù)進行音樂播放使用服務(wù)進行音樂播放1nManifest.xml中的Service定義浙江大學(xué)計算機學(xué)院使用服務(wù)進行音樂播放使用服務(wù)進行音樂播放2nService子類中的
62、Playerpublic void onStart(Intent intent,int startId)super.onStart(intent,startId);player=MediaPlayer.create(this,R.raw.seven_days);player.start();public void onDestroy()super.onDestroy();player.stop();浙江大學(xué)計算機學(xué)院使用服務(wù)進行音樂播放使用服務(wù)進行音樂播放3nActivity 中定義的Intent開啟相應(yīng)的ServicestartService(new Intent(+id/START_AUD
63、IO_SERVICE);stopService(new Intent(+id/START_AUDIO_SERVICE);浙江大學(xué)計算機學(xué)院添加添加Menu菜單菜單nMenu菜單public boolean onCreateOptionsMenu(Menu menu)/TODO Auto-generated method stubboolean result=super.onCreateOptionsMenu(menu);menu.add(0,INSERT_ID_Play,0,R.string.menu_toPlay);menu.add(0,INSERT_ID_Stop,0,R.string.m
64、enu_toStop);return result;/創(chuàng)建菜單浙江大學(xué)計算機學(xué)院IntentnIntent 是描述應(yīng)用想要做什么,Intent 數(shù)據(jù)結(jié)構(gòu)兩個最重要的部分是:q動作:典型的動作類型有:MAIN(活動的門戶)、VIEW、PICK、EDIT等。q動作對應(yīng)的數(shù)據(jù):以URI 的形式進行表示n例如:要查看某個人的聯(lián)系方式,你需要創(chuàng)建一個動作類型為VIEW 的Intent,以及一個表示這個人的URI。nAndroid 使用了Intent 這個特殊類,實現(xiàn)在屏幕與屏幕之間移動。Intent 類用于描述一個應(yīng)用將會做什么事。浙江大學(xué)計算機學(xué)院IntentFilternintentfilter 則
65、用于描述一個activity(或者IntentReceiver)能夠操作哪些intent。q一個activity 如果要顯示一個人的聯(lián)系方式時,需要聲明一個IntentFilter,這個IntentFilter 要知道怎么去處理VIEW 動作和表示一個人的URI。nIntentFilter 需要在AndroidManifest.xml 中定義。浙江大學(xué)計算機學(xué)院IntentFiltern通過解析各種intent,從一個屏幕導(dǎo)航到另一個屏幕是很簡單的。q當(dāng)向前導(dǎo)航時,activity 將會調(diào)用startActivity(IntentmyIntent)方法。q然后,系統(tǒng)會在所有安裝的應(yīng)用程序中定義
66、的IntentFilter 中查找,找到最匹配Intent 對應(yīng)的activity。q新的activity 接收到通知后,開始運行。q當(dāng)startActivity 方法被調(diào)用將觸發(fā)解析Intent 的動作。n這個機制提供了兩個關(guān)鍵好處:qActivities 能夠重復(fù)利用從其它組件中以Intent 的形式產(chǎn)生的一個請求;qActivities 可以在任何時候被一個具有相同IntentFilter 的新的Activity 取代。浙江大學(xué)計算機學(xué)院IntentReceivernIntentReceiver 在AndroidManifest.xml 中注冊,也可在代碼中使用Context.registerReceiver()進行注冊。n當(dāng)一個intentreceiver 被觸發(fā)時,應(yīng)用不必對請求調(diào)用intentreceiver,系統(tǒng)會在需要的時候啟動你的應(yīng)用。n各種應(yīng)用還可以通過使用Context.broadcastIntent()將自己的intentreceiver 廣播給其它應(yīng)用程序。n當(dāng)希望應(yīng)用能夠?qū)σ粋€外部的事件(如電話呼入,數(shù)據(jù)網(wǎng)絡(luò)可用,或者某個定時)做出響應(yīng),可以使用一個Inte
- 溫馨提示:
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. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專題黨課講稿:以高質(zhì)量黨建保障國有企業(yè)高質(zhì)量發(fā)展
- 廉政黨課講稿材料:堅決打好反腐敗斗爭攻堅戰(zhàn)持久戰(zhàn)總體戰(zhàn)涵養(yǎng)風(fēng)清氣正的政治生態(tài)
- 在新錄用選調(diào)生公務(wù)員座談會上和基層單位調(diào)研座談會上的發(fā)言材料
- 總工會關(guān)于2025年維護勞動領(lǐng)域政治安全的工作匯報材料
- 基層黨建工作交流研討會上的講話發(fā)言材料
- 糧食和物資儲備學(xué)習(xí)教育工作部署會上的講話發(fā)言材料
- 市工業(yè)園區(qū)、市直機關(guān)單位、市紀委監(jiān)委2025年工作計劃
- 檢察院政治部關(guān)于2025年工作計劃
- 辦公室主任2025年現(xiàn)實表現(xiàn)材料
- 2025年~村農(nóng)村保潔員規(guī)范管理工作方案
- 在深入貫徹中央8項規(guī)定精神學(xué)習(xí)教育工作部署會議上的講話發(fā)言材料4篇
- 開展深入貫徹規(guī)定精神學(xué)習(xí)教育動員部署會上的講話發(fā)言材料3篇
- 在司法黨組中心學(xué)習(xí)組學(xué)習(xí)會上的發(fā)言材料
- 國企黨委關(guān)于推動基層黨建與生產(chǎn)經(jīng)營深度融合工作情況的報告材料
- 副書記在2025年工作務(wù)虛會上的發(fā)言材料2篇