第一行代碼 Android (郭霖 著)

https://github.com/guolindev/booksourcehtml

 

第1章 開始啓程----你的第一行Android代碼 (已看)java

第2章 先從看獲得的入手----探究活動android

第3章 軟件也要拼臉蛋----UI開發的點點滴滴git

第4章 手機平板要兼顧----探究碎片github

第5章 全局大喇叭----詳解廣播機制數據庫

第6章 數據存儲全方案----詳解持久化技術編程

第7章 跨程序共享數據----探究內容提供器緩存

第8章 豐富你的程序----運用手機多媒體網絡

第9章 看看精彩的世界----使用網絡技術多線程

第10章 後臺默默的勞動者----探究服務

第11章 Android特點開發----基於位置的服務

第12章 最佳的UI體驗----Material Design實戰

第13章 繼續進階----你還應該掌握的高級技巧

第14章 進入實戰----開發酷歐天氣

第15章 最後一步----將應用發佈到360應用商店

 

第1章 開始啓程----你的第一行Android代碼

谷歌終於在2008年推出了Android系統的第一個版本

  1.1 瞭解全貌----Andorid王國簡介

    1.1.1 Android系統架構

  1. Linux內核層
  2. 系統運行庫層
  3. 應用框架層
  4. 應用層

    1.1.2 Andorid已發佈的版本

    1.1.3 Andorid應用開發特點

  1. 四大組件  活動(Activity), 服務(Service), 廣播接收器(Broadcast Receiver), 內容提供器(ContentProvidedr)
  2. 豐富的系統控件
  3. SQLite數據庫
  4. 強大的多媒體
  5. 地理位置定位

  1.2 手把手帶你搭建開發環境

    1.2.1 準備所須要的工具

  • JDK
  • Android SDK
  • Android Studio

    1.2.2 搭建開發環境

https://developer.android.com/studio/index.html

  1.3 建立你的第一個Android項目

    1.3.1 建立Hello World項目

Minimum API Level: API 15:Android 4.0.3(IceCreamSandwich)

    1.3.2 啓動模擬器

Nexus 5X API 24 Android 7.0 x86

    1.3.3 運行Hello World

    1.3.4 分析你的第一個Android程序

任何一個新建的項目都會默認使用Andorid模式的項目結構,但這並非項目真實的目錄結構,而是被Android Studio轉換過的.

項目真實的目錄結構,Project

1. .gradle和.idea

  這兩個目錄下放置的都是Android Studio自動生成的一些文件, 咱們無須關心, 也不要去手動編輯

2. app

  項目中的代碼, 資源等內容幾乎都是放置在這個目錄下的, 咱們後面的開發工做也基本都是在這個目錄下進行的,待會兒還會對這個目錄單獨展開進行詳解

3. build

  這個目錄你也不須要過多關心, 它主要包含了一些在編譯時自動生成的文件

4. gradle

  這個目錄下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不須要提早將gradle下載好,而是會自動根據本地的緩存狀況決定是否須要聯網下載gradle.

5. .gitignore

  這個文件是用來將指定的目錄或文件排除在版本控制以外的

6. build.gradle

  這是項目全局的gradle構建腳本,一般這個文件的內容是不須要修改的.

7. gradle.properties

  這個文件是全局的gradle配置文件,在這裏配置的屬性將會影響到項目中全部的gradle編譯腳本

8. gradlew和gradlew.bat

  這兩個文件是用來在命令行界面中執行gradle命令的,其中gradlew是在Linux或Mac系統中使用的,gradlew.bat是在Windows系統中使用的

9. HelloWorld.iml

  iml文件是全部IntelliJ IDEA項目都會自動生成的一個文件(Android Studio是基於IntelliJ IDEA開發的),用於標識這是一個IntelliJ IDEA項目,咱們不須要修改這個文件中的任何內容

10. local.properties

  這個文件用於指定本機中的Android SDK路徑, 一般內容都是自動生成的,咱們並不須要修改.除非你本機中的Android SDK位置發生了變化, 那麼就將這個文件中的路徑改爲新的位置便可

11. settings.gradle

  這個文件用於指定項目中全部引入的模塊. 因爲Hello World項目中就只有一個app模塊,所以該文件中也就只引入了app這一個模塊.一般狀況下模塊的引入都是自動完成的,須要咱們手動去修改這個文件的場景可能比較少

app目錄下的內容

1. build

  這個目錄和外層的build目錄相似, 主要也是包含了一些在編譯時自動生成的文件,不過它裏面的內容會更多更雜,咱們不須要過多關心

2. libs

  若是你的項目中使用到了第三方jar包,就須要把這些jar包都放在libs目錄下,放在這個目錄下的jar包都會被自動添加到構建路徑裏去

