




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
BigNerdRanch是一家專業的移動開發技術培訓機構。本書主要以其Android教學課程為基礎,融合了幾位作者多年的心得體會,是一本完全面向實戰的Android編程指南。全書共36章,詳細介紹了8個Android應用的開發過程。通過這些精心設計的應用,讀者可掌握很多重要的理論知識和開第3版較之前版本增加了對數據綁定等新工具的介紹,同時新增了針對單元測試、輔助功能和MVVM架構等的章節。如果你熟悉Java語言,或者了解面向對象編程,那就立刻開始Android編程之 [美]BillPhillipsChrisStewartKristin 責任編輯責任印制人民郵 市豐臺區成壽寺路11100164 電子郵件 http 印刷開本:800×1000印張 彩插字數:884千 2017年6月第3印數:38501—42000 2017年6月第1次印著作權合同登記號圖字:01-2017-3139
獻給我的DaveVadas,他激勵并支持我投身計算機行業。獻給我的JoanVadas,在 力量:合作者、責任編輯和支持者。沒有他們,想抓住重點并撰寫出這么多的素材肯定不感謝我們Android開發團隊的同事AndrewLunsfordBolotKerimbaevBrianGardnerDavidGreenhalgh、JoshSkeen、MattCompton、PaulTurner和RashadCureton。他們一直用這些有才的團隊一起工作,此生無憾。在BigNerdRanch工作的日子,每一天都是享受。特別感謝Andrew。他為本書同步更新了一大批AndroidStudio截圖。他很細心,不放過任ZackSimon,說起話來輕聲細語,是我們BigNerdRanch了不起的天才設計師。他不聲不感謝KarLoongWong,他重新設計了crime應用列表屏。只要他多伸手,本書的應用肯定感謝MarkDalrymple,他審閱了constraintlayout這部分內容,使之更加準確、完善。湊巧碰到他的話,如果你也在搞constraintlayout,千萬記得請他把關,他可是這方面的專家。感謝我們的編輯ElizabethHoladay。據說,著名的“垮掉的一代”文學作家WilliamS.要不是Liz,在遇到困惑、一時沖動時,相信我們也會這么做。在指導下,我們才能 的ChrisLoper。他設計并制作了本書的紙質版和。 有這個反饋環,就沒有這本書,即便有,也不會越來越完善。如果說BigNerdRanch公司的如何學習Android學習ndri開發對每新手是一很大好像在國他學會存一。即閱讀第3版有哪些新binding 部分還包含一塊名為“深入學習”的內容。這些內容針對相應章節的知識點,提供深編碼這純屬個人偏好。我們認為,使用內部類,代碼可以更簡練,器實現方法更一目了然。盡管在高性能要求的場景下或大型應用中,內部類可能會有一些問題,但我們有理由堅持這一點。相信我們,使用得當的話,fet就是nrd開發人員手中aiy,an版式有關此試讀版的說本人可以幫助你找到你要的PDF,計算機類,文學,藝術,設計,醫學,理學,經質量都很清晰,為方便讀者閱讀,每本100°/。都帶可跳轉的書簽索引和 一般情況下,半年左右就會有PDF極個別的書出PDF時間要長一些如看到試讀版信息.說明已經有完整版,需求完整版即可。請添加 或掃 添大家如果在網上不到的話,可以或 因PDF都有,請不要隨意,如果您有經濟能力,請盡量正版 若以 :本人只提供代找服務,每本100%索弓|書簽和 PDF publicvoidonClick(Viewv)Toast.makeText(QuizActivity.this,R.string.incorrect_toast,}AndroidAndroid4.4之前的系統版本,請參考本書第2版(Android4.1及以上版本)和第1版(Android2.3及以上版本)的相關內容。, 開始學習前,你需要安裝AndroidStudio。基于流行的InliJIDEA創建,AndroidStudio是用Android Studio的與安可以從Android開發者AndroidStudio:dev 早期版本的項目的話,可在Android開發向導界面,在QuickStart區域,選擇ConfigureSDKManager來啟圖0-1AndriodSDK管理硬件 第1章Android開發初體 Android開發基 創建Android項 AndroidStudio使用導 組件屬 預覽布
練習:為TextView添加 第3章activity的生命周 日志理解activity生命周 使用 activity生命周期實例解 設備旋轉與activity生命周 1.10關于練 練習:定制toast消 第2章Android與MVC設計模 Android與MVC設計模 連接設 在XML文件中資
第4章Android應用的調 從布局XML到視圖對從布局XML到視圖對 再探activity生命周 組 深入學習:activity內存清理現 1.6.2設置 練習:一題多 深入學習:Android編譯過 記錄棧日 設置斷 Android特有的調試工 使用Android R類的問 練習:探索內存分配第5章第二個 創建新的 創建新的activity子 manifest配置文件 為QuizActivity添加按 啟動 activity間的數據傳 使用intent 從子activity獲取返回結 activity的使用與管 練習:堵住第6章AndroidSDK版本與兼 AndroidSDK版 Android編程與兼容性問 SDK最低版 SDK目標版 SDK編譯版 安全添加新版本API中的代 使用Android開發者文 練習:限制次 7章UIfragment管理 UI設計的靈活性需 引入 著手開發 兩類 AndroidStudio關 創建Crime 托管UI fragment的生命周 創建UI
定義CrimeFragment的布 創建CrimeFragment FragmentManager添UI fragment事 FragmentManager生命周 采用fragment的應用架 深入學習:fragment與支持 8章使用RecyclerView列 升級CriminalIntent應用的模型 使用抽象activity托管 通用型fragment托管布 抽象activity RecyclerView、ViewHolder ViewHolder和 使用 ViewHolderAdapter 練習:RecyclerView 第9章使用布局與組件創建用戶界 引入 使用 騰出空 添加組 約束的XML形 編輯屬 dp、sp以及屏幕像素密 樣式、及屬 Android應用的設計原 第10章使用fragment
第12 創建 顯示 設置框的顯示內 fragment間的數據傳 練習: 附加extra信 獲取extra信 CrimeFragment視 直接獲取extra信息的缺 fragment 附加argument給 獲取 通過fragment獲取返回結 深入學習:為何要用 刷 第11章使用
第13章 在XML文件中定義菜 深入學習:與操作 練習:刪除crime記 ger
第14章數據 FragmentStatePagerAdapter 邊 JumptoFirstJumptoLast按
定義 修改CrimeLab 使用 使用 深入學習:數據庫高級介 練習:刪除crime記 第15章隱式
第18章應用本地 默認資 18.2.1可用資源優先級排 使用隱式 隱式intent的組 發送消 第16章使用intent拍
第19章Android輔助功 點擊瀏 線性瀏 置 258 19.2.2實現組件可聚 文件使用 指定存放位 使用相機 功能練習:優化顯 第17章雙版面主從用戶界
練習:主動通 第20章數據綁定與 為何要用MVVM架 創建BeatBox應 導入
20.4處理 使用 fragment容 activity:fragment的托管
assets lambda表達 深入學習:什么是non- 第21章音頻與單元測 創建 音 保留 深入學習:Espresso與整合測 練習:進度控 第22章樣式與 樣 添加顏 覆蓋屬 第23章XML shape statelist layerlist XML 深入學習:使用mipmap圖 深入學習:使用9-patch圖
第24章深入學習intent和任 創建NerdLauncher項 解析隱式 NerdLauncher應用作為設 深入學習:并 第25章HTTP與任 創建PhotoGallery應 k在線程運行代 從Flickr獲取JSON數 從 清理 k的替代方 26章Looper、Handler 配置RecyclerView以顯示批量縮略 創建并啟動線 Message與message 剖析 剖析 使用 傳遞 第27章搜 搜索Flickr使用 sharedpreferences實現輕量數據 應 第28章服 創建 查找返回結 合理控務啟動的頻 PendingIntent管 練習:可穿戴設備上 non-sticky服 sticky服 綁定服 練習Lollipop設備上使 深入學習:sync 第29章broadcast
普通intent和broadcast 接收系統broadcast:重啟后喚 創建并登記standalone 使用 發送broadcast 使用私限限 broadcast收數 receiver與長時運行任 深入學習:本地使用 使用 深入學習:探測fragment的狀 第30章網頁瀏 最后一段Flickr數 深入學習:注入JavaScript對 網 練習:非HTTP支 第31章定制視圖與觸摸創建DragAndDraw項 處理觸摸 第32章屬性動 多個動 深入學習:其他動畫 轉 練 第33章地理位置 y服 創建Locatr項 y服務定位和模擬 創建Locatr應 配 y服 使 y服 基于地理位置的Flickr搜 尋找并顯示 第34章使用地
Android上的地圖服 獲取MapsAPI 創建地 獲取地理位置數 使用地 深入學習:團隊開發和API 第35章material material elevation和Z statelist 動畫工 circular sharedelement floatingaction 深入學習material 第36章編后 終極關于我 36.3致 1圖1-1你是澳洲人Android開發基GeoQuiz是個簡單應用,因此它只有一個名叫QuizActivityActivity子類。圖1-2QuizActivity管理著activity_quizxml文件定義的用戶界創建Android啟動AndroidStudio程序,首次運行的話,會看到如圖1-3所示的歡迎界面。 圖1-3歡迎使用Androidproject次運行的話,選擇File→New→NewProject…菜單項。name)處輸入GeoQuiz。在公司( location圖1-4創建新項部附加上應用名稱。遵循此約定可以保證包名稱的唯一性,這樣,同一設備和y商店的圖1-5設備支持配具有了重大更新。不要擔心,請本書forum 圖1-6選取activity類型(空圖1-7配置AndroidStudio使用導window圖1-8新的項目窗window(eito角的灰色方形區域或單擊View→ToolButtons菜單項找到它。用戶界面11代代 1-1默認的activity布局 oWorld!"/>ietvAndroidSDK內置了多種組件,通過配置各種組件可獲得所需的用戶界面及行為。每一個組圖1-9顯示在屏幕上的默認組圖1-10布置并顯示在屏幕上的組在項目工具窗口中找到app/res/layout,打開activity_quiz.xml文件。對照代碼1-2,修代代 1-2在XML文件(activity_quiz.xml)中定義組 11 oWorld!"/><LinearLayoutxmlns:android="http://s android:orientation="vertical">android:orientation="horizontal">android:text="@string/true_button"/>android:text="@string/false_button"/>可以看到,有三行以android:text開頭的代碼出現了錯誤信息。暫時忽略它們,稍后會處理。hieracy圖1-11布局組件的層級結從布局的視圖層級結構可以看到,其根元素是一個LinearLayoutLinearLayout組件必須指定AndroidXML資源文件名空間屬性,這里是若某個組件包含在一個ViewGroup中,該組件與ViewGroup即構成父子關系。根Linear-11density-independentpixel,指與密度無關的像素,詳見第9)(trng.xl字內容放置在獨立的字符串資源XML文件中,然后它們。這樣會方便應用的本地化(支持在項目工具窗口中,找到app/res/values,展開,打開strings.xml代代 1-3添加字符串資源 <string<stringname="question_text">Canberraisthecapitalof<string<string有多個字符串文件。只要這些文件都放在res/values/下,含有一個resources根元素,以及多有相關文件并且無錯誤發生,然后回到itqml文件,點擊代碼編輯區右邊的ee打11圖1-12在圖形布局工具中預覽布局(activity_quiz1從布局XML到視圖1在創建GeoQuiz項目的同時,向導也創建了一個名叫QuizActivity的Activity 代代 1-4默認QuizActivity類文件 packageimportandroid.sup importandroid.os.Bundle;publicclassQuizActivity p{protectedvoidonCreate(Bundle{super.onCreate(savedInstanceState);}} 舊版本系統提供兼容支持。第章會詳細介 publicvoidsetContentView(int項目的所有資源文件都存放在 下。在項目工具窗口中可以看到,activity_quiz.xml布局資源文件存放在res/layout/ 下。strings.xml字符串資源文件存放在 可以使用資源ID在代碼中獲取相應的資源。activity_quiz.xml布局的資源ID為R.layout.查看GeoQuiz應用的資源ID需要切換項目視圖。AndroidStudio默認使用Android項目視圖, 圖1-13切換項目視會顯示出當前項目的所有文件和。展開app/build/generated/source/r/debug,找到項目包名稱并打開其中的R.java文件,即可jaandridtui編譯用的.ava隱藏文件。當前代碼編輯區打開的.av文件僅在應用安裝至設備或模擬器前產ndridui代代 1-5GeoQuiz應用當前的資源 /*AUTO-GENERATEDFILE.DONOT*Thisclasswasautomaticallygeneratedbyaapttoolfromtheresourcedataitfound.shouldnotbemodifiedbypackagecom.bignerdranch.android.geoquiz;publicfinalclassR{publicstaticfinalclassanim}publicstaticfinalclassid11}publicstaticfinalclasslayoutpublicstaticfinalint}publicstaticfinalclassmipmappublicstaticfinalint}publicstaticfinalclassstringpublicstaticfinalintapp_name=0x7f0a0010;publicstaticfinalintfalse_button=0x7f0a0012;publicstaticfinalintquestion_text=0x7f0a0014;publicstaticfinalinttrue_button=0x7f0a0015;}}代代 1-6為按鈕添加資源 <LinearLayout...android:text="@string/true_button"/>android:text="@string/false_button"/>組件的實際代代 1-7添加成員變量 publicclassQuizActivity ptivityprivateButtonmTrueButton;privateButtonmFalseButton;protectedvoidonCreate(Bundle{super.onCreate(savedInstanceState);}}現在,將鼠標移至代碼左邊的錯誤提示處時,會看到兩條同樣的錯誤信息:Cannotresolvesymbol'Button'。import 11 publicViewfindViewById(int代代 publicclassQuizActivity ptivityprivateButtonmTrueButton;privateButtonmFalseButton;protectedvoidonCreate(Bundle{super.onCreate(savedInstanceState);mTrueButton=(Button)findViewById(R.id.true_button);mFalseButton=(Button)findViewById(R.id.false_button);}} 設置建的對象叫作器(listener。器會實現特定的器接口(listenerinterface)。無需自己動手,AndroidSDK已經為各種內置了很多器接口。當前應用需要用代代 1-9為TRUE按鈕設 器 protectedvoidonCreate(Bundle{super.onCreate(savedInstanceState);mTrueButton=(Button)mTrueButton.setOnClickListener(new{publicvoidonClick(Viewv)//Doesnothingyet,but}mFalseButton=(Button)}}mTrueButton.setOnClickListener(new{publicvoidonClick(Viewv)//Doesnothingyet,but}代 1-10為FALSE按鈕設 器代 1-10為FALSE按鈕設 器 1mTrueButton.setOnClickListener(new1{publicvoidonClick(Viewv)//Doesnothingyet,but}mFalseButton=(Button)mFalseButton.setOnClickListener(new{publicvoidonClick(Viewv)//Doesnothingyet,but}}創建提示接下來要實現的是,分別點擊兩個按鈕,彈出我們稱之為toat的提示消息。ndroid的tatta11所示。圖1-14toast消息反代代 1-11增加toast字符串 <string<stringname="question_text">Canberraisthecapitalof<string<string<string<stringpublicstaticToastmakeText(Contextcontext,intresId,int在QuizActivity代碼里,分別調用makeText(...)方法,如代碼1-12所示。在添在建議列表里,選擇makeText(ContextcontextintresIDintduration)方法,代代代 1-12創建提示消息 mTrueButton.setOnClickListener(new{publicvoidonClick(Viewv)//Doesnothingyet,but}mFalseButton=(Button)findViewById(R.id.false_button);mFalseButton.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv) 11//Doesnothingyet,but}在x)里,傳入y實例作為t的參數值。注意此處應輸入的參數是vs,不要想當然地直接輸入s。因為類的使用,這里的ts指是es。使用代碼自動補全功能,自己也就不用導入Toast類了,因為AndroidStudio會自動導入相使用模擬器運行device擇模擬運行Nexus5X設備,如圖1-15所示。點擊Next繼續。圖1-15創建新的圖1-16選擇系統鏡圖1-17模擬器參數調 1AVD創建成功后,我們用它運行GeoQuiz應用。點擊AndroidStudio上的Run按鈕,或(APK1假如啟動時或在點擊按鈕時,GeoQuiz應用,可以在AndroidDDMS工具窗口的LogCat視圖中看到有用的診斷信息。(如果LogCat沒有自動打開,可點擊AndroidStudio窗口底部的AndroidMonitor按鈕打開它。)查看日志,可看到搶眼的紅色異常信息,如圖1-18所示。圖1-18第21行代碼處發生了NullPointerException異(在較早版本的Android中,它像一個U型箭頭。需要調試變更時,再通過AndroidStudio重新運深入學習 編譯過AndroidStudio無需指示便會自動進行編譯。在整個編譯過程中,Android開發工具將資源文件、 /tools/publishing/preparinghtml)一部分,at(dridtcaingo)pk中。然后,在uAity類的CtBd)方法調用Ctte方法時,QuizActivity使用LayoutInflater類實例化布局文件中定義的每一個View對象,如圖1-19所示。圖1-19activity_quizxml中的視圖實例有時,出于某種原因,可能需要脫離AndroidStudio編譯代碼。最簡單的方法是使用命令行要從命令行使用Gradle,請切換到項目并執行以下命令:$./gradlew >gradlew.bat11$./gradlew>gradlew.bat關于練解決,可本書forum 為避免當前項目,建議你在AndroidStudio中先當前項目,然后在的項目上做 練習:定制toast該方法所在網頁為dev Android與MVC設計模2圖2-1測試題創建新→2創建新 2圖2-2創建Question publicclassQuestionprivateintmTextResId;privatebooleanmAnswerTrue;publicQuestion(inttextResId,boolean{mTextResId=textResId;mAnswerTrue=}}新增的兩個變量需要getter方法與setter方法。為避免手工輸入,可設置由AndroidStudio自動Settings菜單。依次展開Editor和CodeStyle選項,在Java選項下選擇CodeGeneration選項頁。圖2-3設置Java代碼風格首選剛才設置的前綴有何作用?那就是,需要AndroidStudio為mTextResId生成獲取方法時,它代代 2-2生成getter方法與setter方法 publicclassQuestionprivateintmTextResId;privatebooleanmAnswerTrue;publicint{return}publicvoidsetTextResId(int{mTextResId=} publicboolean2{return2}publicvoidsetAnswerTrue(boolean{mAnswerTrue=}}圖2-4GeoQuiz應用對象圖AndroidMVC設計圖2-5MVC數據控制流與用戶交使用MVC設計模更新視圖 22更新視圖2-6新增代代 2-3新增按鈕以及對文本視圖的調整 <LinearLayout...<LinearLayout...android:text="@string/next_button"/>代代 2-4更新字符串資源定義 <string<stringname="question_text">Canberraisthecapitalof<stringname="question_australia">Canberraisthecapitalof<string<string<string<string代代 2-5新增問題字符串 <stringname="question_australia">Canberraisthecapitalof<stringname="question_oceans">ThePacificOceanislargerthantheAtlanticOcean.</string><stringname="question_mideast">TheSuezCconnectstheRedSeaandthenOcean.</string><stringname="question_africa">ThesourceoftheNileRiverisin<stringname="question_americas">TheAmazonRiveristhelongestriverintheAmericas.</string><stringname="question_asia">LakeBaikalistheworld\'soldestanddeepestfreshwaterlake.</string> 2更新控制2代代 2-6增加按鈕變量及Question對象數組 publicclassQuizActivity tivityprivateButtonmTrueButton;privateButtonmFalseButton;privateButtonmNextButton;privateTextViewmQuestionTextView;privateQuestion[]mQuestionBank
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/BAS 001-2020標準化服務機構服務規范
- DB36/T 859-2015公路隧道LED照明施工驗收規范
- 學校安全培訓課件
- 2025年山東濟南高三二模地理試題答案詳解講評課件
- 2025年房地產市場區域分化對房地產虛擬現實投資策略的分析報告
- 電競俱樂部創業計劃書怎么做
- 數字化藝術市場:2025年交易平臺創新與藝術品市場價值評估報告
- 公司售后服務方案范文5
- 個人儲蓄增值行業深度調研及發展項目商業計劃書
- 高效美白沐浴露行業深度調研及發展項目商業計劃書
- 車險查勘定損中級培訓水淹車處理指引及定損培訓
- GB/T 29745-2013公共停車場(庫)信息聯網通用技術要求
- 員工請假審批流程圖
- “雙減”背景下高中語文作業的設計
- 2023年考研《法碩(非法學)》真題及答案
- 供應室技能考核操作標準
- 力平之獨特的血脂管理課件
- (完整版)土方回填專項施工方案
- 全國2021年4月自學考試00322中國行政史試題答案
- 外周神經復發性神經鞘瘤的顯微外科治療課件
- DB21∕T 3384-2021 空氣源熱泵系統工程技術規程
評論
0/150
提交評論