12萬讀者的真實閱讀體驗,CSDN博客專傢的力作,基於新版的Android
循序漸進地講述開發過程中必備的知識,宗旨是不重復開發一個“輪子”,在給大傢講明原理的同時,介紹一些好的開發框架,這些框架能夠讓讀者很快上手開發完成一個應用。
本書前麵部分知識點配有相應視頻,幫助讀者零基礎學通Android開發
作者微信答疑,解決讀者學習中的睏難
本書深入淺齣,詳細講解瞭Android開發的知識,主要內容包括:Android的體係架構、Android Studio、項目的創建、Android工程目錄、調試程序、界麵的搭建;常用的控件和屬性、提示信息Toast和Snackbar、點擊事件3種寫法等;Activity之間的跳轉、Activity生命周期、Activity啓動模式等;數據存儲、網絡編程;圖片的處理;復雜控件的使用;Fragment、廣播接收者、Service、動畫等;以及Android新特性、Kotlin語言、性能優化、屏幕適配、自定義控件、JNI/NDK開發等高級知識。並通過開發一個真實的項目讓讀者學以緻用。
本書內容通俗易懂,比較適閤初學者閱讀,也可以作為專業人員的工具書,以及大專院校相關專業師生的學習用書和培訓學校的教材。
於連林,CSDN博客專傢,從事Android開發和教育多年,做過很多個項目,包括辦公類,O2O等類型,曾在培訓機構從事Android教育,有上韆課時講課經驗,收到過許多好評。
第1章初識Android1
1.1Android是什麼1
1.2Android體係架構1
1.3Android發展史4
第2章選擇您的開發工具5
2.1準備軟件,認識AndroidStudio5
2.1.1什麼是AndroidStudio5
2.1.2為什麼使用AndroidStudio6
2.2安裝AndroidStudio6
2.2.1安裝配置要求6
2.2.2下載地址6
2.2.3安裝JDK7
2.2.4安裝AndroidStudio7
2.2.5設置JDK和AndroidSDK
目錄14
2.3項目的創建16
2.3.1創建項目的步驟16
2.3.2解決錯誤(沒有錯誤最好)19
2.4AndroidStudio界麵預覽21
2.5常用設置22
2.5.1設置主題22
2.5.2設置字體和格式22
2.5.3設置文件編碼24
2.5.4設置快捷鍵24
2.5.5其他設置26
2.6常用快捷鍵26
2.7Android工程目錄27
2.7.1工程目錄介紹27
2.7.2Gradle使用詳解28
2.7.3app/build.gradle28
2.8SDK目錄介紹30
2.9調試程序31
2.9.1創建模擬器31
2.9.2連接真實手機33
2.9.3Genymotion模擬器34
2.10程序啓動分析34
2.11日誌和注釋36
2.11.1注釋37
2.11.2日誌37
2.11.3設置AndroidStudio日誌
顯示顔色38
2.11.4實際開發中控製日誌39
2.11.5Logger的使用41
總結42
第3章界麵的搭建43
3.1眼見皆View43
3.2布局的搭建方式43
3.3常用的控件和屬性44
3.3.1TextView44
3.3.2Button45
3.3.3EditText46
3.3.4ImageView47
3.3.5ProgressBar49
3.4布局的介紹50
3.4.1LinearLayout(綫性布局)50
3.4.2RelativeLayout(相對布局)52
3.4.3FrameLayout(幀布局)55
3.4.4GridLayout(網格布局)56
3.4.5CoordinatorLayout58
3.4.6ConstraintLayout(約束
布局)61
3.5提示信息Toast和Snackbar61
3.5.1Toast使用詳解61
3.5.2修改Toast位置63
3.5.3自定義Toast布局63
3.5.4避免內存泄露65
3.5.5Snackbar65
3.6點擊事件三種寫法68
3.6.1通過匿名內部類或內部類
實現68
3.6.2讓類實現接口69
3.6.3在布局文件中注冊事件70
3.7使用Lambda錶達式代替匿名
內部類70
3.7.1什麼是lambda呢70
3.7.2使用Lambda錶達式71
3.8AlertDialog提示對話框73
3.8.1一般對話框75
3.8.2MaterialDesign風格的
對話框76
3.8.3列錶對話框78
3.8.4單選按鈕對話框79
3.8.5多選按鈕對話框79
3.8.6自定義AlertDialog80
3.9ProgressDialog81
總結83
第4章Activity介紹84
4.1Activity之間的跳轉84
4.1.1顯示意圖84
4.1.2隱式意圖86
4.1.3隱式意圖的常見操作88
4.1.4IntentFilter匹配規則89
4.2Activity之間傳遞數據92
4.2.1通過Intent傳遞數據92
4.2.2靜態工廠設計模式傳遞
數據93
4.2.3返迴數據給之前的Activity93
4.3Android6.0權限的管理95
4.3.1Android6.0新的權限機製96
4.3.2申請權限96
4.3.3第三方庫RxPermissions100
4.4Activity生命周期101
4.4.1生命周期的方法101
4.4.2Activity銷毀時保存數據102
4.4.3鎖定橫竪屏103
4.4.4開發時注意事項104
4.5Activity任務棧104
4.6Activity啓動模式105
4.6.1standard105
4.6.2singleTop106
4.6.3singleTask106
4.6.4singleInstance107
4.6.5統一管理Activity108
4.7Toolbar和NavigationDrawer109
4.7.1AppBar的簡介109
4.7.2創建菜單111
4.7.3Toolbar112
4.7.4Toolbar遇上Navigation
Drawer114
4.8主題樣式設置118
總結120
第5章數據存儲121
5.1SharedPreference121
5.2MD5加密123
5.3文件存儲數據124
5.3.1保存到手機內存(Internal
Storage)124
5.3.2SD卡存儲(External
Storage)127
5.4SQLite存儲132
5.4.1創建數據庫132
5.4.2升級數據庫135
5.4.3數據庫增刪改查(CURD)137
5.4.4SQLite數據庫的事務操作144
5.5常見的數據庫框架146
總結146
第6章網絡編程148
6.1HTTP協議148
6.1.1URL簡介148
6.1.2HTTP簡介149
6.1.3GET和POST對比151
6.2HttpURLConnection151
6.2.1為什麼廢棄HttpClient151
6.2.2使用HttpURLConnection
聯網152
6.3多綫程編程154
6.3.1綫程的同步和異步154
6.3.2AsycTask158
6.3.3RxJava161
6.4網絡請求實例164
6.5JSON解析168
6.5.1使用Android原生方式解析
JSON169
6.5.2Gson的使用170
6.5.3插件GsonFormat快速實現
JavaBean174
6.5.4完成請求實例176
6.6網絡請求框架——Retrofit179
6.6.1使用Retrofit179
6.6.2常用的注解181
6.6.3完成請求案例181
6.6.4RxJava和Retrofit結閤183
6.7WebView184
6.7.1WebView配置186
6.7.2WebViewClient方法187
6.7.3設置WebChromeClient189
6.7.4WebView常用的方法190
6.7.5WebView模闆代碼191
總結196
第7章圖片的處理197
7.1Bitmap和Drawable197
7.2大圖的加載199
7.3圖片加水印202
7.4圖片特效,Matrix205
7.4.1縮放205
7.4.2倒影、鏡麵207
7.4.3鏇轉208
7.4.4位移208
7.5圖片顔色處理——打造自己的美圖
秀秀209
7.5.1顔色過濾器
ColorMatrixColorFilter209
7.5.2實現圖片美化功能210
7.6案例——隨手塗鴉214
7.7加載網絡圖片217
7.7.1網絡圖片的緩存策略217
7.7.2圖片加載庫Picasso的使用218
總結219
第8章復雜控件的使用220
8.1ListView220
8.1.1初識ListView221
8.1.2定製ListView條目的界麵222
8.1.3優化ListView225
8.1.4ListView的點擊事件226
8.1.5ListView常用的屬性228
8.2GridView229
8.3RecyclerView231
8.3.1初識RecyclerView231
8.3.2使用RecyclerView232
8.3.3不同的布局排列方式234
8.3.4RecyclerView添加點擊
事件236
8.3.5RecyclerView添加刪除
數據237
8.3.6下拉刷新
SwipeRefreshLayout237
8.4CardView239
8.5ViewPager241
8.6BottomNavigationView(底部
導航)243
8.7TabLayout246
8.7.1TabLayout使用246
8.7.2TabLayout自定義條目
樣式249
總結250
第9章探索Fragment251
9.1使用Fragment252
9.1.1Fragment的生命周期252
9.1.2創建Fragment252
9.1.3嚮Activity添加Fragment254
9.1.4管理片段256
9.1.5Fragment的嚮下兼容257
9.2FragmentTabHost實現底部標簽257
9.3ViewPager和Fragment結閤259
總結273
第10章廣播接收者274
10.1廣播簡介274
10.2實現一個BroadcastReceiver275
10.3發送自定義廣播279
10.4桌麵快捷方式283
總結285
第11章Service介紹286
11.1服務的基本用法286
11.1.1創建服務286
11.1.2啓動和停止服務287
11.1.3綁定服務289
11.1.4服務的生命周期292
11.2IntentService292
11.3Service和BroadCastReceiver結閤
使用的案例(兼容Android7.0)294
11.3.1Android7.0錯誤原因297
11.3.2使用FileProvider298
總結300
第12章動畫301
12.1補間動畫(TweenAnimation)301
12.2.1AlphaAnimation(透明度
動畫)302
12.2.2ScaleAnimation(縮放
動畫)304
12.2.3TranslateAnimation(平移
動畫)305
12.2.4RotateAnimation(鏇轉
動畫)306
12.2逐幀動畫(FrameAnimation)308
12.3屬性動畫310
總結313
第13章新特性314
13.1Android7.0分屏開發314
13.1.1如何分屏呢315
13.1.2多窗口生命周期315
13.1.3針對多窗口進行配置316
13.1.4多窗口模式中運行應用
注意事項316
13.1.5在多窗口模式中啓動新
Activity317
13.1.6支持拖放318
13.2Android7.0快速設定318
13.3約束布局ConstraintLayout321
13.3.1ConstraintLayout簡介321
13.3.2添加約束布局322
13.3.3使用約束布局322
13.3.4添加約束323
13.3.5使用自動連接和約束推斷325
13.3.6快速對齊Align326
13.4使用Kotlin語言開發Android326
總結330
第14章性能優化331
14.1性能檢測331
14.1.1檢測內存泄露331
14.1.2LeakCanary334
14.1.3追蹤內存分配335
14.1.4查詢方法執行的時間335
14.2過度繪製(OverDraw)336
14.2.1過度繪製概念336
14.2.2追蹤過度繪製336
14.2.3去掉不閤理背景337
14.2.4不閤理的XML布局對
繪製的影響338
14.3避免ANR338
14.3.1ANR分析339
14.3.2ANR解決方式341
總結341
第15章屏幕適配342
15.1Android屏幕適配齣現的原因342
15.2相關重要概念344
15.2.1屏幕尺寸344
15.2.2屏幕分辨率344
15.2.3屏幕像素密度344
15.2.4屏幕尺寸、分辨率、像素
密度三者關係344
15.2.5dip345
15.2.6sp345
15.3尺寸適配解決方案346
15.3.1“布局”適配346
15.3.2尺寸(size)限定符347
15.3.3最小寬度(Smallest-width)
限定符348
15.3.4使用布局彆名349
15.3.5屏幕方嚮(Orientation)
限定符350
15.3.6“布局組件”匹配352
15.3.7Layout_weight詳解352
15.3.8“圖片資源”匹配355
15.3.9.9的製作355
15.3.10“用戶界麵流程”匹配357
15.4屏幕密度適配359
15.4.1“布局控件”適配359
15.4.2百分比布局360
15.4.3約束布局362
總結362
第16章自定義控件363
16.1自定義控件簡介363
16.2View的生命周期364
16.2.1構造函數365
16.2.2onAttachedToWindow369
16.2.3onMeasure370
16.2.4onLayout372
16.2.5onDraw372
16.2.6View更新373
16.2.7動畫374
總結374
第17章JNI/NDK開發375
17.1NDK配置(最新的CMake
方式)375
17.1.1下載376
17.1.2創建項目376
17.1.3運行項目378
17.1.4手動添加native方法379
總結380
第18章開發一個真實的項目381
18.1項目需求分析381
18.2創建項目382
18.3界麵實現383
18.3.1啓動界麵383
18.3.2引導頁麵385
18.3.3主界麵388
18.3.4列錶界麵390
18.4請求網絡395
18.5新聞列錶和詳情400
18.6完成整個項目409
總結412
毫無疑問,你肯定急於開始學習Android應用程序開發。畢竟,編程對程序員來說吸引力也是很大的。然而,在開始實際編程前,需要先瞭解Android的係統。
1.1Android是什麼
Android,中文名為安卓,直接翻譯是機器人的意思,它是Google公司推齣的一款開源免費的智能操作係統,不僅限於手機,現在很多終端都在使用Android操作係統,如手錶、電視、汽車、平闆電腦、微波爐等,如圖1-1和圖1-2所示。一般而言,還是以手機開發為主,本書也是介紹如何進行手機軟件開發。
▲圖1-1Android係統的微波爐
▲圖1-2Android智能電視
由於Android係統是免費的,所以推廣得很快。目前Android手機市場占有率已經超過80%。
1.2Android體係架構
為瞭更好地理解Android係統是如何工作的,接下來解剖一下Android係統,看看其內部是如何構建的,如圖1-3所示。
▲圖1-3Android係統架構
Android大緻可以分為4層架構、5塊區域。圖1-3從下到上依次為:
(1)Linux內核層;
(2)係統運行庫層;
(3)應用框架層;
(4)應用層。
1.Linux內核層
如圖1-4所示,Android係統是基於Linux2.6內核的,這一層為Android的各種硬件提供瞭驅動程序,如顯示驅動、照相機驅動、聲音驅動、電池管理等。當手機開機的時候,這一層肯定先運行。
▲圖1-4Linux內核層
2.係統運行庫層
如圖1-5所示,這一層通過一些C或者C++庫為Android係統提供瞭主要的特性支持。如Webkit提供瞭瀏覽器支持(保證手機能夠正常使用瀏覽器),SQLite庫提供瞭數據庫的支持(可以用來存儲一些數據),OpenGLES庫提供瞭3D繪圖的支持等。
這一層還有Android運行時庫,它主要提供瞭一些核心庫,能夠允許開發者使用Java語言編寫Android應用。另外,Android運行時庫中還包含瞭Dalvik虛擬機(Android5.0係統以後替換成瞭ART虛擬機),因為Java語言的特性決定它隻能通過虛擬機去運行,這個有點像我們在電腦上玩小霸王的遊戲需要裝模擬器一樣。
▲圖1-5係統運行庫層
無論是Dalvik虛擬機還是ART虛擬機,都是專門為移動設備定製的,它針對手機內存、CPU性能有限等情況,ART虛擬機安裝程序時間稍微長一點,但是運行程序快一點。Google工程師最終決定用ART虛擬機(這點毋容置疑,沒人願意天天裝程序)。
不管是Dalvik虛擬機還是ART虛擬機,都要比Java語言官方本身的JVM虛擬機要好用。當然最主要的原因是版權問題,雖然Java語言本身是開源免費的,但是JVM虛擬機不是開源免費的,所以不能直接用JVM虛擬機。
3.應用框架層
如圖1-6所示,這一層主要提供瞭構建應用程序時可能用到的各種API,Android自帶的一些核心應用就是使用這些API完成的,開發者也可以通過這些API構建自己的應用程序。這層的使用頻率要比上麵介紹的兩層使用頻率高。
▲圖1-6應用框架層
####4.應用層如圖1-7所示,所有安裝到手機上的應用都屬於這一層,例如係統自帶的聯係人、短信等程序,或者是自己下載的一些應用、遊戲,肯定也會包括自己寫的程序。
▲圖1-7應用層
應用層和應用框架層大部分都是采用Java代碼編寫的,Linux內核層和係統運行庫層大部分采用C或者C++編寫。
計算機語言核心就是0和1,理論上用一個電閘都能編程,閉閤就是1,打開就是0,一開一閉程序就運行瞭,估計乾這行的肯定瞧不上做C開發的。編程語言不分好壞,隻是功能劃分不一樣。韆萬不要和資深程序員爭論哪門編程語言好,他們眼中隻有0或者1,基本上他能說的讓你高山仰止。
1.3Android發展史
Android從2008年發布1.0至今已經發布瞭20多個版本瞭,目前最新版本是Android8,每一個係統版本都對應一個開發的API版本號,如Android5.1對應API版本號21。每一個Android版本還都有一個代號,包括甜甜圈、薑餅、三明治、果凍豆、棒棒糖等。
如圖1-8所示,錶中最右麵一欄就是當前版本的市場份額,可以發現Android4.4是當前最流行的版本,Android5.0以上的會越來越多,而Android4.1以下的手機基本上沒有瞭,Android7.0還不到百分之一。所以本書重點講解Android5.0~7.1的知識,兼容到Android4.1。
數據來源Android官網
▲圖1-8Android各個版本市場占有率
好瞭,Android基本信息就介紹到這,接下進入真正的Android開發之旅。
……
歡迎您閱讀這本書
Android已經在短短幾年從無到有成為這個世界上最受歡迎的智能手機操作係統。無論您是為公眾開發應用程序,還是為自己開發App,都會發現Android是一個令人興奮和具有挑戰性的平颱。您會愛上Android開發!
最重要的是,我衷心希望您能找到它對您開發有用的地方。
IT知識本身也許是枯燥的,本書盡量把它講得幽默點。
本書結構
本書並不像其他的書那樣,把所有的知識點堆到一起。這本書循序漸進地講述開發過程中必備的知識,雖然可能忽略一些很少用的知識,但大傢在實際開發過程中就會發現學的已經夠用瞭。本書宗旨是不重復開發一個“輪子”,在給大傢講明白原理的同時會介紹一些高手開發的框架,這些框架能夠讓大傢很快上手開發完成一個應用。
讀者對象
本書內容通俗易懂,比較適閤初學者閱讀,也可以作為專業人員的工具書。學習本書之前您不需要任何的Android基礎,但是需要有一定的Java基礎(包括數組、運算符、麵嚮對象思想、綫程、IO流等),因為大部分Android開發都是使用Java語言的,而本書很少會介紹Java方麵的知識。
閱讀本書時,您可以根據自身的情況來決定如何閱讀,如果沒有Android開發基礎,建議不要跳過前麵的章節。
因為考慮到新手初學時很難入門,所以本書剛開始的部分內容會附贈開發教學視頻,幫助讀者盡快入門學習。
微信公眾號
為瞭方便大傢看到此書勘誤,本書提供一個網址:book.520wcf.com。
IT行業技術日新月異,本書將盡快更新最新的知識點。為瞭方便大傢及時收到本書更新提醒,建議大傢關注微信公眾賬號。微信添加公眾號搜索likeDev,或者掃碼加入:
為瞭方便交流,可以加QQ交流群:488929846,添加時請輸入備注:愛上Android。
本文僅用於學習和交流目的,不代錶異步社區觀點。非商業轉載請注明作譯者、齣處,並保留本文的原始鏈接。
頭發長仰天長嘆此言差矣吃呀吃呀吃呀吃呀吃呀吃
評分我的第一行代碼安卓
評分書感覺還不錯,就隻是紙張感覺是正方形的,感覺有點彆扭,不過還好強迫癥不是很嚴重,可以接受
評分速度很快,包裝完好,書很不錯,很詳細,還有安裝地址什麼的
評分一下子買瞭4本,書本內容真的很好。包裝沒問題,京東速度一如既往得快
評分國傢巴菲特和扭矩非黑即白機遊戲
評分很棒的書,已經自學一半瞭,這本書要有一定的java基礎如果沒有的話建議先學java再買書
評分基礎書籍,講的還不錯,語言趣味也可以的
評分5、沒有任何實際意義的內容:第15章將應用發布到360商店;80%以上的軟件開發人員對360都沒有什麼好感,也不會安裝360的任何東西。是不是作者在用360全傢桶和手機?!另外從市場占有率來看,發布到小米,華為,騰訊是不是更靠譜?!
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有