3. androidTest

  此處是用來編寫Android Test測試用例的,能夠對項目進行一些自動化測試

4. java

  毫無疑問,java目錄是放置咱們全部的Java代碼的地方, 展開該目錄, 你將看到咱們剛纔建立的HelloWorldActivity文件就在裏面

5. res

  這個目錄下的內容就有點多了.簡單點說, 就是你在項目中使用到的全部圖片, 佈局, 字符串等資源都要存放在這個目錄下, 固然這個目錄下還有不少子目錄,圖片放在drawable目錄下,佈局放在layout目錄下, 字符串放在values目錄下,因此你不用擔憂會把整個res目錄弄得亂糟糟的

6. AndroidManifest.xml

  這是你整個Android項目的配置文件,你在程序中定義的全部四大組件都須要的這個文件裏註冊, 另外還能夠在這個文件中給應用程序添加權限聲明.因爲這個文件之後會常常用到, 咱們用到的時候再作詳細說明

7. test

  此處是用來編寫Unit Test測試用例的,是對項目進行自動化測試的另外一種方式

8. .gitignore

  這個文件用於將app模塊內的指定目錄或文件排除在版本控制以外, 做用和外層的.gitignore文件相似

9. app.iml

  IntelliJ IDEA項目自動生成的文件,咱們不須要關心或修改這個文件中的內容

10. build.gradle

  這是app模塊的gradle構建腳本,這個文件中會指定不少項目構建相關的配置

11. proguard-rules.rpo

  這個文件用於指定項目代碼的混淆規則,當代碼開發完成後打成安裝包文件,若是不但願代碼被別人破解, 一般會將代碼進行混淆,從而讓破解者難以閱讀

 

<activity android:name=".HelloWorldActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
AndoridManifest.xml
public class HelloWorldActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.hello_world_layout);
    }
}
HelloWorldActivity
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".HelloWorldActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text = "Hello World!"/>
</android.support.constraint.ConstraintLayout>
hello_world_layout.xml

    1.3.5 詳解項目中的資源

全部以drawable開頭的文件夾都是用來放圖片的,全部以mipmap開頭的文件都是用來放應用圖標的,全部以values開頭的文件夾都是用來放字符串,樣式,顏色等配置的,layout文件夾是用來放佈局文件的.

之因此有這麼多mipmap開頭的文件夾,主要是爲了讓程序可以更好地兼容各類設備. drawable文件夾也是相同的道理

<resources>
    <string name="app_name">HelloWorld</string>
</resources>
res/values/strings.xml
  • 在代碼中經過R.string.hello_world能夠得到該字符串的引用
  • 在xml中經過@string/hello_world能夠得到該字符串的引用

    1.3.6 詳解build.gradle文件

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        google()
        jcenter()
        
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.0'
        
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
build.gradle
apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.voidgame.helloworld"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
app/build.gradle

  1.4 前行必備----掌握日誌工具的使用

    1.4.1 使用Android的日誌工具Log

  • Log.v().  用於打印那些最爲瑣碎的,意義最小的日誌信息.對應級別verbose,是Android日誌裏面級別最低的一種
  • Log.d().  用於打印一些調試信息,這些信息對你調試程序和分析問題應該是有幫助的.對應級別debug,比verbose高一級
  • Log.i().  用於打印一些比較重要的數據,這些數據應該是你很是想看到的,能夠幫你分析用戶行爲數據.對應級別info,比debug高一級
  • Log.w().  用於打印一些警告信息, 提示程序在這個地方可能會有潛在的風險,最好去修復一下這些出現警告的地方. 對應級別warn,比info高一級
  • Log.e().  用於打印程序中的錯誤信息,好比程序進入到了catch語句當中.當有錯誤信息打印出來的時候,通常都表明你的程序出現嚴重問題了,必須儘快修復. 對應級別error, 比warn高一級

    1.4.2 爲何使用Log而不使用System.out

  1.5 小結與點評

第2章 先從看獲得的入手----探究活動

  2.1 活動是什麼

  2.2. 活動的基本用法

    2.2.1 手動建立活動

    2.2.2 建立和加載佈局

    2.2.3 在AndroidManifest文件中註冊

    2.2.4 在活動中使用Toast

    2.2.5 在活動中使用Menu

    2.2.6 銷燬一個活動

  2.3 活動的生命週期

    2.3.1 返回棧

    2.3.2 活動狀態

    2.3.3 活動的生存期

    2.3.4 向下一個活動傳遞數據

    2.3.5 返回數據給上一個活動

  2.4 活動的生命週期

    2.4.1 返回棧

    2.4.2 活動狀態

    2.4.3 活動的生存期

    2.4.4 體驗活動的生命週期

    2.4.5 活動被回收了怎麼辦

  2.5 活動的啓動模式

    2.5.1 standard

    2.5.2 singleTop

    2.5.3 singleTask

    2.5.4 singleInstance

  2.6 活動的最佳實踐

    2.6.1 知曉當前是在哪個活動

    2.6.2 隨時隨地退出程序

    2.6.3 啓動活動的最佳寫法

  2.7 小結與點評

