本書從Android應(yīng)用出發(fā), 深入講解Android Studio設(shè)計(jì)應(yīng)用程序的基礎(chǔ)知識(shí)。本書共分9章, 詳細(xì)敘述了Android Studio及其開發(fā)過程, 圖形用戶界面設(shè)計(jì) , 多個(gè)圖形界面的程序設(shè)計(jì), 數(shù)據(jù)存儲(chǔ)技術(shù), 圖形與多媒體處理技術(shù), 后臺(tái)服務(wù)與網(wǎng)絡(luò)通信, 地圖服務(wù)及傳感檢測(cè)技術(shù), 應(yīng)用項(xiàng)目開發(fā)實(shí)例。本書內(nèi)容涵蓋了Android的流行版本和新版本的主要功能和特性, 全面介紹了Android手機(jī)編程的基本原理、技術(shù)和應(yīng)用模式。
。1)易學(xué)易懂。本書面向Android系統(tǒng)的初學(xué)者,在敘述方式上淺顯易懂,摒棄枯燥的理論,盡可能使用圖示加以說明。對(duì)每一個(gè)知識(shí)點(diǎn),都配了相應(yīng)的例題。所有例題均短小精悍,適合課堂教學(xué)講授。讀者學(xué)完每一章內(nèi)容后都可以編寫出相應(yīng)功能的程序。
。2)解釋詳細(xì)。對(duì)每一個(gè)例題,均進(jìn)行了詳細(xì)分析和解釋,既可以幫助讀者學(xué)習(xí)理解知識(shí)和概念,大大降低學(xué)習(xí)難度,又具有啟發(fā)性。
(3)Java語言零基礎(chǔ)學(xué)習(xí)。為了幫助沒有Java語言基礎(chǔ)的讀者學(xué)習(xí)Android系統(tǒng),特別安排了一章介紹Java基礎(chǔ)知識(shí)的內(nèi)容。
。4)配有視頻教學(xué) 。書中大部分例題均錄制了視頻教學(xué),詳細(xì)地記錄了設(shè)計(jì)的操作過程,對(duì)重點(diǎn)和難點(diǎn)問題作了詳細(xì)講解,幫助讀者更加輕松、迅速地理解和掌握本書內(nèi)容。
與第1版相比,第2版的最大修改之處是把開發(fā)工具Eclipse換成了Android Studio。這主要考慮Android Studio是Google公司推出的專門為Android“量身定制”的開發(fā)工具,是Google大力支持的一款基于IntelliJ IDEA改造的IDE集成開發(fā)環(huán)境,可以說它是Android開發(fā)工具的未來。
第2版刪除了第1版中Java語言基礎(chǔ)知識(shí)簡介的章節(jié),增加了訪問Web服務(wù)器數(shù)據(jù)的內(nèi)容。另外,由于Android Studio與Eclipse的目錄結(jié)構(gòu)和菜單差異很大,因此很多例題在介紹操作時(shí)做了修改。
第2版全書共分9章,第1章主要講解Android Studio開發(fā)環(huán)境的搭建,并介紹了開發(fā)Android應(yīng)用程序的步驟和應(yīng)用程序框架的結(jié)構(gòu);第2~3章講解如何使用布局和視圖創(chuàng)建用戶界面,介紹了用戶圖形界面的常用組件;第4章介紹圖形與多媒體處理技術(shù),介紹了繪制幾何圖形的基本方法、處理觸摸屏事件的方法,還詳細(xì)討論了音頻播放和視頻播放的設(shè)計(jì)以及錄音、照相技術(shù),并詳細(xì)講解了在Android中實(shí)現(xiàn)動(dòng)畫的技術(shù);第5章介紹后臺(tái)服務(wù)與系統(tǒng)服務(wù),以及系統(tǒng)功能調(diào)用;第6章介紹網(wǎng)絡(luò)通信技術(shù),介紹了Web視圖以及基于TCP協(xié)議的網(wǎng)絡(luò)程序設(shè)計(jì)、基于HTTP協(xié)議的網(wǎng)絡(luò)程序設(shè)計(jì)等網(wǎng)絡(luò)編程技術(shù);第7章介紹應(yīng)用Volley框架訪問Web服務(wù)器,并介紹了JSON數(shù)據(jù)格式和一個(gè)網(wǎng)絡(luò)音樂播放器設(shè)計(jì)實(shí)例;第8章介紹數(shù)據(jù)存儲(chǔ)技術(shù),介紹了SQLite數(shù)據(jù)庫存儲(chǔ)方式、文件存儲(chǔ)方式和XML文件的SharedPreferences存儲(chǔ)方式,還介紹了訪問遠(yuǎn)程數(shù)據(jù)庫的方法;第9章講解地圖服務(wù)與傳感器檢測(cè)技術(shù),地圖服務(wù)主要介紹實(shí)現(xiàn)地圖視圖的基本方法,傳感器檢測(cè)主要介紹重力加速度的應(yīng)用。
本書提供了電子課件和所有例題的源代碼,掃描每章提供的二維碼可觀看教學(xué)視頻。
張思民
2017年5月
第1章 Android系統(tǒng)及其開發(fā)過程 1
1.1 Android系統(tǒng)概述 1
1.1.1 Android系統(tǒng)及特點(diǎn) 1
1.1.2 Android系統(tǒng)的體系結(jié)構(gòu) 2
1.1.3 Android開發(fā)的分類 3
1.2 搭建Android Studio開發(fā)環(huán)境 4
1.2.1 安裝Android Studio前的必要準(zhǔn)備 4
1.2.2 安裝Android Studio詳解 5
1.2.3 設(shè)置環(huán)境變量 7
1.3 Android API和在線幫助文檔 8
1.4 Android應(yīng)用程序的開發(fā)過程 9
1.4.1 開發(fā)Android應(yīng)用程序的一般過程 9
1.4.2 生成Android應(yīng)用程序框架 10
1.4.3 編寫代碼生成MainActivity.java 12
1.4.4 在模擬器中運(yùn)行應(yīng)用程序 13
1.5 Android項(xiàng)目結(jié)構(gòu) 13
1.5.1 目錄結(jié)構(gòu) 13
1.5.2 Android應(yīng)用程序結(jié)構(gòu)分析 19
1.6 Android應(yīng)用程序設(shè)計(jì)示例 21
習(xí)題1 23
第2章 Android用戶界面的設(shè)計(jì) 24
2.1 用戶界面組件包widget和View類 24
2.2 文本標(biāo)簽TextView與按鈕Button 25
2.2.1 文本標(biāo)簽 25
2.2.2 按鈕及按鈕處理事件 27
2.3 文本編輯框 32
2.4 Android布局管理 35
2.4.1 布局文件的規(guī)范與重要屬性 36
2.4.2 常見的布局方式 37
2.5 進(jìn)度條和選項(xiàng)按鈕 46
2.5.1 進(jìn)度條 46
2.5.2 選項(xiàng)按鈕 48
2.6 圖像顯示類ImageView與畫廊組件類Gallery 55
2.6.1 圖像顯示類ImageView 55
2.6.2 畫廊組件類Gallery與圖片切換器ImageSwitcher 59
2.7 消息提示類Toast 64
2.8 列表組件 67
2.8.1 列表組件類ListView 67
2.8.2 ListActivity類 69
2.9 滑動(dòng)抽屜組件類SlidingDraw 72
習(xí)題2 76
第3章 多個(gè)用戶界面的程序設(shè)計(jì) 78
3.1 頁面的切換與傳遞參數(shù)值 78
3.1.1 傳遞參數(shù)組件Intent 78
3.1.2 Activity頁面的切換 78
3.1.3 應(yīng)用Intent在Activity頁面之間傳遞數(shù)據(jù) 82
3.2 菜單設(shè)計(jì) 86
3.2.1 選項(xiàng)菜單 86
3.2.2 上下文菜單 89
3.3 對(duì)話框 91
3.3.1 消息對(duì)話框AlertDialog 91
3.3.2 其他幾種常用對(duì)話框 96
習(xí)題3 100
第4章 圖形與多媒體處理 101
4.1 繪制幾何圖形 101
4.1.1 幾何圖形繪制類 101
4.1.2 幾何圖形的繪制過程 102
4.1.3 自定義組件 107
4.2 觸摸屏事件的處理 110
4.2.1 簡單的觸摸屏事件 110
4.2.2 手勢(shì)識(shí)別 116
4.3 音頻播放 120
4.3.1 多媒體處理包 120
4.3.2 多媒體處理播放器MediaPlayer 120
4.3.3 播放音頻文件 121
4.4 視頻播放 127
4.4.1 應(yīng)用媒體播放器播放視頻 127
4.4.2 應(yīng)用視頻視圖播放視頻 130
4.5 錄音與拍照 133
4.5.1 用于錄音、錄像的MediaRecorder類 133
4.5.2 錄音示例 134
4.5.3 拍照 137
4.6 動(dòng)畫技術(shù) 142
4.6.1 動(dòng)畫組件類 142
4.6.2 補(bǔ)間動(dòng)畫Tween Animation 143
4.6.3 屬性動(dòng)畫Property Animation 148
習(xí)題4 152
第5章 后臺(tái)服務(wù)與系統(tǒng)服務(wù) 153
5.1 后臺(tái)服務(wù)Service 153
5.2 信息廣播機(jī)制Broadcast 157
5.3 系統(tǒng)服務(wù) 166
5.3.1 Android的系統(tǒng)服務(wù) 166
5.3.2 系統(tǒng)通知服務(wù)Notification 167
5.3.3 系統(tǒng)定時(shí)服務(wù)AlarmManager 169
5.3.4 系統(tǒng)功能的調(diào)用 172
習(xí)題5 175
第6章 網(wǎng)絡(luò)通信技術(shù) 176
6.1 Web視圖 176
6.1.1 瀏覽器引擎WebKit 176
6.1.2 Web視圖對(duì)象 176
6.1.3 調(diào)用JavaScript 180
6.2 基于TCP協(xié)議的網(wǎng)絡(luò)程序設(shè)計(jì) 186
6.2.1 網(wǎng)絡(luò)編程的基礎(chǔ)知識(shí) 187
6.2.2 利用Socket設(shè)計(jì)客戶機(jī)/服務(wù)器系統(tǒng)程序 191
6.2.3 應(yīng)用Callable接口實(shí)現(xiàn)多線程Socket編程 196
6.3 基于HTTP協(xié)議網(wǎng)絡(luò)程序設(shè)計(jì) 200
6.3.1 建立PHP服務(wù)器網(wǎng)站 200
6.3.2 應(yīng)用HttpURLConnection訪問Web服務(wù)器 200
習(xí)題6 210
第7章 應(yīng)用Volley框架訪問Web服務(wù)器 211
7.1 Volley框架及其應(yīng)用 211
7.1.1 Volley包的下載與安裝 211
7.1.2 JSON數(shù)據(jù)格式簡介 212
7.1.3 Volley的工作原理和幾個(gè)重要對(duì)象 216
7.1.4 Volley的基本使用方法 217
7.2 應(yīng)用Volley框架設(shè)計(jì)網(wǎng)絡(luò)音樂播放器 221
習(xí)題7 226
第8章 數(shù)據(jù)存儲(chǔ)技術(shù) 227
8.1 SQLite數(shù)據(jù)庫 227
8.1.1 SQLite數(shù)據(jù)庫簡介 227
8.1.2 管理和操作SQLite數(shù)據(jù)庫的對(duì)象 228
8.1.3 SQLite數(shù)據(jù)庫的操作命令 228
8.2 文件的處理 240
8.2.1 輸入/輸出流 240
8.2.2 處理文件流 241
8.3 輕量級(jí)存儲(chǔ)SharedPreferences 248
8.4 訪問遠(yuǎn)程數(shù)據(jù)庫 250
習(xí)題8 255
第9章 地圖服務(wù)與傳感器檢測(cè)技術(shù) 256
9.1 電子地圖服務(wù)的應(yīng)用程序開發(fā) 256
9.1.1 Android地圖的SDK開發(fā)包的下載以及Key的申請(qǐng) 256
9.1.2 顯示地圖的應(yīng)用程序示例 259
9.2 傳感器檢測(cè)技術(shù) 262
9.2.1 傳感器簡介 262
9.2.2 加速度傳感器的應(yīng)用示例 264
習(xí)題9 273
多個(gè)用戶界面的程序設(shè)計(jì)
3.1 頁面的切換與傳遞參數(shù)值
3.1.1 傳遞參數(shù)組件Intent
Intent是Android系統(tǒng)的一種運(yùn)行時(shí)的綁定機(jī)制,在應(yīng)用程序運(yùn)行時(shí)連接兩個(gè)不同組件。在Android 的應(yīng)用程序中不管是頁面切換還是傳遞數(shù)據(jù)或是調(diào)用外部程序都可能要用到Intent。Intent負(fù)責(zé)對(duì)應(yīng)用中某次操作的動(dòng)作、動(dòng)作涉及的數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述負(fù)責(zé)找到對(duì)應(yīng)的組件,將Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。因此可以將Intent理解為不同組件之間通信的“媒介”,其專門提供組件互相調(diào)用的相關(guān)信息。
Intent的屬性有動(dòng)作(Action)、數(shù)據(jù)(Data)、分類(Category)、類型(Type)、組件(Compent)以及擴(kuò)展(Extra),其中最常用的是Action屬性。
例如:
Intent.ACTION_MAIN 表示標(biāo)識(shí)Activity為一個(gè)程序的開始。
Intent.ACTION_GET_CONTENT 表示允許用戶選擇圖片或錄音等特殊種類的數(shù)據(jù)。
Intent.ACTION_SEND 表示發(fā)送郵件的action動(dòng)作。
Telephony.SMS_RECEIVED 表示接收郵件的action動(dòng)作。
Intent.ACTION_ANSWER 表示處理呼入的電話。
Intent.Action_CALL_BUTTON 表示按“撥號(hào)”鍵。
Intent.Action_CALL 表示呼叫指定的電話號(hào)碼。
3.1.2 Activity頁面的切換
Activity跳轉(zhuǎn)與傳遞參數(shù)值主要通過Intent類協(xié)助實(shí)現(xiàn)。在一個(gè)Activity頁面中啟動(dòng)另一個(gè)Activity頁面的運(yùn)行是最簡單的Activity頁面切換方式。其步驟如下:
。1)創(chuàng)建一個(gè)Intent對(duì)象,其構(gòu)造方法如下。
Intent intent = new Intent(當(dāng)前Activity.this, 另一Activity.class);
。2)調(diào)用Activity的startActivity(intent)方法,切換到另一個(gè)Activity頁面。
【例3-1】 從一個(gè)Activity頁面啟動(dòng)另一個(gè)Activity頁面示例。
創(chuàng)建名稱為ex3_1的新項(xiàng)目,包名為com.ex3_1。在本項(xiàng)目中要建立兩個(gè)頁面文件及兩個(gè)控制文件,第1個(gè)頁面的界面布局文件為activity_main.xml、控制文件為MainActivity.java,第2個(gè)頁面的界面布局文件為second.xml、控制文件為secondActivity.java,還要修改配置文件AndroidManifest.xml。
(1)設(shè)計(jì)第1個(gè)頁面。
、 修改第1個(gè)頁面的控制文件MainActivity.java,源代碼如下:
1 package com.ex3_1;
2 import android.app.Activity;
3 import android.content.Intent;
4 import android.os.Bundle;
5 import android.view.View;
6 import android.view.View.OnClickListener;
7 import android.widget.Button;
8 public class MainActivity extends Activity
9 {
10 private Button btn;
11 @Override
12 public void onCreate(Bundle savedInstanceState)
13 {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.activity_main);
16 btn = (Button)findViewById(R.id.mButton);
17 btn.setOnClickListener(new btnclock());
18 }
19 class btnclock implements OnClickListener
20 {
21 public void onClick(View v)
22 {
23 Intent intent = new Intent(MainActivity.this, secondActivity.class);
24 //創(chuàng)建好Intent之后就可以通過它啟動(dòng)新的Activity
25 startActivity(intent);
26 }
27 }
28 }
② 第1個(gè)頁面的布局文件activity_main.xml如下:
1
2 3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:orientation="vertical" >
6 7 android:id="@+id/textView1"
8 android:layout_width="fill_parent"
9 android:layout_height="wrap_content"
10 android:text="@string/hello" />
11 12 android:id="@+id/mButton"
13 android:layout_width="wrap_content"
14 android:layout_height="wrap_content"
15 android:text="@string/button"
16 />
17
(2)設(shè)計(jì)第2個(gè)頁面。
、 在項(xiàng)目中新建第2個(gè)頁面的控制文件secondActivity.java。右擊資源管理器中的com.example.ex3_1選項(xiàng),在彈出的快捷菜單中選擇New(新建)→File(文件)命令,如圖3.1所示。
……