安卓開發(fā)簡(jiǎn)單介紹課件_第1頁(yè)
安卓開發(fā)簡(jiǎn)單介紹課件_第2頁(yè)
安卓開發(fā)簡(jiǎn)單介紹課件_第3頁(yè)
安卓開發(fā)簡(jiǎn)單介紹課件_第4頁(yè)
安卓開發(fā)簡(jiǎn)單介紹課件_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

安卓開發(fā)簡(jiǎn)單介紹Android系統(tǒng)架構(gòu)常用開發(fā)工具AndroidStudio-谷歌官方NetBeansIDE+AndroidSDKeclipseIDE+AndroidSDK以下以NetBeansIDE+AndroidSDK的安卓項(xiàng)目為例項(xiàng)目結(jié)構(gòu)src代碼源文件目錄res資源文件目錄gen自動(dòng)生成文件目錄(R類)bin目的輸出文件目錄libs庫(kù)文件目錄重要文件AndroidManifest.xml包含項(xiàng)目的最基本信息(應(yīng)用包名、sdk版本、應(yīng)用圖標(biāo)、activity)。build.xml編譯條件文件(NetBeans獨(dú)有),該文件不正確會(huì)導(dǎo)致R類編譯不成功。資源文件drawable目錄,放置不同分辨率圖片,由resource.getDrawable(id)操作該資源。layout目錄,放置界面描述文件,描述用戶界面布局和組件。values目錄,放置常量描述文件(string、color、style、arrays等全局常量)基本程序結(jié)構(gòu)界面交互類(Activity)行為協(xié)作類(Intent)后臺(tái)服務(wù)(Service)數(shù)據(jù)上下文供應(yīng)類(ContentProvider)應(yīng)用程序組件類(Widget)消息通知類(Notification)界面交互類(Activity)應(yīng)用程序的表示層:應(yīng)用程序的每個(gè)界面都將是Activity類的擴(kuò)展。UI組件:包括列表,文本框,按鈕等UI組件,是用戶可視的部分。視圖(View):一個(gè)活動(dòng)(Activity)相當(dāng)于一個(gè)窗體(Form),構(gòu)成GUI來顯示信息、響應(yīng)用戶操作和事件。Android是通過一種Activity棧的方式來管理Activitys界面交互類(Activity)事件 onCreate(創(chuàng)建)、onStart(激活)、onResume(恢復(fù))、onPause(暫停)、onStop(停止)、onDestroy(銷毀)、onRestart(重啟)切換布局頁(yè)面

setContentView(R.layout.?)

獲取View上的控件findViewById(R.id.?)Activity的四種基本狀態(tài)Active/Runing

一個(gè)新Activity啟動(dòng)入棧后,它在屏幕最前端,處于棧的最頂端,此時(shí)它處于可見并可和用戶交互的激活狀態(tài)。Paused

當(dāng)Activity被另一個(gè)透明或者Dialog樣式的Activity覆蓋時(shí)的狀態(tài)。此時(shí)它依然與窗口管理器保持連接,系統(tǒng)繼續(xù)維護(hù)其內(nèi)部狀態(tài),所以它仍然可見,但它已經(jīng)失去了焦點(diǎn)故不可與用戶交互。Stoped

當(dāng)Activity被另外一個(gè)Activity覆蓋、失去焦點(diǎn)并不可見時(shí)處于Stoped狀態(tài)。Killed