第3章 軟件也要拼臉蛋----UI開發的點點滴滴

  3.1 如何編寫程序界面

  3.2 經常使用控件的使用方法

    3.2.1 TextView

    3.2.2 Button

    3.2.3 EditText

    3.2.4 ImageView

    3.2.5 ProgressBar

    3.2.6 AlertDialog

    3.2.7 ProgressDialog

  3.3 詳解4中基本佈局

    3.3.1 線性佈局

    3.3.2 相對佈局

    3.3.3 幀佈局

    3.3.4 百分比佈局

  3.4 系統控件不夠用?建立自定義控件

    3.4.1 引入佈局

    3.4.2 建立自定義控件

  3.5 最經常使用和最難用的控件----List View

    3.5.1 ListView的簡單用法

    3.5.2 定製ListView的界面

    3.5.3 提高ListView的運行效率

    3.5.4 ListView的點擊事件

  3.6 更強大的滾動控件----Recycler View

    3.6.1 RecyclerView的基本用法

    3.6.2 實現橫向滾動和瀑布流佈局

    3.6.3 RecyclerView的點擊事件

  3.7 編寫界面的最佳實踐

    3.7.1 製做Nine-Patch圖片

    3.7.2 編寫精美的聊天界面

  3.8 小結與點評

第4章 手機平板要兼顧----探究碎片

  4.1 碎片是什麼

  4.2 碎片的使用方式

    4.2.1 碎片的簡單用法

    4.2.2 動態添加碎片

    4.2.3 在碎片中模擬返回棧

    4.2.4 碎片和活動之間進行通訊

  4.3 碎片的生命週期

    4.3.1 碎片的狀態和回調

    4.3.2 體驗碎片的生命週期

  4.4 動態加載佈局的技巧

    4.4.1 使用限定符

    4.4.2 使用最小寬度限定符

  4.5 碎片的最佳實踐----一個簡易版的新聞應用

  4.6 小結與點評

第5章 全局大喇叭----詳解廣播機制

  5.1 廣播機制簡介

  5.2 接收系統廣播

    5.2.1 動態註冊監聽網絡變化

    5.2.2 靜態註冊實現開機啓動

  5.3 發送自定義廣播

    5.3.1 發送標準廣播

    5.3.2 發送有序廣播

  5.4 使用系統廣播

  5.5 廣播的最佳實踐----實現強制下線功能

  5.6 Git時間----初識版本控制工具

    5.6.1 安裝Git

    5.6.2 建立代碼倉庫

    5.6.3 提交本地代碼

  5.7 小結與點評

第6章 數據存儲全方案----詳解持久化技術

  6.1 持久化技術簡介

  6.2 文件存儲

    6.2.1 將數據存儲到文件中

    6.2.2 從文件中讀取數據

  6.3 SharedPreferences存儲

    6.3.1 將數據存儲到SharedPreferences中

    6.3.2 從SharedPreferences中讀取數據

    6.3.3 實現記住密碼功能

  6.4 SQLite數據庫存儲

    6.4.1 建立數據庫

    6.4.2 升級數據庫

    6.4.3 添加數據

    6.4.4 更新數據

    6.4.5 刪除數據

    6.4.6 刪除數據

    6.4.7 查詢數據

  6.5 使用LitePal操做數據庫

    6.5.1 LitePal簡介

    6.5.2 配置LitePal

    6.5.3 建立和升級數據庫

    6.5.4 使用LitePal添加數據

    6.5.5 使用LitePal更新數據

    6.5.6 使用LitePal刪除數據

    6.5.7 使用LitePal查詢數據

  6.6 小結與點評

第7章 跨程序共享數據----探究內容提供器

  7.1 內容提供器簡介

  7.2 運行時權限

    7.2.1 Android權限機制詳解

    7.2.2 在程序運行時申請權限

  7.3 訪問其餘程序中的數據

    7.3.1 ContentResolver的基本用法

    7.3.2 讀取系統聯繫人

  7.4 建立本身的內容提供器

    7.4.1 建立內容提供器的步驟

    7.4.2 實現跨程序數據共享

  7.5 Git時間----版本控制工具進階

    7.5.1 忽略文件

    7.5.2 查看修改內容

    7.5.3 撤銷未提交的修改

    7.5.4 查看提交記錄

  7.6 小結與點評

