Android Studio開發實戰:從零基礎到App上線(第2版) ( 簡體 字) |
作者:歐陽燊 | 類別:1. -> 程式設計 -> 手機程式 -> Android |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 50272 詢問書籍請說出此書號!【缺書】 NT售價: 695 元 |
出版日:11/1/2018 |
頁數:780 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302512608 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:再版前言 時光荏苒猶如白駒過隙,轉瞬之間本書離初版已近兩年,在此期間信息科技的快速發展令人目不暇接。物聯網方興未艾,虛擬現實潮起潮落,共享經濟遍地開花,人工智能火得一塌糊涂,第四次工業革命蓄勢待發,而移動互聯網從狂飆回歸到常態。 單就App開發而言,安卓系統版本從2016年的Android 7到2017年的Android 8再到2018年的Android 9,Android Studio的版本也從2016年的2.2更新到2.3、3.0、3.1直到2018年的3.2,同時Android的開發語言除了Java以外又多了一個Kotlin。從應用場景來說,早期只運行于手機和平板電腦的安卓系統,現在逐步拓展到了互聯網電視、可穿戴設備、車載終端、智能家居等其他設備之上。而搭載安卓系統的智能手機,也從僅含通話、上網等基本功能的通信工具,逐漸演化成集拍照、定位、社交、支付等生活服務為一身的全能小秘書。 有鑒于此,本書亟需補充這期間風起云涌的新技術新知識,以跟上時代發展的滔滔浪潮。種種機緣際會,加上第一版讀者的熱忱建議,因此便有了重新修訂之后的本書第二版問世。第二版圖書不是第一版的簡單更新,而是百煉成鋼的全面升級,與第一版相比,第二版圖書主要有以下五處重要的增補變化: 1.工具更新穎 第二版的App開發全部基于Android 9.0環境,使用的開發工具為2018年9月發布的Android Studio 3.2,JNI用到的NDK則為2018年6月發布的r17c。相關的功能點都根據上述最新版本的工具展開論述,比如Android 8新增的畫中畫功能、Android 9新增的WebP動圖播放、Android Studio 3新增的內存用量查看窗口,以及NDK的r17不再支持ARM5(armeabi)的so文件編譯等。 2.技術更先進 移動互聯網的后繼發展方向如物聯網、虛擬現實、人工智能等如火如荼,第二版為此投入了大量筆墨深入描述相關技術細節,例如物聯網涉及到的二維碼、NFC、紅外、藍牙等,虛擬現實涉及到的陀螺儀、三維圖形、全景照片等,人工智能涉及到的TTS、語音識別、語音合成等,還有最新科研成果如北斗導航、SM3國密等,本書都有專門章節加以敘述。 3.案例更豐富 本書的一大特色是突出實戰,每章末尾都給出了技術精煉的實戰項目。第二版更是將這個優良傳統發揚光大,除了原有的十幾個實戰項目之外,又對房貸計算器、萬年歷、影視播放器等開辟專門章節詳細描述,另外新增了電商頭部、應用超市、全景圖庫、矢量動畫、電子書架等全新的實戰項目,力圖把常見的App種類一網打盡。 4.代碼更易懂 作為一部軟件開發方面的專著,少不了給出范例代碼進行演示,代碼可讀易懂的重要性毋庸置疑。第二版在這方面大力改善,首先對書中的代碼全面添加注釋,務求讓讀者看得懂、學得會;其次,針對Android不同系統之間的方法差異,分別說明每個版本的代碼兼容處理;再次,在實戰項目示例中,講清楚每個代碼的業務邏輯,以及它們之間的相互關系。 5.編排更合理 第一版對個別知識點的編排不甚合理,第二版對這些知識點重新組織編排,使之更連貫、更系統。比如內容提供器ContentProvider原來只在第13章做介紹,再版之后將其提前到第4章的數據存儲中進行介紹,然后分別在第6章、第10章、第13章的實戰項目中加以運用,有助于不斷地鞏固和提高。又如藍牙BlueTooth原本只在第14章的一個小節中作介紹,再版之后將其提前到第9章的短距離通信中進行介紹,然后分別在第9章的實戰項目藍牙音箱,以及第14章的藍牙傳輸中加以運用,從而拓寬了這些技術的應用場景。 綜上所述,經過精心修訂的第二版圖書,無論是廣度還是深度,從數量到質量,都比第一版有了飛躍的提升。全書的寫作目的,不但是教會讀者怎么快速開發一個好玩、好看、好用的App,更是讓讀者領略行業前沿的移動互聯網學科。深度揭秘流行App背后的手機開發技術,展示移動信息科技的最新工程實踐,這才是第二版想要呈獻給讀者的知識盛宴。 第二版的所有代碼都基于Android Studio 3.2開發,并使用API 28的SDK(Android 9.0)編譯與調試通過。讀者在閱讀本書時,若對書中內容有任何疑問,均可在筆者的CSDN博客留言。也可關注筆者的微信公眾號“老歐說安卓”,更快更方便地閱讀技術干貨。至于本書的最新源碼,則可訪問筆者的github主頁獲取;也可訪問百度網盤下載 最后,感謝王金柱編輯的熱情指點,感謝出版社同仁的辛勤工作,感謝我的家人一直以來的支持,感謝各位師長的諄諄教導,沒有他們的鼎力相助,本書就無法順利完成。
歐陽燊 2018年10月 |
內容簡介:本書是一部Android開發的實戰教程,由淺入深、由基礎到高級,帶領讀者一步一步走進App開發的神奇世界。 全書共分為16章。其中,前8章是基礎部分,主要講解Android Studio的環境搭建、App開發的各種常用控件、App的數據存儲方式、如何調試App并將App發布上線;后8章是進階部分,主要講解App開發的設備操作、網絡通信、事件、動畫、多媒體、融合技術、第三方開發包、性能優化等。書中在講解知識點的同時給出了大量實戰范例,方便讀者迅速將所學的知識運用到實際開發中。通過本書的學習,讀者能夠掌握3類主流App的基本開發技術,包括購物App(電子商務)、聊天App(即時通信)、打車App(交通出行)。另外,能夠學會開發一些趣味應用,包括簡單計算器、房貸計算器、萬年歷、日程表、手機安全助手、指南針、衛星渾天儀、應用超市、摳圖工具、全景圖庫、動感影集、影視播放器、音樂播放器、WiFi共享器、電子書架等。 本書適用于Android開發的廣大從業者、有志于轉型App開發的程序員、App開發的業余愛好者,也可作為大中專院校與培訓機構的Android課程教材。 |
目錄:第1章AndroidStudio環境搭建 1 1.1AndroidStudio簡介 1 1.2AndroidStudio的安裝 2 1.2.1開發機配置要求 2 1.2.2安裝依賴的軟件 2 1.2.3安裝AndroidStudio 3 1.2.4下載Android的SDK 5 1.3運行小應用HelloWorld 6 1.3.1創建新項目 6 1.3.2編譯項目/模塊 8 1.3.3創建模擬器 9 1.3.4在模擬器上運行App 9 1.4App的工程結構 11 1.4.1工程目錄說明 11 1.4.2編譯配置文件build.gradle 12 1.4.3App運行配置AndroidManifest.xml 13 1.4.4在代碼中操縱控件 14 1.5準備開始 15 1.5.1使用快捷鍵 15 1.5.2安裝SVN工具 16 1.5.3安裝常用插件 17 1.5.4導入已經存在的工程 19 1.5.5新建一個Activity頁面 20 1.6小結 22 第2章初級控件 23 2.1屏幕顯示 23 2.1.1像素 23 2.1.2顏色 25 2.1.3屏幕分辨率 26 2.2簡單布局 27 2.2.1視圖View的基本屬性 27 2.2.2線性布局LinearLayout 30 2.2.3滾動視圖ScrollView 32 2.3簡單控件 34 2.3.1文本視圖TextView 34 2.3.2按鈕Button 37 2.3.3圖像視圖ImageView 39 2.3.4圖像按鈕ImageButton 43 2.4圖形基礎 45 2.4.1圖形Drawable 45 2.4.2狀態列表圖形 46 2.4.3形狀圖形 47 2.4.4九宮格圖片 50 2.5實戰項目:簡單計算器 53 2.5.1設計思路 53 2.5.2小知識:日志Log/提示Toast 55 2.5.3代碼示例 56 2.6小結 57 第3章中級控件 59 3.1其他布局 59 3.1.1相對布局RelativeLayout 59 3.1.2框架布局FrameLayout 63 3.2特殊按鈕 64 3.2.1復選框CheckBox 64 3.2.2開關按鈕Switch 65 3.2.3單選按鈕RadioButton 66 3.3適配視圖基礎 68 3.3.1下拉框Spinner 68 3.3.2數組適配器ArrayAdapter 69 3.3.3簡單適配器SimpleAdapter 70 3.4編輯框 72 3.4.1文本編輯框EditText 72 3.4.2自動完成編輯框AutoCompleteTextView 77 3.5活動Activity基礎 78 3.5.1Activity的生命周期 78 3.5.2使用Intent傳遞消息 83 3.5.3向下一個Activity傳遞參數 85 3.5.4向上一個Activity返回參數 86 3.6實戰項目:房貸計算器 89 3.6.1設計思路 89 3.6.2小知識:文本工具TextUtils 90 3.6.3代碼示例 91 3.7實戰項目:登錄App 93 3.7.1設計思路 93 3.7.2小知識:提醒對話框AlertDialog 94 3.7.3代碼示例 96 3.8小結 98 第4章數據存儲 100 4.1共享參數SharedPreferences 100 4.1.1共享參數的基本用法 100 4.1.2實現記住密碼功能 102 4.2數據庫SQLite 103 4.2.1SQLite的基本用法 103 4.2.2數據庫幫助器SQLiteOpenHelper 104 4.2.3優化記住密碼功能 110 4.3SD卡文件操作 112 4.3.1SD卡的基本操作 112 4.3.2公有存儲空間與私有存儲空間 114 4.3.3文本文件讀寫 115 4.3.4圖片文件讀寫 116 4.4應用Application基礎 118 4.4.1Application的生命周期 118 4.4.2利用Application操作全局變量 119 4.5內容提供與處理 121 4.5.1內容提供器ContentProvider 121 4.5.2內容解析器ContentResolver 123 4.5.3內容觀察器ContentObserver 128 4.6實戰項目:購物車 131 4.6.1設計思路 131 4.6.2小知識:菜單Menu 132 4.6.3代碼示例 136 4.7小結 139 第5章高級控件 140 5.1日期時間控件 140 5.1.1日期選擇器DatePicker 140 5.1.2時間選擇器TimePicker 142 5.2列表類視圖 144 5.2.1基本適配器BaseAdapter 144 5.2.2列表視圖ListView 148 5.2.3網格視圖GridView 154 5.3翻頁類視圖 158 5.3.1翻頁視圖ViewPager 158 5.3.2翻頁標題欄PagerTitleStrip/PagerTabStrip 161 5.3.3簡單的啟動引導頁 163 5.4碎片Fragment 166 5.4.1靜態注冊 166 5.4.2動態注冊/碎片適配器FragmentStatePagerAdapter 170 5.4.3改進的啟動引導頁 173 5.5廣播Broadcast基礎 175 5.5.1發送/接收臨時廣播 176 5.5.2定時器AlarmManager 178 5.6實戰項目:萬年歷 180 5.6.1設計思路 180 5.6.2小知識:月份選擇器MonthPicker 181 5.6.3代碼示例 183 5.7實戰項目:日程表 184 5.7.1設計思路 184 5.7.2小知識:震動器Vibrator 185 5.7.3代碼示例 185 5.8小結 187 第6章自定義控件 188 6.1自定義視圖 188 6.1.1聲明屬性 188 6.1.2構造對象 191 6.1.3測量尺寸 192 6.1.4寬高尺寸的動態調整 195 6.1.5繪制視圖 198 6.2自定義動畫 204 6.2.1任務Runnable 204 6.2.2下拉刷新動畫 205 6.2.3圓弧進度動畫 207 6.3自定義對話框 208 6.3.1對話框Dialog 208 6.3.2改進的日期對話框 209 6.3.3自定義多級對話框 213 6.4自定義通知欄 214 6.4.1通知推送Notification 214 6.4.2進度條ProgressBar 218 6.4.3遠程視圖RemoteViews 220 6.4.4自定義通知的文本顏色設定 223 6.5服務Service基礎 225 6.5.1Service的生命周期 225 6.5.2推送服務到前臺 229 6.6實戰項目:手機安全助手 230 6.6.1設計思路 230 6.6.2小知識:應用包管理器PackageManager 232 6.6.3代碼示例 234 6.7小結 235 第7章組合控件 236 7.1標簽欄 236 7.1.1標簽按鈕 236 7.1.2實現底部標簽欄 238 7.2導航欄 246 7.2.1工具欄Toolbar 246 7.2.2溢出菜單OverflowMenu 248 7.2.3搜索框SearchView 250 7.2.4標簽布局TabLayout 253 7.3橫幅條 260 7.3.1自定義指示器 260 7.3.2實現橫幅輪播Banner 263 7.3.3仿京東頂到狀態欄的Banner 267 7.4增強型列表 271 7.4.1循環視圖RecyclerView 271 7.4.2布局管理器LayoutManager 275 7.4.3動態更新循環視圖 280 7.5材質設計庫 282 7.5.1協調布局CoordinatorLayout 282 7.5.2應用欄布局AppBarLayout 285 7.5.3可折疊工具欄布局CollapsingToolbarLayout 287 7.6實戰項目:仿支付寶的頭部伸縮特效 290 7.6.1設計思路 291 7.6.2小知識:導航欄的滾動標志 292 7.6.3代碼示例 293 7.7實戰項目:仿淘寶主頁 298 7.7.1設計思路 298 7.7.2小知識:下拉刷新布局SwipeRefreshLayout 299 7.7.3代碼示例 303 7.8小結 305 第8章調試與上線 306 8.1調試工作 306 8.1.1模擬器調試 306 8.1.2真機調試 311 8.1.3導出APK安裝包 313 8.2準備上線 315 8.2.1版本設置 315 8.2.2上線模式 316 8.2.3數據加密 320 8.3安全加固 325 8.3.1反編譯 325 8.3.2代碼混淆 327 8.3.3第三方加固及重簽名 329 8.4發布到應用商店 331 8.4.1注冊開發者賬號 331 8.4.2創建并提交應用 332 8.5小結 334 第9章設備操作 335 9.1攝像頭 335 9.1.1表面視圖SurfaceView 335 9.1.2使用Camera拍照 337 9.1.3紋理視圖TextureView 343 9.1.4使用Camera2拍照 344 9.1.5運行時動態授權管理 346 9.2麥克風 349 9.2.1拖動條SeekBar 349 9.2.2音量控制 350 9.2.3錄音與播音 352 9.2.4錄像與放映 360 9.3傳感器 362 9.3.1傳感器的種類 362 9.3.2搖一搖——加速度傳感器 364 9.3.3指南針——磁場傳感器 365 9.3.4計步器、感光器和陀螺儀 368 9.4手機定位 370 9.4.1開啟定位功能 371 9.4.2獲取定位信息 373 9.5短距離通信 378 9.5.1NFC近場通信 378 9.5.2紅外遙控 384 9.5.3藍牙BlueTooth 388 9.6實戰項目:仿微信的發現功能 395 9.6.1設計思路 395 9.6.2小知識:全球衛星導航系統 397 9.6.3代碼示例 399 9.7小結 406 第10章網絡通信 407 10.1多線程 407 10.1.1消息傳遞Message 407 10.1.2進度對話框ProgressDialog 411 10.1.3異步任務AsyncTask 414 10.1.4異步服務IntentService 420 10.2HTTP接口訪問 423 10.2.1網絡連接檢查 423 10.2.2移動數據格式JSON 425 10.2.3JSON串與實體類自動轉換 427 10.2.4HTTP接口調用 428 10.2.5HTTP圖片獲取 432 10.3上傳和下載 434 10.3.1下載管理器DownloadManager 435 10.3.2文件對話框 441 10.3.3文件上傳 442 10.4套接字Socket 445 10.4.1網絡地址InetAddress 445 10.4.2Socket通信 446 10.5實戰項目:仿應用寶的應用更新功能 451 10.5.1設計思路 451 10.5.2小知識:查看APK文件的包信息 452 10.5.3代碼示例 454 10.6實戰項目:仿手機QQ的聊天功能 457 10.6.1設計思路 457 10.6.2小知識:可折疊列表視圖ExpandableListView 459 10.6.3代碼示例 464 10.7小結 468 第11章事件 469 11.1按鍵事件 469 11.1.1檢測軟鍵盤 469 11.1.2檢測物理按鍵 472 11.1.3音量調節對話框 474 11.2觸摸事件 479 11.2.1手勢事件的分發流程 479 11.2.2手勢事件處理MotionEvent 483 11.2.3手寫簽名 486 11.3手勢檢測 488 11.3.1手勢檢測器GestureDetector 488 11.3.2飛掠視圖ViewFlipper 491 11.3.3手勢控制橫幅輪播 494 11.4手勢沖突處理 498 11.4.1上下滾動與左右滑動的沖突處理 498 11.4.2內部滑動與翻頁滑動的沖突處理 501 11.4.3正常下拉與下拉刷新的沖突處理 506 11.5實戰項目:摳圖神器——美圖變變 510 11.5.1設計思路 510 11.5.2小知識:二維圖像的基本加工 511 11.5.3代碼示例 512 11.6實戰項目:虛擬現實的全景圖庫 514 11.6.1設計思路 514 11.6.2小知識:三維圖形接口OpenGL 516 11.6.3代碼示例 529 11.7小結 532 第12章動畫 534 12.1幀動畫 534 12.1.1幀動畫的實現 534 12.1.2顯示GIF動畫 536 12.1.3淡入淡出動畫 538 12.2補間動畫 539 12.2.1補間動畫的種類 539 12.2.2補間動畫的原理 544 12.2.3集合動畫 547 12.2.4在飛掠橫幅中使用補間動畫 549 12.3屬性動畫 551 12.3.1屬性動畫的用法 551 12.3.2屬性動畫組合 555 12.3.3插值器和估值器 557 12.4矢量動畫 561 12.4.1矢量圖形 561 12.4.2可縮放矢量圖形SVG標記 563 12.4.3利用屬性動畫實現矢量動畫 565 12.4.4仿支付寶的支付成功動畫 568 12.5動畫的實現手段 572 12.5.1使用延時重繪 572 12.5.2設置狀態參數 574 12.5.3滾動器Scroller 575 12.6實戰項目:仿QQ空間的動感影集 577 12.6.1設計思路 577 12.6.2小知識:畫布的繪圖層次 578 12.6.3代碼示例 583 12.7小結 584 第13章多媒體 585 13.1相冊 585 13.1.1畫廊Gallery 585 13.1.2圖像切換器ImageSwitcher 589 13.1.3圖片查看器——青青相冊 592 13.2音頻播放 596 13.2.1鈴聲Ringtone 596 13.2.2聲音池SoundPool 599 13.2.3音軌錄播AudioTrack 602 13.3視頻播放 605 13.3.1視頻視圖VideoView 606 13.3.2媒體控制條MediaController 609 13.3.3自定義播放控制條 611 13.4多窗口 613 13.4.1分屏——多窗口模式 614 13.4.2畫中畫——特殊的多窗口 617 13.4.3自定義懸浮窗 619 13.4.4截圖和錄屏 624 13.5實戰項目:影視播放器——愛看劇場 626 13.5.1設計思路 626 13.5.2小知識:豎屏與橫屏切換 627 13.5.3代碼示例 630 13.6實戰項目:音樂播放器——浪花音樂 634 13.6.1設計思路 634 13.6.2小知識:可變字符串SpannableString 636 13.6.3代碼示例 639 13.7小結 644 第14章融合技術 646 14.1網頁集成 646 14.1.1資產管理器AssetManager 646 14.1.2網頁視圖WebView 648 14.1.3簡單瀏覽器 651 14.2JNI開發 658 14.2.1NDK環境搭建 658 14.2.2創建JNI接口 661 14.2.3JNI實現加解密 666 14.3局域網共享 669 14.3.1無線網絡管理器WifiManager 670 14.3.2連接指定WiFi 671 14.3.3開關熱點 672 14.3.4點對點藍牙傳輸 674 14.4實戰項目:共享經濟弄潮兒——WiFi共享器 683 14.4.1設計思路 683 14.4.2小知識:NetBIOS協議 684 14.4.3代碼示例 688 14.5實戰項目:筆墨飄香之電子書架 693 14.5.1設計思路 693 14.5.2小知識:PDF文件渲染器PdfRenderer 694 14.5.3代碼示例 696 14.6小結 701 第15章第三方開發包 702 15.1地圖SDK 702 15.1.1查看簽名信息 702 15.1.2百度地圖 704 15.1.3高德地圖 710 15.2分享SDK 714 15.2.1QQ分享 715 15.2.2微信分享 716 15.3支付SDK 721 15.3.1支付寶支付 721 15.3.2微信支付 723 15.4語音SDK 724 15.4.1文字轉語音TextToSpeech 724 15.4.2語音識別 729 15.4.3語音合成 733 15.5實戰項目:仿滴滴打車 734 15.5.1設計思路 734 15.5.2小知識:評分條RatingBar 735 15.5.3代碼示例 738 15.6小結 739 第16章性能優化 741 16.1布局文件優化 741 16.1.1減少重復布局 741 16.1.2自適應調整布局 744 16.1.3自定義窗口主題 746 16.2內存泄漏處理 748 16.2.1內存泄漏的檢測 748 16.2.2內存泄漏的發生 749 16.2.3內存泄漏的預防 755 16.3線程池管理 758 16.3.1普通線程池 758 16.3.2定時器線程池 760 16.4省電模式 761 16.4.1檢測當前電量 761 16.4.2檢測屏幕開關 763 16.4.3休眠模式對App的影響 765 16.5實戰項目:網絡圖片緩存框架 768 16.5.1設計思路 768 16.5.2小知識:LRU緩存策略 769 16.5.3代碼示例 772 16.6小結 780 附錄 781 附錄一仿流行App的常用功能 781 附錄二Android各版本的新增功能說明 782 附錄三手機硬件與App開發的關聯 784 附錄四專業術語索引 785
|
序: |