Activity被系統(tǒng)殺死回收或者沒有被啟動(dòng)時(shí)處于Killed狀態(tài)。狀態(tài)轉(zhuǎn)換該圖來自IBM網(wǎng)站五大布局對(duì)象FrameLayout框架布局LinearLayout線性布局AbsoluteLayout絕對(duì)布局RelativeLayout相對(duì)布局TableLayout表格布局常用控件TabHost這個(gè)是存放多個(gè)Tab標(biāo)簽的容器,比較特殊GridView(網(wǎng)格布局)Gallery(畫廊視圖)Spinner(下拉列表)TabWidget(切換卡)WebView(網(wǎng)絡(luò)視圖)ProgressBar(進(jìn)度條)Dialog(對(duì)話框)AutoCompleteTextView(自動(dòng)提示)Toast(提示)Button(按鈕)TextView(文本框)EditText(編輯框)DatePicker,TimePicker(日期和時(shí)間)ImageButton(帶圖標(biāo)的按鈕)RadioButton(單選按鈕)CheckBox(多選按鈕)ListView(列表)Menu(菜單)事件處理模型基于監(jiān)聽器的事件處理模型,基于回調(diào)方式的事件處理模型,Handle消息傳遞模型UI組件事件處理的回調(diào)方法booleanonKeyDown(intKeyCode,KeyEventevent)booleanonKeyUp(intKeyCode,KeyEventevent)booleanonTouchEvent(MotionEventevent)booleanonKeyLongPressed(intKeyCode,KeyEventevent)booleanonTrackballEvent(MotionEventevent)booleanonKeyShortcut(intKeyCode,KeyEventevent)常用控件事件代碼中設(shè)置事件監(jiān)聽器setOnClickListener(new?.OnClickListener(){...}回調(diào)函數(shù) XML中android:onClick="onClick_Event"常用的監(jiān)聽器接口View.OnClickListener:監(jiān)聽點(diǎn)擊事件,監(jiān)聽操作通過重寫onClick()方法View.OnKeyListener:監(jiān)聽鍵盤事件,通過重寫onKey()方法View.OnTouchListener:監(jiān)聽觸摸屏事件,通過重寫onTouch方法View.OnLongClickListener:監(jiān)聽長(zhǎng)按事件,通過重寫onLongClick()方法View.OnFoucusChangeListener:監(jiān)聽焦點(diǎn)改變事件,通過重寫onFocusChange()方法View.CreateContextMenuListener:監(jiān)聽創(chuàng)建上下文菜單事件MenuItem.OnMenuItemClickListener:監(jiān)聽菜單項(xiàng)點(diǎn)擊,重寫onMenuItemClick()方法GestureDetector.OnGestureListener:監(jiān)聽手勢(shì)改變事件Handle類的主要作用在新啟動(dòng)的線程中發(fā)送信息在主線程中獲取,處理信息Handle類包含如下的方法用于發(fā)送與處理信息:》voidhandleMessage(Messagemsg)》finalbooleanhasMessage(intwhat)》finalbooleansendMessage(Messagemsg)》finalbooleansendMessageDelayed(Messagemsg,longdelayMillis)行為協(xié)作類(Intent)一個(gè)應(yīng)用程序間(inter-application)的消息傳遞框架可以在系統(tǒng)范圍內(nèi)廣播消息或者對(duì)一個(gè)目標(biāo)Activity或Service發(fā)送消息,來表示你要執(zhí)行一個(gè)動(dòng)作Intent廣播的消費(fèi)者,BroadcastReceiversIntent對(duì)象組成組件名-Componentname動(dòng)作-Action數(shù)據(jù)-Data和數(shù)據(jù)類型-type分類-CategoryExtras標(biāo)志位-Flags行為協(xié)作類(Intent)直接Intent:指定了component屬性的Intent(調(diào)用setComponent(ComponentName)或者setClass(Context,Class)來指定)。通過指定具體的組件類,通知應(yīng)用啟動(dòng)對(duì)應(yīng)的組件間接Intent:沒有指定comonent屬性的Intent。這些Intent需要包含足夠的信息,這樣系統(tǒng)才能根據(jù)這些信息,在在所有的可用組件中,確定滿足此Intent的組件。IntentReceiver當(dāng)你希望你的應(yīng)用能夠?qū)σ粋€(gè)外部的事件做出響應(yīng)時(shí),可以使用一個(gè)IntentReceiver。當(dāng)IntentReceiver在感興趣的事件發(fā)生時(shí),會(huì)使用NotificationManager通知用戶,但它并不能生成一個(gè)UI。IntentReceiver在AndroidManifest.xml中注冊(cè),但也可以在代碼中使用Context.registerReceiver()進(jìn)行注冊(cè)。Activitie與Intent的關(guān)系A(chǔ)ctivities能夠重復(fù)利用從其它組件中以Intent的形式產(chǎn)生的一個(gè)請(qǐng)求;Activities可以在任何時(shí)候被一個(gè)具有相同IntentFilter的新的Activity取代。Intent常見動(dòng)作常量Service一個(gè)Service是一段長(zhǎng)生命周期的,沒有用戶界面的程序。activity會(huì)使用Context.startService()來啟動(dòng)一個(gè)service,調(diào)用Context.stopService()結(jié)束。還可以通過使用Context.bindService()方法,連接到一個(gè)service上(如果這個(gè)service還沒有運(yùn)行將啟動(dòng)它),調(diào)用Context.unbindService()關(guān)閉服務(wù)事件onCreate()onStart()onDestroy()onBindonUnbindContentProviderContentProvider提供與其它的應(yīng)用共享應(yīng)用數(shù)據(jù)的功能。ContentProvider類實(shí)現(xiàn)了一組標(biāo)準(zhǔn)的方法,來保存或讀取此ContentProvider處理的各種數(shù)據(jù)類型。使用ContentProviderActivity類中有一個(gè)繼承自Content的getContentResolver()無(wú)參數(shù)方法,該方法返回一個(gè)ContentResolver對(duì)象,通過調(diào)用其query、insert、update、delete方法訪問數(shù)據(jù)。幾個(gè)方法的第一個(gè)參數(shù)均為URI型,用來標(biāo)識(shí)資源實(shí)現(xiàn)ContentProvider的過程1、定義一個(gè)COTENT_URI常量2、定義一個(gè)類,繼承ContentProvider3、實(shí)現(xiàn)query(),delete(),update(),insert(),onCreate(),getType()方法4、在AndroidMainfest.xml中申明ContentProvider類主要方法publicbooleanonCreate():該方法在ContentProvider創(chuàng)建后就會(huì)被調(diào)用,Android開機(jī)后,ContentProvider在其它應(yīng)用第一次訪問它時(shí)才會(huì)被創(chuàng)建。publicUriinsert(Uriuri,ContentValuesvalues):該方法用于供外部應(yīng)用往ContentProvider添加數(shù)據(jù)。publicintdelete(Uriuri,Stringselection,String[]selectionArgs):該方法用于供外部應(yīng)用從ContentProvider刪除數(shù)據(jù)。publicintupdate(Uriuri,ContentValuesvalues,Stringselection,String[]selectionArgs):該方法用于供外部應(yīng)用更新ContentProvider中的數(shù)據(jù)。publicCursorquery(Uriuri,String[]projection,Stringselection,String[]selectionArgs,StringsortOrder):該方法用于供外部應(yīng)用從ContentProvider中獲取數(shù)據(jù)。publicStringgetType(Uriuri):該方法用于返回當(dāng)前Url所代表數(shù)據(jù)的MIME類型。Uri介紹每一個(gè)ContentProvider都擁有一個(gè)公共的Uri,這個(gè)Uri用于表示這個(gè)ContentProvider提供的數(shù)據(jù)Android所提供的ContentProvider都存放在vider這個(gè)包里面ContentProvider(內(nèi)容提供者)的scheme已經(jīng)由Android所規(guī)定,scheme為:content://主機(jī)名(或叫Authority)用于唯一標(biāo)識(shí)這個(gè)ContentProvider,外部調(diào)用者可以根據(jù)這個(gè)標(biāo)識(shí)來找到它。路徑(path)可以用來表示我們要操作的數(shù)據(jù),路徑的構(gòu)建應(yīng)根據(jù)業(yè)務(wù)而定操作Uri的工具類UriMatcher 用于匹配UriContentUris