第8章 豐富你的程序----運用手機多媒體

  8.1 將程序運行到手機上

  8.2 使用通知

    8.2.1 通知的基本用法

    8.2.2 通知的進階技巧

    8.2.3 通知的高級功能

  8.3 調用攝像頭和相冊

    8.3.1 調用攝像頭拍照

    8.3.2 從相冊中選擇照片

  8.4 播放多媒體文件

    8.4.1 播放音頻

    8.4.2 播放視頻

  8.5 小結與點評

第9章 看看精彩的世界----使用網絡技術

  9.1 WebView的用法

  9.2 使用HTTP協議訪問網絡

    9.2.1 使用HttpURLConnection

    9.2.2 使用OkHttp

  9.3 解析XML格式數據

    9.3.1 Pull解析方式

    9.3.2 SAX解析方式

  9.4 解析JSON格式數據

    9.4.1 使用JSONObject

    9.4.2 使用GSON

  9.5 網絡編程的最佳實踐

  9.6 小結與點評

第10章 後臺默默的勞動者----探究服務

  10.1 服務是什麼

  10.2 Android多線程編程

    10.2.1 線程的基本用法

    10.2.2 在子線程中更新UI

    10.2.3 解析異步消息處理機制

    10.2.4 使用AsyncTask

  10.3 服務的基本用法

    10.3.1 定義一個服務

    10.3.2 啓動和中止服務

    10.3.3 活動和服務進行通訊

  10.4 服務的生命週期

  10.5 服務的更多技巧

    10.5.1 使用前臺服務

    10.5.2 使用IntentService

  10.6 服務的最佳實踐----完整版的下載示例

  10.7 小結與點評

第11章 Android特點開發----基於位置的服務

  11.1 基於位置的服務簡介

  11.2 申請API Key

  11.3 使用百度定位

    11.3.1 準備LBK SDK

    11.3.2 肯定本身位置的經緯度

    11.3.3 選擇定位模式

    11.3.4 看得懂的位置信息

  11.4 使用百度地圖

    11.4.1 讓地圖顯示出來

    11.4.2 移動到個人位置

    11.4.3 讓"我"顯示在地圖上

  11.5 Git時間----版本控制工具的高級用法

    11.5.1 分支的用法

    11.5.2 與遠程版本庫協做

  11.6 小結與點評

第12章 最佳的UI體驗----Material Design實戰

  12.1 什麼是Material Desgin

  12.2 Toolbar

  12.3 滑動菜單

    12.3.1 DrawerLayout

    12.3.2 NavigationView

  12.4 懸浮按鈕和可交互提示

    12.4.1 FloatingActionButton

    12.4.3 Snackbar

    12.4.4 CoordinatorLayout

  12.5 卡片式佈局

    12.5.1 CardView

    12.5.2 AppBarLayout

  12.6 下拉刷新

  12.7 可摺疊式標題欄

    12.7.1 CollapsingToolbarLayout

    12.7.2 充分利用系統狀態欄空間

  12.8 小結與點評

第13章 繼續進階----你還應該掌握的高級技巧

  13.1 全局獲取Context的技巧

  13.2 使用Intent傳遞對象

    13.2.1 Serializable方式

    13.2.2 Parcelable方式

  13.3 定製本身的日誌工具

  13.4 調試Android程序

  13.5 建立定時人物

    13.5.1 Alarm機制

    13.5.2 Doze模式

  13.6 多窗口模式編程

    13.6.1 進入多窗口模式

    13.6.2 多窗口模式下的生命週期

    13.6.3 禁用多窗口模式

  13.7 Lambda表達式

  13.8 總結

第14章 進入實戰----開發酷歐天氣

  14.1 功能需求及技術可行性分析

  14.2 Git時間----將代碼託管到GitHub上

  14.3 建立數據庫和表

  14.4 遍歷全國省市縣數據

  14.5 顯示天氣信息

    14.5.1 定義GSON實體類

    14.5.2 編寫天氣界面

    14.5.3 將天氣顯示到界面上

    14.5.4 獲取必應每日一圖

  14.6 手動更新天氣和切換城市

    14.6.1 手動更新天氣

    14.6.2 切換城市

  14.7 後臺自動更新天氣

  14.8 修改圖標和名稱

  14.9 你還能夠作的事情

第15章 最後一步----將應用發佈到360應用商店

  15.1 生成正式簽名的APK文件

    15.1.1 使用Android Studio生成

    15.1.2 使用Gradle生成

    15.1.3 生成多渠道APK文件

  15.2 申請360開發者帳號

  15.3 發佈應程序

  15.4 嵌入廣告進行盈利

    15.4.1 註冊騰訊廣告聯盟帳號

    15.4.2 新建媒體和廣告位

    15.4.3 接入廣告SDK

    15.4.4 從新發布應用程序

  15.5 結束語

相關文章
相關標籤/搜索