版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Android概述1、Android概述2、Android基本UI控件之13、Android基本UI控件之24、Android高級UI控件之15、Android高級UI控件之26、Android高級UI控件之37、Android高級UI控件之48、Android高級UI控件之59、Android本地存儲(chǔ)之110、Android本地存儲(chǔ)之211、Android本地存儲(chǔ)之312、Android本地存儲(chǔ)之413、服務(wù)與廣播之114、服務(wù)與廣播之215、服務(wù)與廣播之316、服務(wù)與廣播之417、Android網(wǎng)絡(luò)通信之118、Android網(wǎng)絡(luò)通信之219、Android網(wǎng)絡(luò)通信之320、Android網(wǎng)絡(luò)通信之4Android基本UI控件的使用Android高級UI控件的使用數(shù)據(jù)存儲(chǔ)服務(wù)與廣播網(wǎng)絡(luò)通信課程內(nèi)容Android概述03ABCD04020105QQDemoV1QQDemoV2QQDemoV3簡單音樂播放器世界杯球隊(duì)投票Why為什么選用Android?Android概述Why2019年2月搜索結(jié)果1284Android概述Why2020年2月搜索結(jié)果1241Android概述Why謀求一份薪水不錯(cuò)的工作1038Android概述Why自己抽空賺點(diǎn)小錢Android概述WhyAndroid概述Why自主創(chuàng)業(yè)Android概述Android一詞最早出現(xiàn)于法國作家利爾亞當(dāng)在1886年發(fā)表的科幻小說《未來夏娃》中。他將外表像人的機(jī)器起名為Android。Android的Logo是由伊琳娜-布洛克設(shè)計(jì)的,據(jù)說設(shè)計(jì)靈感來源于男女廁所門上的圖形符號,外加頭上兩根天線。Android名字與Logo的由來Android概述靈感2003年10月,AndyRubin等人創(chuàng)建Android公司,并組建Android團(tuán)隊(duì)。2005年8月17日,Google低調(diào)收購了成立僅22個(gè)月的高科技企業(yè)Android及其團(tuán)隊(duì)。安迪魯賓成為Google公司工程部副總裁,繼續(xù)負(fù)責(zé)Android項(xiàng)目。Android發(fā)展史Android概述2007年11月5日,谷歌公司正式向外界展示了這款名為Android的操作系統(tǒng),并且宣布建立一個(gè)全球性的聯(lián)盟組織,該組織由34家手機(jī)制造商、軟件開發(fā)商、電信運(yùn)營商以及芯片制造商共同組成,并與84家硬件制造商、軟件開發(fā)商及電信營運(yùn)商組成開放手持設(shè)備聯(lián)盟來共同研發(fā)改良Android系統(tǒng)。Google以Apache免費(fèi)開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。Android發(fā)展史Android概述2008年HTC發(fā)表了HTCDream手機(jī)(美國稱HTCT-MobileG1),這也是全球首款采用Android系統(tǒng)的智能手機(jī)。HTCDream配備著滑出式實(shí)體鍵盤,搭載3.17英寸屏幕,分辨率為320x480,16mm的厚度。第一款A(yù)ndroid智能手機(jī)發(fā)布Android概述Apple的AppStore是2008年跟著iPhone3G一起推出,因此也帶動(dòng)iOS手機(jī)的成熟,AndroidMarket則稍微晚了一點(diǎn),等到2008年10月22日才正式誕生,現(xiàn)在已改名成GooglePlayAndroidMarket首次亮相Android概述Google發(fā)布了首款自家手機(jī)Android概述一開始Google只專注在Android系統(tǒng),但隨著智能手機(jī)市場越來越成功,2010年1月5日Google與HTC合作,推出首款NexusOne手機(jī)2014年Google決定進(jìn)入智能手表市場,宣布推出針對穿戴式設(shè)備所設(shè)計(jì)的AndroidWear系統(tǒng),LGGWatch是首款搭載此系統(tǒng)的智能手表,之后還有SamsungGearLive與Moto360AndroidWear智能手表登場Android概述Android在正式發(fā)行之前,最開始擁有兩個(gè)內(nèi)部測試版本,并且以著名的機(jī)器人名稱來對其進(jìn)行命名,它們分別是:阿童木(AndroidBeta),發(fā)條機(jī)器人(Android1.0)Android版本的演進(jìn)Android概述由于涉及到版權(quán)問題,從2009年5月開始,Android操作系統(tǒng)改用甜點(diǎn)來作為版本代號,這些版本按照從C大寫字母開始的順序來進(jìn)行命名Android版本的演進(jìn)Android概述Android10開始,以甜點(diǎn)命名的“傳統(tǒng)”結(jié)束了Android版本的演進(jìn)Android概述Android版本開發(fā)代號API級別備注Android1.5Cupcake(紙杯蛋糕)APILevel3
Android1.6Donut(甜甜圈)APILevel4
Android2.0/2.1Eclair(松餅)APILevel5-7
Android2.2Froyo(凍酸奶)APILevel8
Android2.3Gingerbread(姜餅)APILevel9-10
Android3.0/3.1/3.2Honeycomb(蜂巢)APILevel11-13平板專用Android4.0IceCreamSandwich(冰激凌三明治)APILevel14-15
Android4.1/4.2/4.3JellyBean(果凍豆)APILevel16-18
Android4.4KitKat(巧克力棒)APILevel19-20
Android5.0/5.1Lolipop(棒棒糖)APILevel21-22
Android6.0Marshmallow(棉花糖)APILevel23
Android7.0/7.1Nougat(牛軋?zhí)牵〢PILevel24-25
Android8.0/8.1Oreo(奧利奧)APILevel26-27
Android9.0Pie(派)APILevel28
Android10AndroidQAPILevel29源代碼完全開放,便于開發(fā)人員更清楚的把握實(shí)現(xiàn)細(xì)節(jié),便于提高開發(fā)人員的技術(shù)水平,有利于開發(fā)出更具差異性的應(yīng)用。運(yùn)營商的大力支持,產(chǎn)業(yè)鏈條的熱捧。良好的盈利模式(3/7開),產(chǎn)業(yè)鏈條的各方:運(yùn)營商、制造商、獨(dú)立軟件生產(chǎn)商都可以獲得不錯(cuò)的利益。將移動(dòng)終端的評價(jià)標(biāo)準(zhǔn)從硬件向軟件轉(zhuǎn)變,極大的激發(fā)了軟件開發(fā)者的熱情。Android的源代碼遵循ApacheV2軟件許可,而不是通常的GPLv2許可。有利于商業(yè)開發(fā)。具有強(qiáng)大的Linux社區(qū)的支持。Android的優(yōu)勢Android概述安全性:在Android6之后,大為改善開發(fā)語言的變化風(fēng)險(xiǎn):GoogleIO2017宣布了Kotlin會(huì)成為Android官方開發(fā)語言(9行代碼索賠88億美元)碎片化問題:簡單的說就是Android平臺的差異化越來越大。設(shè)備多、品牌多、分辨率多、版本多。Android的隱患Android概述Android的系統(tǒng)架構(gòu)Android概述Dalvik、ART和JVMAndroid概述Dalvik(DVM)和ART都是適用于安卓平臺的虛擬機(jī),但不屬于Java虛擬機(jī)。在Dalvik下,應(yīng)用每次運(yùn)行的時(shí)候,字節(jié)碼都需要通過即時(shí)編譯器(justintime,JIT)轉(zhuǎn)換為機(jī)器碼。在ART中,應(yīng)用在第一次安裝的時(shí)候,字節(jié)碼就會(huì)預(yù)先編譯成機(jī)器碼,使其成為真正的本地應(yīng)用。這個(gè)過程叫做預(yù)編譯(AOT,Ahead-Of-Time)。校外資源https://////校內(nèi)vpn資源1/skills/85373752常用資源Android概述系統(tǒng)要求Windows(32-or64-bit)MacOSLinux安裝程序下載網(wǎng)址/任務(wù)1搭建Android開發(fā)環(huán)境Android概述設(shè)置AndroidStudio主題設(shè)置字體、自動(dòng)補(bǔ)全代碼方式取消自動(dòng)更新常用的快捷鍵:
Alt+Enter:問題自動(dòng)修正。Ctrl+Alt+Space:類名或接口名提示Ctrl+p:參數(shù)提示。Alt+I(xiàn)nsert:可以生成構(gòu)造器、Getter/Setter、重寫方法等。Ctrl+Alt+T:可以把代碼包在一塊內(nèi),如try/catch。任務(wù)2配置AndroidStudioAndroid概述AndroidStudio新建工程,HelloWorld,默認(rèn)設(shè)置創(chuàng)建模擬器,運(yùn)行。任務(wù)3開發(fā)第一個(gè)Android應(yīng)用Android概述Activity啟動(dòng)流程Android概述Android基本UI控件之一本次課程的要求Android基本UI控件應(yīng)知1、了解Android應(yīng)用的基本結(jié)構(gòu);2、了解常用的布局;3、了解簡單UI控件的使用。應(yīng)會(huì)1、會(huì)使用布局設(shè)計(jì)界面;2、會(huì)使用AndroidStudio集成開發(fā)環(huán)境;3、能完成簡單Android程序的開發(fā)?;仡櫳洗握n的HelloWorld項(xiàng)目在Activity中如何顯示界面的?R是什么?回顧與引入Android基本UI控件通過程序修改TextView中顯示的信息為什么是findViewById方法來查找組件所有的組件都是View的子類?試一試Android基本UI控件基本所有的高級UI控件都繼承自View類比如:TextView,Button,List,EditText,RadioButton,Checkbox一個(gè)View就是屏幕上一塊矩形區(qū)域,負(fù)責(zé)渲染和上面的事件處理,并可以設(shè)置該區(qū)域是否可見,是否可以獲取焦點(diǎn)等。那如果需要多個(gè)控件組合成一個(gè)復(fù)雜界面,該如何實(shí)現(xiàn)呢?視圖控件(View)Android基本UI控件ViewGroup的父類是View,作用是View的容器,負(fù)責(zé)對添加進(jìn)ViewGroup的這些View進(jìn)行布局管理,并且相互之間也可以添加。視圖容器控件(ViewGroup)Android基本UI控件自從AndroidStudio2.3起,ConstraintLayout布局成為用戶創(chuàng)建新的Activity時(shí)默認(rèn)根布局,是相對布局(RelativeLayout)的替換版本。通過使用該布局,可以極大的減少復(fù)雜布局的嵌套深度,提升運(yùn)行速度。約束布局(ConstraintLayout)Android基本UI控件自從AndroidStudio2.3起,ConstraintLayout布局成為用戶創(chuàng)建新的Activity時(shí)默認(rèn)根布局,是相對布局(RelativeLayout)的替換版本。通過使用該布局,可以極大的減少復(fù)雜布局的嵌套深度,提升運(yùn)行速度。約束布局(ConstraintLayout)Android基本UI控件點(diǎn)擊按鈕,更換背景圖片Android基本UI控件課堂練習(xí)Android基本UI控件提交課堂作業(yè)LinearLayout是一種Android中最常用的布局之一,它將自己包含的子元素按照一個(gè)方向進(jìn)行排列。方向有兩種:水平或豎直
android:orientation=“horizontal"android:orientation="vertical"線性布局(LinearLayout)Android基本UI控件如果無子控件的View設(shè)置此控件,表示其內(nèi)容的重力傾向,即常說的對齊方式;對于有子控件的View,則設(shè)置其子控件的重力傾向。layout_gravity的使用android:gravity屬性Android基本UI控件表格布局就是以表格形式來放置UI組件的一種布局,通過行和列來標(biāo)識一個(gè)組件的位置。其實(shí)Android的表格布局跟HTML中的表格布局非常類似,TableRow就像HTML表格的<tr>標(biāo)記。自己動(dòng)手實(shí)現(xiàn)右圖的界面表格布局(TableLayout)Android基本UI控件網(wǎng)格布局(GridLayout)是在Android4.0SDK之后引入的布局樣式,GridLayout可以用來做一個(gè)象TableLayout這樣的布局樣式,但其性能及功能都要比TableLayout要好,比如GridLayout的布局中的單元格可以跨越多行,且渲染速度也比TableLayout要快。自己動(dòng)手實(shí)現(xiàn)右圖的界面網(wǎng)格布局(GridLayout)Android基本UI控件最基本的Android應(yīng)用程序組件,應(yīng)用程序中,一個(gè)活動(dòng)通常就是一個(gè)單獨(dú)的屏幕。每一個(gè)活動(dòng)都被實(shí)現(xiàn)為一個(gè)獨(dú)立的類,并且從活動(dòng)基類中繼承而來,活動(dòng)類將會(huì)顯示由視圖控件組成的用戶接口,并對事件做出響應(yīng)。Activity活動(dòng)Android基本UI控件Activity活動(dòng)Android基本UI控件AppCompatActivity是support.v7包里面用來替代Activity的組件,是Activity的子類,主要用來兼容Android5.0之后的新特性。AppCompatActivity與ActivityAndroid基本UI控件AndroidManifest.xml是每一個(gè)應(yīng)用都需要的文件,位于應(yīng)用根目錄下,它描述了程序包的全局變量,包括暴露的應(yīng)用組件(activities,services等)和為每個(gè)組件的實(shí)現(xiàn)類,什么樣的數(shù)據(jù)可以操作,以及在什么地方運(yùn)行。AndroidManifest.xml文件Android基本UI控件創(chuàng)建工程QQDemoV1,然后新建LoginActivity復(fù)制圖片到相應(yīng)目錄設(shè)置string.xml,完成界面搭建任務(wù)1登錄界面的搭建Android基本UI控件Android基本UI控件之二本次課程的要求Android基本UI控件應(yīng)知:了解Android應(yīng)用的基本結(jié)構(gòu);了解常用UI組件的使用;了解Selector、style以及Intent的相關(guān)知識應(yīng)會(huì)會(huì)使用布局和簡單組件設(shè)計(jì)界面;會(huì)使用Selector、style美化界面;會(huì)使用Intent實(shí)現(xiàn)跳轉(zhuǎn);能完成簡單Android程序的開發(fā)回顧上次課完成的任務(wù)1能否將界面設(shè)計(jì)的更美觀一點(diǎn)?回顧與引入Android基本UI控件任務(wù)2美化界面Android基本UI控件Selector(選擇器),在Android中常常用來作控件的背景,這樣做的好處是省去了用代碼控制實(shí)現(xiàn)控件在不同狀態(tài)下變換不同的背景顏色或圖片。它分為兩種:Color-Selector:就是顏色狀態(tài)列表,可以跟color一樣使用,顏色會(huì)隨著組件的狀態(tài)而改變。Drawable-Selector:是背景圖狀態(tài)列表,可以跟圖片一樣使用,背景會(huì)根據(jù)組件的狀態(tài)變化而變化。SelectorAndroid基本UI控件注意:作為drawable資源使用時(shí),一般放于drawable目錄下,item必須指定android:drawable屬性;作為color資源使用時(shí),則放于color目錄下,item必須指定android:color屬性。提交課堂練習(xí)課堂練習(xí)Android基本UI控件提交課堂練習(xí)課堂練習(xí)Android基本UI控件樣式(Style)是指為View或Activity指定外觀和格式的屬性集合。樣式以XML文件的形式進(jìn)行定義,可以指定高度、填充、字體顏色、字號、背景色等許多屬性。與網(wǎng)頁設(shè)計(jì)中層疊樣式表的原理類似,通過它可以將設(shè)計(jì)與內(nèi)容有效分離。比如在上面的例子中,我們需要所有的按鈕都有同樣的外觀,就可以將這些設(shè)置為樣式。StyleAndroid基本UI控件<stylename="BtnStyle">
<itemname="android:background">@drawable/btn_bg_selector</item>
<itemname="android:textColor">@color/btn_color_selector</item>
</style>主題(Theme)是指對整個(gè)應(yīng)用或Activity使用的樣式,而不是對單個(gè)View(如上例所示)應(yīng)用的樣式。以主題形式應(yīng)用樣式時(shí),Activity或應(yīng)用中的每個(gè)視圖都將應(yīng)用其支持的每個(gè)樣式屬性。注意:我們?nèi)绻菍蝹€(gè)視圖應(yīng)用樣式,則在布局文件中對指定的View元素(如Button)添加style屬性。如果要對整個(gè)Activity或應(yīng)用來應(yīng)用樣式,則需要在AndroidManifest.xml文件中,為activity或application元素添加android:theme屬性。主題(Theme)Android基本UI控件課堂作業(yè)Android基本UI控件任務(wù)3實(shí)現(xiàn)忘記密碼功能Android基本UI控件意圖(Intent)是一種運(yùn)行時(shí)綁定(run-timebinding)機(jī)制,它能在程序運(yùn)行過程中連接兩個(gè)不同的組件。通過Intent,你的程序可以向Android表達(dá)某種請求或者意愿,Android會(huì)根據(jù)意愿的內(nèi)容選擇適當(dāng)?shù)慕M件來完成請求,使實(shí)現(xiàn)者和調(diào)用者完全解耦。簡單來說,就是當(dāng)我們在Activity1中需要啟動(dòng)Activity2時(shí),并不是直接創(chuàng)建Activity2的對象,然后調(diào)用其方法,而是將這個(gè)想法通過Intent傳遞給Android系統(tǒng),由Android系統(tǒng)完成。意圖(Intent)Android基本UI控件component(組件):指明了將要處理的組件(如Activity、Service等),所有的組件信息都被封裝在一個(gè)ComponentName對象之中,這些組件都必須在AndroidManifest.xml文件中的“<application>”中注冊;action(動(dòng)作):設(shè)置該Intent會(huì)觸發(fā)的操作類型,可以通過setAction()方法進(jìn)行設(shè)置,也可以在AndroidManifest.xml中組件節(jié)點(diǎn)中的<intent-filter>節(jié)點(diǎn)指定一個(gè)Action用于標(biāo)識該組件所能接受的“動(dòng)作”。Intent主要屬性Android基本UI控件category(類別):對執(zhí)行操作的類別進(jìn)行描述,可以通過addCategory()方法設(shè)置多個(gè)類別,也可以在AndroidManifest.xml中組件節(jié)點(diǎn)中的<intent-filter>節(jié)點(diǎn)中作為<intent-filter>子元素來聲明的。data(數(shù)據(jù)):描述Intent所操作數(shù)據(jù)的URI及類型,可以通過setData()進(jìn)行設(shè)置,不同的操作對應(yīng)著不同的Data。Intent主要屬性Android基本UI控件顯示調(diào)用:直接指定調(diào)用的Activity隱式調(diào)用:不明確指定啟動(dòng)哪個(gè)Activity,而是設(shè)置Action、Data、Category,讓系統(tǒng)來篩選出合適的Activity。篩選是根據(jù)<intent-filter>來篩選。Intent的顯示調(diào)用和隱式調(diào)用Android基本UI控件參照書本任務(wù)2.3的相關(guān)接收,實(shí)現(xiàn)忘記密碼界面。課堂作業(yè)Android基本UI控件Android高級UI控件之一本次課程的要求Android高級UI控件應(yīng)知:了解Adapter的工作原理;了解ListView、Spinner等控件的使用應(yīng)會(huì)會(huì)使用基本的適配器;會(huì)使用ListView、Spinner等顯示控件;能完成簡單Android程序的開發(fā)回顧上一章的內(nèi)容能否使用基本UI控件實(shí)現(xiàn)右圖界面?回顧與引入Android高級UI控件適配器控件(AdapterView)繼承自ViewGroup(一個(gè)包含其他子視圖的容器),需要通過特定的適配器將其中的子控件與特定數(shù)據(jù)綁定起來,并以合適的方式顯示并操作一些數(shù)據(jù)(數(shù)組、鏈表、數(shù)據(jù)庫等)。常用的適配器控件有Spinner、ListView、GridView、Gallery、ViewPager。適配器控件Android高級UI控件適配器(Adapter)是連接后端數(shù)據(jù)和前端顯示的適配器接口,是數(shù)據(jù)和UI(View)之間一個(gè)重要的紐帶。Adapter負(fù)責(zé)創(chuàng)建用來表示每一個(gè)條目的View組件,并提供對底層數(shù)據(jù)的訪問。適配器(Adapter)Android高級UI控件ArrayAdapter:適合用在顯示純文本的場合SimpleAdapter:適合用在圖文混排場合CursorAdapter:適合用在由Cursor提供數(shù)據(jù)的場合BaseAdapter:適合功能自定義的場合常用的適配器Android高級UI控件ArrayAdapter:主要用于純文本數(shù)據(jù)的顯示。將集合中每個(gè)元素的值轉(zhuǎn)化為字符串,填充到不同的TextView對象中,再顯示到適配器控件中。Spinner(下拉列表控件),可以將多個(gè)View組件以下拉列表的形式組織起來。它的數(shù)據(jù)來源于與之關(guān)聯(lián)的適配器,可通過對下拉事件和下拉點(diǎn)擊事件的監(jiān)聽,實(shí)現(xiàn)對不同情況的處理ArrayAdapter與Spinner結(jié)合使用Android高級UI控件ArrayAdapter與Spinner結(jié)合使用Android高級UI控件小結(jié)Android高級UI控件獲取適配器控件(Spinner)findViewById(),定義數(shù)據(jù)源數(shù)組創(chuàng)建ArrayAdapter對象。上下文對象context用來顯示信息的行布局id-R.layout.support_simple_spinner_dropdown_item數(shù)據(jù)源數(shù)組通過調(diào)用適配器控件(Spinnr)的setAdapter()方法,為其指定關(guān)聯(lián)的適配器對象提交課堂練習(xí)課堂練習(xí)Android高級UI控件 SimpleAdapter:主要用于在適配器控件中顯示復(fù)雜的View對象。將集合對象中單個(gè)對象中的不同數(shù)據(jù)項(xiàng),填充到View中的不同控件中,再顯示到適配器控件中。ListView(列表視圖控件):可以將一些零散的控件以列表的形式組織起來,并為其中的列表項(xiàng)添加事件監(jiān)聽。SimpleAdapter與ListView結(jié)合使用Android高級UI控件SimpleAdapter與ListView結(jié)合使用Android高級UI控件小結(jié)Android高級UI控件獲取適配器控件(ListView)findViewById(),定義數(shù)據(jù)源多個(gè)數(shù)組創(chuàng)建SimpleAdapter對象。上下文對象context用來顯示信息的行布局id自定義的布局文件R.layout.item_layout數(shù)據(jù)源List<HashMap<String,Object>>映射關(guān)系控件和數(shù)據(jù)的對應(yīng)關(guān)系調(diào)用適配器控件(ListView)的setAdapter()方法課堂作業(yè)Android高級UI控件提交課堂練習(xí)BaseAdapter:是以上適配器類的公共基類,可以實(shí)現(xiàn)上面適配器的所有功能,且可以通過自定義Adapter來定制每個(gè)條目的外觀和功能,具有較高的靈活性。在實(shí)際應(yīng)用中,對于較為復(fù)雜的界面,我們通常直接使用BaseAdapterBaseAdapter與ListView結(jié)合使用Android高級UI控件BaseAdapter與ListView結(jié)合使用Android高級UI控件修改工程名為“QQDemoV2”新建Activity,QQMessageActivity實(shí)現(xiàn)activity_qqmessage.xml實(shí)現(xiàn)步驟一Android高級UI控件實(shí)現(xiàn)ListView的條目布局,item_qqmessage.xml實(shí)現(xiàn)步驟二Android高級UI控件新建實(shí)體類QQMessageBean。請問實(shí)體類的作用是什么?實(shí)現(xiàn)步驟三Android高級UI控件新建適配器類QQMessageAdapter”,繼承自BaseAdapter添加成員變量data和contextprivateList<QQMessageBean>data;privateContextcontext;重寫相關(guān)成員方法實(shí)現(xiàn)步驟四Android高級UI控件為QQMessageAdapter添加帶參數(shù)的構(gòu)造器方法,初始化data和context。切換到QQMessageActivity.java文件,添加模擬生成消息數(shù)據(jù)的方法創(chuàng)建適配器對象,并添加到LisetView對象上實(shí)現(xiàn)步驟五Android高級UI控件提交課堂作業(yè)3.5ListView工作原理Android高級UI控件改寫getView方法,利用復(fù)用技術(shù)優(yōu)化ListView顯示。提交相關(guān)代碼截圖實(shí)現(xiàn)步驟六Android高級UI控件Android高級UI控件之二自學(xué)GridView控件的相關(guān)知識,并實(shí)現(xiàn)右圖的界面。相關(guān)資源在群文檔,練習(xí)課資源(1)中練習(xí)課Android高級UI控件本次課程的要求Android高級UI控件應(yīng)知:了解Adapter的工作原理;ExpandableListView等控件的使用應(yīng)會(huì)會(huì)使用基本的適配器;會(huì)使用ExpandableListView顯示控件能完成簡單Android程序的開發(fā)回顧上一節(jié)的內(nèi)容對于聯(lián)系人這類具有分組的顯示要求,我們應(yīng)該用什么控件呢?回顧與引入Android高級UI控件可擴(kuò)展下拉列表(ExpandableListView)本質(zhì)上就是由兩個(gè)具有主從關(guān)系的ListView組成的,所以ListViewAdapter中存在的方法,ExpandableListViewAdapter必定存在,只是需要針對group和child分別重寫新增加了兩個(gè)方法,分別是hasStableIds()和isChildSelectable(intgroupPosition,intchildPosition)ExpandableListViewAndroid高級UI控件hasStableIds():用來判斷ExpandableListView內(nèi)容id是否有效(返回true或者false),系統(tǒng)會(huì)跟據(jù)id來確定當(dāng)前顯示哪條內(nèi)容。isChildSelectable(intgroupPosition,intchildPosition):用來判斷某個(gè)Group中的child是否可選。ExpandableListViewAndroid高級UI控件實(shí)現(xiàn)聯(lián)系人Activity界面activity_qqcontact.xml實(shí)現(xiàn)過程之一Android高級UI控件實(shí)現(xiàn)ExpandableListView組布局item_contact_group.xml實(shí)現(xiàn)過程之二Android高級UI控件實(shí)現(xiàn)ExpandableListView子布局item_contact_child.xml實(shí)現(xiàn)過程之三Android高級UI控件新建實(shí)體類QQContactBean實(shí)現(xiàn)過程之四Android高級UI控件privateStringname;privateintimg;privateStringonlinemode;privateStringnewaction;新建適配器類QQContactAdapter,繼承自BaseExpandableListAdapter。定義三個(gè)成員變量實(shí)現(xiàn)過程之五Android高級UI控件privateList<String>groupdata;
privateMap<String,List<QQContactBean>>childdata;
privateContext
context;按下“Alt+Enter”快捷鍵,自動(dòng)實(shí)現(xiàn)相應(yīng)的10個(gè)抽象方法框架,然后依次實(shí)現(xiàn)相關(guān)代碼為QQContactAdapter添加帶參數(shù)的構(gòu)造器方法,初始化groupdata,childdata和context切換到QQContactActivity.java文件,添加成員變量以及模擬生成消息數(shù)據(jù)的方法initialData()找到ExpandableListView對象,創(chuàng)建并設(shè)置適配器,完成顯示功能實(shí)現(xiàn)過程之六Android高級UI控件Android高級UI控件之三本次課程的要求Android高級UI控件應(yīng)知:了解Android應(yīng)用的基本結(jié)構(gòu);了解Fragment和ViewPager;應(yīng)會(huì)會(huì)使用Fragment和ViewPager;會(huì)使用AndroidStudio集成開發(fā)環(huán)境;能完成側(cè)滑效果回顧上一節(jié)的內(nèi)容為了操作方便,我們能不能將多個(gè)界面集成到一個(gè)Activity中呢?回顧與引入Android高級UI控件Fragment是Android3.0引入的新技術(shù),其目的是為了解決不同屏幕分辯率的動(dòng)態(tài)和靈活UI設(shè)計(jì)問題。Google將Activity中的UI控件進(jìn)行分組和模塊化管理,大大提高了代碼重用性和改善用戶體驗(yàn),而這些分組后的UI控件就是Fragment。一個(gè)Activity頁面中可以包含多個(gè)Fragment模塊,而同一個(gè)Fragment模塊也可以被多個(gè)Activity使用。FragmentAndroid高級UI控件ViewPager是Android擴(kuò)展包v4包中的類,這個(gè)類可以讓用戶左右切換當(dāng)前的ViewViewPager類直接繼承了ViewGroup類,所有它是一個(gè)容器類,可以在其中添加其他的View類。ViewPager屬于適配器控件,其使用方式與ListView等控件的使用方式一樣,需要為ViewPager設(shè)置PagerAdapter來完成頁面和數(shù)據(jù)的綁定。
ViewPagerAndroid高級UI控件ViewPager相關(guān)適配器Android高級UI控件為了簡化程序的編寫,Android提供了專門的適配器來讓ViewPager與Fragment一起工作。FragmentPagerAdapter:會(huì)將每一個(gè)生成的Fragment都保存在內(nèi)存之中,切換速度快,但占用資源較多,適用于所需Fragment數(shù)量不多且內(nèi)容信息變化不大的情況FragmentStatePagerAdapter:每次只保留當(dāng)前顯示的Fragment,當(dāng)Fragment離開視線后,就會(huì)被清除,釋放其資源,適用于Fragment數(shù)量較多且內(nèi)容變化較大的情況實(shí)現(xiàn)集成主界面activity_main.xml實(shí)現(xiàn)過程之一Android高級UI控件新建三個(gè)selector文件tab_contact_selector.xmltab_message_selector.xmltab_pulgin_selector.xml修改布局文件activity_main.xml中的rbMessage、rbContact和rbPulgin的drawableTop屬性值分別為tab_message_selector、tab_contact_selector和tab_pulgin_selector實(shí)現(xiàn)過程之二Android高級UI控件新建QQMessageFragment,繼承自android.support.v4.app.Fragment參照QQMessageActivity,改寫QQMessageFragment,注意,Activity中onCreate方法中的代碼要對應(yīng)到Fragment中的onCreateView方法中。同理實(shí)現(xiàn)QQContactFragment實(shí)現(xiàn)過程之三Android高級UI控件新建QQFragmentPagerAdapter,繼承自FragmentPagerAdapter重寫QQFragmentPagerAdapter中的相關(guān)方法。實(shí)現(xiàn)過程之四Android高級UI控件切換到MainActivity.java文件,創(chuàng)建QQFragmentPagerAdapter對象,并將其設(shè)置到ViewPager中實(shí)現(xiàn)過程之五Android高級UI控件vp=(ViewPager)findViewById(R.id.viewPager);
QQFragmentPagerAdapteradapter=newQQFragmentPagerAdapter(getSupportFragmentManager(),
getFragmentsList());
vp.setAdapter(adapter);修改LoginActivity.java的代碼,當(dāng)用戶點(diǎn)擊“登錄”按鈕后,跳轉(zhuǎn)到MainActivity窗口。檢查滑動(dòng)功能是否正常,點(diǎn)擊相應(yīng)的單選按鈕,是否能切換到相應(yīng)的界面?如何解決?實(shí)現(xiàn)過程之六Android高級UI控件Android高級UI控件之四本次課程的要求Android高級UI控件應(yīng)知:了解Android應(yīng)用的基本結(jié)構(gòu);了解自定義控件的設(shè)計(jì)過程應(yīng)會(huì)1、會(huì)自定義控件;2、會(huì)設(shè)計(jì)自定義的屬性;3、能完成圓形頭像的功能回顧上一節(jié)的內(nèi)容這里我們用ImageView控件來顯示頭像,但是方型的頭像框不夠美觀,我們能不能換成其它形狀的呢?比如圓形?回顧與引入Android高級UI控件圓形頭像如何實(shí)現(xiàn)圓形頭像Android高級UI控件圖像混合圓形頭像如何實(shí)現(xiàn)圖像混合?paint.setXfermode()在AndroidSDK的Paint類中有一個(gè)很重要的方法setXfermode,這個(gè)方法用于設(shè)置圖像的混合模式。Xfermode就是圖像的混合模式,它有三個(gè)子類:AvoidXfermode:已過時(shí)PixelXorXfermode:已過時(shí)PorterDuffXfermode:該類有一個(gè)含參的構(gòu)造方法PorterDuffXfermode(PorterDuff.Modemode)XfermodeAndroid高級UI控件在AndroidSDK的Paint類中有一個(gè)很重要的方法setXfermode,這個(gè)方法用于設(shè)置圖像的混合模式。Xfermode就是圖像的混合模式,它有三個(gè)子類:AvoidXfermode:已過時(shí)PixelXorXfermode:已過時(shí)PorterDuffXfermode:該類有一個(gè)含參的構(gòu)造方法PorterDuffXfermode(PorterDuff.Modemode)PorterDuff.ModeAndroid高級UI控件ProterDuff是兩個(gè)人名的組合:TomasProter和TomDuff.他們是最早在SIGGRAPH上提出圖形混合概念的大神級人物PorterDuff.ModeAndroid高級UI控件新建類MyCircleImageView,繼承自AppCompatImageView實(shí)現(xiàn)構(gòu)造器方法,注意,這里我們需要在布局文件中使用我們的自定義控件,所以,需要使用帶兩個(gè)參數(shù)的構(gòu)造器方法實(shí)現(xiàn)過程之一Android高級UI控件publicMyCircleImageView(Context
context,AttributeSet
attrs){super(context,attrs);}定義所需的成員變量在構(gòu)造器方法中對相應(yīng)的成員變量進(jìn)行初始化實(shí)現(xiàn)過程之二Android高級UI控件
privateContextmContext;privateBitmapmask;privatePaintpaint;privateintmBorderWidth=10;privateintmBorderColor=Color.parseColor("#f2f2f2");編寫createOvalBitmap方法,用來生成圓形的蒙版完成后,將代碼截圖發(fā)到釘釘中實(shí)現(xiàn)過程之三Android高級UI控件編寫drawBorder方法,用來繪制頭像框的邊框完成后,將代碼截圖發(fā)到釘釘中實(shí)現(xiàn)過程之四Android高級UI控件重寫onDraw方法,實(shí)現(xiàn)將原圖與圓形蒙版混合,并繪制邊框打開布局文件activity_qqmessage.xml,將其中的ImageView替換為MyCircleImageView完成后,界面截圖發(fā)送到釘釘中實(shí)現(xiàn)過程之五Android高級UI控件MyCircleImageView的邊框?qū)挾群瓦吙蝾伾壳岸际枪潭ǖ膒rivateintmBorderWidth=10;privateintmBorderColor=Color.parseColor("#f2f2f2");那么,有沒有辦法讓用戶能夠像使用Adroid自帶的控件一樣,用XML給控件設(shè)置屬性呢?declare-styleable如何為我們的控制定制屬性Android高級UI控件在res/valuse/文件夾下創(chuàng)建attrs.xml文件實(shí)現(xiàn)過程之六Android高級UI控件<?xmlversion="1.0"encoding="utf-8"?><resources><declare-styleable
name="MyCircleImageAttr"><attrname="border_width"format="dimension"/><attrname="border_color“format="color"/></declare-styleable></resources>
reference:參考某一資源ID,比如圖片資源的引用。 color:顏色值,比如字體顏色。 dimension:尺寸值,比如寬度和高度。在布局文件activity_qqmessage.xml中,設(shè)置屬性實(shí)現(xiàn)過程之七Android高級UI控件1:表示我們?yōu)閷傩远x的前綴,類似于“android:”;2為項(xiàng)目的包名;3為自定義屬性的設(shè)置的值。修改MyCircleImageView.java文件中的構(gòu)造器方法的相關(guān)代碼實(shí)現(xiàn)過程之八Android高級UI控件TypedArraya=context.obtainStyledAttributes(attrs,R.styleable.MyCircleImageAttr);mBorderColor=a.getColor(R.styleable.MyCircleImageAttr_border_color,Color.parseColor("#f2f2f2"));mBorderWidth=a.getDimensionPixelSize(R.styleable.MyCircleImageAttr_border_width,10);a.recycle();px也就是屏幕上的實(shí)際像素dpi-“dotsperinch”的縮寫,“每英寸的像素?cái)?shù)”,像素密度單位dpdensity-independentpixel,即”密度無關(guān)像素”。1dp為160dpi時(shí)的一個(gè)像素大小spscale-independentpixel,即”獨(dú)立比例像素”,sp主要用作字體的單位dp、px和spAndroid高級UI控件sp*dpi/160=pxdp*dpi/160=px160dpi320dpi修改計(jì)算邊框?qū)挾鹊拇a實(shí)現(xiàn)過程之九Android高級UI控件TypedArraya=context.obtainStyledAttributes(attrs,R.styleable.MyCircleImageAttr);mBorderColor=a.getColor(R.styleable.MyCircleImageAttr_border_color,Color.parseColor("#f2f2f2"));floatdensity=context.getResources().getDisplayMetrics().density;mBorderWidth=a.getDimensionPixelSize(R.styleable.MyImageViewAttr_border_width,(int)(10*density));a.recycle();完成界面中所有頭像框的替換,并上傳運(yùn)行截圖和項(xiàng)目代碼。課后作業(yè)Android高級UI控件Android高級UI控件之五本次課程的要求Android高級UI控件應(yīng)知:了解Android應(yīng)用的基本結(jié)構(gòu);了解菜單和對話框的使用;應(yīng)會(huì)會(huì)使用菜單和對話框;會(huì)使用AndroidStudio集成開發(fā)環(huán)境;能完成簡單Android程序的開發(fā)回顧上一節(jié)的內(nèi)容在應(yīng)用軟件中我們往往要借助菜單和對話框來進(jìn)行人機(jī)交互,那么,在Android中如何創(chuàng)建我們自己的菜單和對話框呢?回顧與引入Android高級UI控件選項(xiàng)菜單上下文菜單菜單的分類Android高級UI控件選項(xiàng)菜單(OptionsMenu):通過Menu按鈕調(diào)用菜單onCreateOptionsMenu方法:初始化選項(xiàng)菜單,該方法只在第一次顯示菜單時(shí)調(diào)用,如果需要每次顯示菜單時(shí)更新菜單項(xiàng),則需要重寫onPrepareOptionsMenu方法。返回值必須為true,否則選項(xiàng)菜單不會(huì)顯示onOptionsItemSelected方法:當(dāng)選項(xiàng)菜單中某個(gè)選項(xiàng)被調(diào)用時(shí)調(diào)用該方法onPrepareOptionsMenu方法:為程序準(zhǔn)備選項(xiàng)菜單,每次選項(xiàng)菜單顯示前都會(huì)調(diào)用該方法,可以它修改菜單的內(nèi)容,返回值必須為true,否則選項(xiàng)菜單不會(huì)顯示選項(xiàng)菜單Android高級UI控件在strings.xml中添加相應(yīng)的文字信息在res/menu/文件夾下新建munu_login.xml文件重寫LoginActivity中的onCreateOptionsMenu方法實(shí)現(xiàn)過程Android高級UI控件上下文菜單(ContextMenu):上下文菜單不同于選項(xiàng)菜單,選項(xiàng)菜單服務(wù)于Activity,而向上下文菜單是注冊到某個(gè)View對象上的,默認(rèn)情況下用戶可以通過長按(約2秒)相應(yīng)View就可以呼出上下文菜單。onCreateContextMenu方法:創(chuàng)建上下文菜單,每次呼出菜單時(shí)調(diào)用registerForContextMenu方法:為指定的視圖注冊上下文菜單onContextItemSelected方法:當(dāng)上下文菜單中某個(gè)選項(xiàng)被調(diào)用時(shí)調(diào)用該方法上下文菜單Android高級UI控件在strings.xml中添加相應(yīng)的文字信息在res/menu/文件夾下新建munu_message.xml文件重寫QQMessageFragment中的onCreateContextMenu方法將上下文菜單關(guān)聯(lián)到ListView控件上實(shí)現(xiàn)過程Android高級UI控件重寫QQMessageFragment中的onContextItemSelected方法分別定義goTop方法和deleteMsg方法來實(shí)現(xiàn)相應(yīng)的功能這兩個(gè)方法中的代碼有一大部分重復(fù),為什么不直接放在onContextItemSelected方法中?實(shí)現(xiàn)上下文菜單的點(diǎn)擊功能Android高級UI控件重寫QQMessageFragment中的onOptionsItemSelected方法使用AlertDialog實(shí)現(xiàn)關(guān)于和退出確認(rèn)功能實(shí)現(xiàn)選項(xiàng)菜單的點(diǎn)擊功能Android高級UI控件一般對話框列表對話框單選按鈕對話框多選按鈕對話框自定義對話框?qū)υ捒駻ndroid高級UI控件setTitle方法:為對話框設(shè)置標(biāo)題setIcon方法:為對話框設(shè)置圖標(biāo)setMessage方法:為對話框設(shè)置內(nèi)容setView方法
:給對話框設(shè)置自定義樣式setItems方法
:設(shè)置對話框要顯示的一個(gè)list,一般用于顯示幾個(gè)命令時(shí)setMultiChoiceItems方法
:用來設(shè)置對話框顯示一系列的復(fù)選框?qū)υ捒駻lertDialog.BuilderAndroid高級UI控件setNeutralButton方法
:普通按鈕setPositiveButton方法
:給對話框添加"Yes"按鈕setNegativeButton方法
:對話框添加"No"按鈕create方法:創(chuàng)建對話框show方法:顯示對話框?qū)υ捒駻lertDialog.BuilderAndroid高級UI控件對話框AlertDialog.BuilderAndroid高級UI控件Android本地存儲(chǔ)之一本次課程的要求Android本地存儲(chǔ)應(yīng)知:了解SharedPreferences存儲(chǔ);了解基本SQL語句的使用;應(yīng)會(huì)會(huì)使用SharedPreferences存放配置信息;會(huì)使用基本SQL語句實(shí)現(xiàn)數(shù)據(jù)庫的增刪改查;能完成簡單Android程序的開發(fā)回顧上一章的內(nèi)容程序代碼+數(shù)據(jù)就構(gòu)成了我們的軟件,那么,在Android中我們是如何存儲(chǔ)數(shù)據(jù)呢?回顧與引入Android本地存儲(chǔ)系統(tǒng)配置SharedPreferences文件存儲(chǔ)數(shù)據(jù)庫(SQLite)內(nèi)容提供者(ContentProvider)Android本地存儲(chǔ)形式Android本地存儲(chǔ)采用鍵值對的方式存放信息主要用來存放一些簡單的配置信息SharedPreferencesAndroid本地存儲(chǔ)SharedPreferences寫入步驟Android本地存儲(chǔ)打開Preference,系統(tǒng)自動(dòng)判斷,如存在就打開,否則創(chuàng)建SharedPreferencessettings=getSharedPreferences("setting",MODE_PRIVATE);使其處于編輯狀態(tài)SharedPreferences.Editoreditor=settings.edit();存放數(shù)據(jù)editor.putString(“name”,“sohu”);完成提交mit();SharedPreferences讀取步驟Android本地存儲(chǔ)打開Preference
SharedPreferencessettings=getSharedPreferences("setting",MODE_PRIVATE);取出數(shù)據(jù)Stringname=settings.getString(“name”,“”);將QQDemoV2改名為QQDemoV3用戶單擊“登錄”按鈕時(shí),如勾選了“記住密碼”,則將輸入QQ號碼和密碼記錄在SharedPreferences中,然后跳轉(zhuǎn)到MainActivity當(dāng)用戶下次打開應(yīng)用時(shí),自動(dòng)填入QQ號碼和密碼實(shí)現(xiàn)過程記住密碼功能Android本地存儲(chǔ)回顧基本SQL語句Android本地存儲(chǔ)安裝SQLiteExpertSQLite,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng);主要面向嵌入式系統(tǒng),占用資源少,通常只需幾百K內(nèi)存;支持主流開發(fā)語言,運(yùn)行速度快。
回顧基本SQL語句Android本地存儲(chǔ)以系統(tǒng)登錄為例,分析我們應(yīng)該如何記錄數(shù)據(jù)表設(shè)計(jì)表QQ_Login查看創(chuàng)建QQ_Login表的SQL語句
回顧基本SQL語句Android本地存儲(chǔ)分析聯(lián)系人界面中聯(lián)系人顯示的信息,看看我們還需要哪些字段?為QQ_Login表添加字段一張表中有成千上萬條記錄,我們?nèi)绾挝ㄒ淮_定一條記錄呢?主鍵
回顧基本SQL語句Android本地存儲(chǔ)如何往QQ_Login表中添加數(shù)據(jù)insert語句如何查詢表中的數(shù)據(jù)select語句如何修改指定記錄的信息update語句如何刪除指定的記錄delete語句
回顧基本SQL語句Android本地存儲(chǔ)我們已經(jīng)創(chuàng)建了QQ_Login表,能否支持聯(lián)系人功能的實(shí)現(xiàn)?比如顯示劉備的所有聯(lián)系人?QQ_Login表描述了一個(gè)聯(lián)系人的信息,但并沒有描述聯(lián)系人之間的關(guān)系即誰是誰的聯(lián)系人那如何解決?創(chuàng)建QQ_Contact表
Android本地存儲(chǔ)之二本次課程的要求Android本地存儲(chǔ)應(yīng)知:了解SQLite數(shù)據(jù)庫;了解如何使用程序訪問SQLite數(shù)據(jù)庫;應(yīng)會(huì)會(huì)使用SQLiteOpenHelper創(chuàng)建和管理數(shù)據(jù)庫;能實(shí)現(xiàn)登錄功能;能完成簡單Android程序的開發(fā)上一節(jié)課我們使用SQL語句在SQLiteExpert中創(chuàng)建和訪問了數(shù)據(jù)庫那么在Android程序中,我們該如何訪問數(shù)據(jù)庫?回顧與引入Android本地存儲(chǔ)SQLiteDatabase用于管理和操作SQLite數(shù)據(jù)庫,幾乎所有的數(shù)據(jù)庫操作,最終都將由這個(gè)類完成。該類封裝了一些操作數(shù)據(jù)庫的API,支持CRUD操作。execSQL():執(zhí)行insert、delete、update和CREATETABLE之類有更改行為的SQL語句;rawQuery()方法可以執(zhí)行select語句訪問SQLite數(shù)據(jù)庫Android本地存儲(chǔ)在Android系統(tǒng),為我們提供了一個(gè)名為SQLiteOpenHelper的類,該類用于對數(shù)據(jù)庫版本進(jìn)行管理,該類是一個(gè)抽象類,必須繼承它并實(shí)現(xiàn)三個(gè)方法:構(gòu)造器方法:默認(rèn)情況下需要四個(gè)參數(shù):上下文環(huán)境(例如,一個(gè)Activity)、數(shù)據(jù)庫名字、可選的游標(biāo)工廠(通常是null)和數(shù)據(jù)庫版本。onCreate方法:在數(shù)據(jù)庫第一次生成的時(shí)候會(huì)調(diào)用這個(gè)方法,一般我們在這個(gè)方法里邊生成數(shù)據(jù)庫表。onUpgrade方法:當(dāng)數(shù)據(jù)庫需要升級的時(shí)候,Android系統(tǒng)會(huì)調(diào)用這個(gè)方法。一般我們在這個(gè)方法里邊刪除數(shù)據(jù)表,并建立新的數(shù)據(jù)表。
SQLiteOpenHelperAndroid本地存儲(chǔ)SQLiteOpenHelper當(dāng)調(diào)用SQLiteOpenHelper的getWritableDatabase()或者getReadableDatabase()方法獲取用于操作數(shù)據(jù)庫的SQLiteDatabase實(shí)例的時(shí)候,如果數(shù)據(jù)庫不存在,Android系統(tǒng)會(huì)自動(dòng)生成一個(gè)數(shù)據(jù)庫。onCreate()方法,onCreate()方法在初次生成數(shù)據(jù)庫時(shí)才會(huì)被調(diào)用,在onCreate()方法里可以生成數(shù)據(jù)庫表結(jié)構(gòu)及添加一些應(yīng)用使用到的初始化數(shù)據(jù)onUpgrade()方法在數(shù)據(jù)庫的版本發(fā)生變化時(shí)會(huì)被調(diào)用。比如版本由1變?yōu)?。
Android本地存儲(chǔ)新建MyDbHelper,繼承自SQLiteOpenHelper,并重寫相關(guān)方法切換到LoginActivity.java中,修改onCreate()方法中,登錄按鈕的監(jiān)聽器處理代碼,實(shí)現(xiàn)本地?cái)?shù)據(jù)庫驗(yàn)證功能當(dāng)?shù)卿洺晒螅侣?lián)系人界面上的登陸用戶頭像實(shí)現(xiàn)過程登錄功能Android本地存儲(chǔ)Android本地存儲(chǔ)之三本次課程的要求Android本地存儲(chǔ)應(yīng)知:了解SQLite數(shù)據(jù)庫的使用;了解如何使用程序訪問SQLite數(shù)據(jù)庫;應(yīng)會(huì)會(huì)使用DialogFragment創(chuàng)建對話框;能實(shí)現(xiàn)聯(lián)系人顯示、添加和刪除功能;能完成簡單Android程序的開發(fā)。上一節(jié)課我們學(xué)習(xí)了如何在Androi的中訪問數(shù)據(jù)庫,并實(shí)現(xiàn)了登錄功能在本次課程中我們將實(shí)現(xiàn)聯(lián)系人界面的顯示、刪除和添加功能?回顧與引入Android本地存儲(chǔ)登錄后,聯(lián)系人界面應(yīng)該顯示系統(tǒng)中所有的用戶嗎?登錄用戶的聯(lián)系人如何記錄每個(gè)用戶相關(guān)的聯(lián)系人?新建一張表QQ_Contact聯(lián)系人界面中同樣需要QQ_Login表中的信息,需要在QQ_Contact表中重復(fù)記錄嗎?為什么?多表的連接針對聯(lián)系人修改數(shù)據(jù)庫設(shè)計(jì)Android本地存儲(chǔ)在SqliteExpert中創(chuàng)建QQ_Contact表和view_Contact視圖;根據(jù)SQLiteExert中自動(dòng)生成的創(chuàng)建QQ_Contact表和view_Contact視圖的SQL語句,在MyDbHelper.java文件,修改onCreate()和initData()方法中的相關(guān)代碼;在模擬器中刪除已創(chuàng)建的數(shù)據(jù)庫修改QQContactFragment.java文件中的initData()方法,實(shí)現(xiàn)從數(shù)據(jù)庫中讀取登錄用戶的聯(lián)系人信息
使用SQLite實(shí)現(xiàn)聯(lián)系人信息顯示Android本地存儲(chǔ)為ExpandableList添加上下文菜單實(shí)現(xiàn)數(shù)據(jù)庫刪除操作實(shí)現(xiàn)同步刷新功能實(shí)現(xiàn)過程刪除聯(lián)系人功能Android本地存儲(chǔ)新建布局文件,實(shí)現(xiàn)對話框界面自定義對話框繼承自DialogFragment實(shí)現(xiàn)數(shù)據(jù)庫添加操作仿照監(jiān)聽器模式,實(shí)現(xiàn)同步刷新實(shí)現(xiàn)過程添加聯(lián)系人功能Android本地存儲(chǔ)Android本地存儲(chǔ)之四本次課程的要求Android本地存儲(chǔ)應(yīng)知:了解ContentProvider;了解自定義ContentProvider的步驟;應(yīng)會(huì)會(huì)使用ContentProvider公開數(shù)據(jù);能夠通過ContentProvider管理數(shù)據(jù);能完成簡單Android程序的開發(fā)上一節(jié)課我們學(xué)習(xí)了如何在Android的中訪問數(shù)據(jù)庫,并實(shí)現(xiàn)了聯(lián)系人界面的顯示、刪除和添加功能在本次課程中我們在QQ聯(lián)系人中加入本機(jī)聯(lián)系人的組回顧與引入Android本地存儲(chǔ)ContentProvider是Android四大組件之一,主要用來實(shí)現(xiàn)應(yīng)用程序之間的數(shù)據(jù)共享應(yīng)用程序A通過ContentProvider將自己的數(shù)據(jù)暴露出來,其它應(yīng)用通過ContentResolver來對應(yīng)用A暴露出來的數(shù)據(jù)進(jìn)行增刪改查操作ContentProvider及其工作過程Android本地存儲(chǔ)任意一個(gè)應(yīng)用,都可以借助ContentProvider將數(shù)據(jù)共享出來;如何為每個(gè)ContentProvider設(shè)置唯一標(biāo)識
如何標(biāo)識ContentProviderAndroid本地存儲(chǔ)所有ContentProvider的Uri必須以content://開頭Authority由開發(fā)者自己定義,用來唯一標(biāo)示一個(gè)ContentProviderPath表示要操作的數(shù)據(jù)集,類似于數(shù)據(jù)庫中的表Id:用以區(qū)別表中的不同數(shù)據(jù)
如何標(biāo)識ContentProviderAndroid本地存儲(chǔ)content://contacts/peoplecontent://com.android.contacts/people/10創(chuàng)建工程,命名為Ex04_contentprovider新建一個(gè)數(shù)據(jù)庫輔助類DbHelper,創(chuàng)建數(shù)據(jù)庫名叫test.db,包含一張名為users的表新建一個(gè)類名為MyContentProvider,繼承自ContentProvider,分別重寫其中的onCreate()、query()、insert()、delete()、update()和getType()方法在AndroidMinifest.xml中聲明該P(yáng)rovider實(shí)現(xiàn)過程自定義ContentProviderAndroid本地存儲(chǔ)新建工程Ex04_contentproviderTest實(shí)現(xiàn)Activity布局及ListView的行布局新建MyAdapter繼承自BaseAdapter,并重寫相關(guān)方法實(shí)現(xiàn)通過ContentProvider獲取、添加、刪除和修改數(shù)據(jù)實(shí)現(xiàn)過程訪問ContentProviderAndroid本地存儲(chǔ)將聯(lián)系人頭像存放在手機(jī)外部存儲(chǔ)中實(shí)現(xiàn)過程集成本機(jī)聯(lián)系人信息Android本地存儲(chǔ)將QQ_Login表中[qq_img]INT改為[qq_imgurl]VARCHAR,并相應(yīng)修改數(shù)據(jù)初始化代碼修改ContactBean.java代碼,刪除privateintimg成員變量,添加privateStringimgurl成員變量,然后相應(yīng)修改代碼通過訪問系統(tǒng)提供的ContentProvider,實(shí)現(xiàn)顯示本機(jī)聯(lián)系人功能修改QQContactAdapter中圖片顯示代碼設(shè)置讀取聯(lián)系人權(quán)限(AndroidManifest及動(dòng)態(tài)授權(quán))
實(shí)現(xiàn)過程集成本機(jī)聯(lián)系人信息Android本地存儲(chǔ)服務(wù)與廣播之一本次課程的要求應(yīng)知:了解簡單播放器的基本功能要求;了解本章所需的知識點(diǎn);應(yīng)會(huì)能夠綜合使用UI界面設(shè)計(jì)的相關(guān)知識,完成播放器的框架搭建;能夠完成程序的調(diào)試及錯(cuò)誤排除。服務(wù)與廣播前面的課程中,我們學(xué)習(xí)了UI控件的使用及界面布局、數(shù)據(jù)存儲(chǔ)、網(wǎng)絡(luò)通信等知識在本章中我們將綜合使用相關(guān)知識,實(shí)現(xiàn)一個(gè)較為綜合的項(xiàng)目回顧與引入服務(wù)與廣播歌曲文件的搜索:使用MediaStore類搜索手機(jī)上SDCard中所有的音頻文件。歌曲的播放控制:點(diǎn)擊播放界面中的“播放/暫?!卑粹o可啟動(dòng)播放和暫停功能。點(diǎn)擊“上一首/下一首”按鈕,可在音樂列表中進(jìn)行上一首、下一首的切換;拖動(dòng)拖動(dòng)條上的滑塊可改變當(dāng)前歌曲的播放進(jìn)度。歌曲列表:進(jìn)入歌曲列表界面,程序以列表的形式顯示所有的歌曲,單擊相應(yīng)的歌曲可實(shí)現(xiàn)播放。主要功能服務(wù)與廣播歌曲信息的顯示:當(dāng)打開播放界面時(shí),程序會(huì)自動(dòng)顯示當(dāng)前歌曲的名稱、專輯封面(如果有的話),以及歌曲的長度和當(dāng)前播放位置。歌詞的同步顯示:當(dāng)歌曲文件所在的目錄下存在同名的歌詞文件(.lrc)時(shí),程序會(huì)自動(dòng)解析歌詞文件,并隨著歌曲的播放同步顯示歌詞。后臺播放功能:當(dāng)關(guān)閉程序時(shí),不影響歌曲的播放;重新打開程序后,會(huì)自動(dòng)回到正在播放的歌曲界面。主要功能服務(wù)與廣播任務(wù)1簡單音樂播放器框架的搭建服務(wù)與廣播服務(wù)與廣播之二本次課程的要求應(yīng)知:了解MediaPlayer的相關(guān)知識;了解ContentProvider的相關(guān)知識;應(yīng)會(huì)能夠使用ContentProvider實(shí)現(xiàn)歌曲列表的顯示;能夠使用MediaPlayer實(shí)現(xiàn)歌曲的播放、暫停等基本功能;能夠完成程序的調(diào)試及錯(cuò)誤排除。服務(wù)與廣播任務(wù)2實(shí)現(xiàn)播放功能服務(wù)與廣播任務(wù)2實(shí)現(xiàn)播放功能服務(wù)與廣播MediaPlayer狀態(tài)轉(zhuǎn)換圖MediaPlayer類可用于控制音頻/視頻文件或流的播放任務(wù)2實(shí)現(xiàn)播放功能服務(wù)與廣播MediaStore這個(gè)類是Android系統(tǒng)提供的一個(gè)多媒體數(shù)據(jù)庫;Android把所有的多媒體數(shù)據(jù)接口都通過ContentProvider進(jìn)行了封裝,這樣用戶可以直接通過ContentResolver去調(diào)用那些已經(jīng)封裝好的接口,來對數(shù)據(jù)庫進(jìn)行操作;外部存儲(chǔ):MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI內(nèi)部存儲(chǔ):MediaStore.Audio.Albums.INTERNAL_CONTENT_URI”。服務(wù)與廣播之三本次課程的要求應(yīng)知:了解Service的基本概念及工作
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《金色的草地》 公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)(表格式)
- 2024年項(xiàng)目合作協(xié)議書范本
- 化工原理課程設(shè)計(jì)裝
- 教學(xué)實(shí)踐基地建設(shè)協(xié)議書
- 2024代理合同協(xié)議
- 招商居間合同新凱蒙正規(guī)范本2024年
- 建筑項(xiàng)目勞務(wù)分包及裝修合同模板
- 擔(dān)保公司代償協(xié)議書2024年
- 遠(yuǎn)程兼職編輯授權(quán)協(xié)議模板
- 商品房房屋使用權(quán)轉(zhuǎn)讓協(xié)議范本
- 醫(yī)院培訓(xùn)課件:《血?dú)夥治龅馁|(zhì)量控制》
- 2024勞動(dòng)合同模板下載
- 聲屏障結(jié)構(gòu)技術(shù)標(biāo)準(zhǔn)(全面修訂征求意見稿)
- 大學(xué)生紅色旅游調(diào)查報(bào)告總結(jié)
- 【高中班主任育人方略】《以德樹人、以情聚人、以理律人》課件
- 一例肺癌術(shù)后并發(fā)肺栓塞患者的個(gè)案護(hù)理
- 學(xué)習(xí)科學(xué)與技術(shù)智慧樹知到期末考試答案章節(jié)答案2024年山東師范大學(xué)
- 技能成才強(qiáng)國有我主題班會(huì)
- 民用建筑電線電纜防火技術(shù)規(guī)程DBJ-T 15-226-2021
- 單孔胸腔鏡手術(shù)肺結(jié)節(jié)
- 2024年返聘退休人員合同
評論
0/150
提交評論