用于操作Uri路徑后面的ID部分外部應(yīng)用操作數(shù)據(jù)外部應(yīng)用需要對(duì)ContentProvider中的數(shù)據(jù)進(jìn)行添加、刪除、修改和查詢操作時(shí),使用ContentResolver類來完成。獲取ContentResolver對(duì)象,可以使用Activity提供的getContentResolver()方法監(jiān)聽ContentProvider數(shù)據(jù)變化getContentResolver().notifyChange(uri,null)來通知注冊(cè)在此URI上的訪問者。ContentProvider的訪問者需要得到數(shù)據(jù)變化通知,必須使用ContentObserver對(duì)數(shù)據(jù)(數(shù)據(jù)采用uri描述)進(jìn)行監(jiān)聽,當(dāng)監(jiān)聽到數(shù)據(jù)變化通知時(shí),系統(tǒng)就會(huì)調(diào)用ContentObserver的onChange()方法Widget可以添加到主屏幕界面(homescreen)的可視應(yīng)用程序組件BroadcaseReceiver的特殊變種,widgets讓你可以為用戶創(chuàng)建可嵌入到主屏幕界面的動(dòng)態(tài)的、交互的應(yīng)用程序組件Widget框架類AppWidgetProvider:繼承自BroadcastReceiver,在AppWidget應(yīng)用update,enable,disable和deleted時(shí)接受通知。其中onUpdate,onReceive是最常用到的方法。AppWidgetProviderInfo:描述AppWidget的大小,更新頻率和初始界面等信息,以xml文件的形式存在于應(yīng)用中的res/xml目錄下。AppWidgetManager:負(fù)責(zé)管理AppWidget,向AppWidgetProvider發(fā)送通知。RemoteViews:一個(gè)可以在其他應(yīng)用進(jìn)程中運(yùn)行的類,是構(gòu)造AppWidget的核心。Notification用戶通知框架,由NotificationManager(系統(tǒng)服務(wù))統(tǒng)一管理的Notification讓你不必竊取焦點(diǎn)或中斷當(dāng)前Activities就能通知用戶是在Service和BroadcastReceiver中獲取用戶注意的推薦技術(shù)比如:通過閃光燈、發(fā)出聲音、顯示圖標(biāo)或顯示消息來提醒你消息1、一個(gè)狀態(tài)條圖標(biāo)2、在拉伸的狀態(tài)欄窗口中顯示額外的信息和啟動(dòng)一個(gè)Application的Intent3、閃燈或LED4、電話震動(dòng)NotificationManager類通過獲取系統(tǒng)服務(wù)來獲取該對(duì)象:NotificationManagermNotificationManager=(NotificationManager)getSystemServic(Context.NOTIFICATION_SERVICE);publicvoidcancelAll()移除所有通知(只是針對(duì)當(dāng)前Context下的Notification)publicvoidcancel(intid)移除標(biāo)記為id的通知(只是針對(duì)當(dāng)前Context下的所有Notification)publicvoidnotify(Stringtag,intid,Notificationnotification)將通知加入狀態(tài)欄,標(biāo)簽為tag,標(biāo)記為idpublicvoidnotify(intid,Notificationnotification)將通知加入狀態(tài)欄,,標(biāo)記為idC++庫(kù)-開發(fā)環(huán)境的搭建android的NDK開發(fā)需要在linux下進(jìn)行(需把C/C++編寫的代碼生成能在arm上運(yùn)行的.so文件,linux系統(tǒng)下可進(jìn)行交叉編譯)。安裝android-ndk開發(fā)包(googleandroid官網(wǎng)下載,通過該開發(fā)包的工具才能將androidjni的C/C++的代碼編譯成庫(kù))。C++庫(kù)-開發(fā)環(huán)境的搭建將android-ndk的路勁加到環(huán)境變量PATH中:sudogedit/etc/environment環(huán)境變量立即生效:source/etc/environmentndk-bulid調(diào)用C++庫(kù)1.加載庫(kù):static{System.loadLibrary("庫(kù)名");}2.庫(kù)函數(shù)聲明:publicnative返回類型

函數(shù)名();3.編譯該工程,生成相應(yīng)的.class文件:根據(jù)相應(yīng)的.class文件生成.h文件用于庫(kù)開發(fā)。完整的庫(kù)文件名字是lib庫(kù)名.so編寫so庫(kù)C/C++代碼利用javah這個(gè)工具生成相應(yīng)的.h文件,然后根據(jù)這個(gè).h文件編寫相應(yīng)的C/C++代

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論