Android程式設計基礎 • 【第1章 Android程式入門】
全部章節 >>>>
本章目錄
1.1 Android 平臺介紹
1.1.1 Android 簡介
Android 一詞本意指“機器人”,它是一種基於 Linux 的自由及開放原始碼的作業系統,主要用於移動裝置,如智慧手機和平板電腦,由 Google 和開放手機聯盟主導開發
Android 作業系統最初由 Andy Rubin 開發,主要用於手機
小米、華為和魅族等新興品牌都推出了相當不錯的 Android手機,並且也獲得了市場的廣泛認可,目前 Android 已經佔據了全球智慧手機作業系統 70% 以上的份額
1.1.2 Android 平臺的發展
隨著網際網路 3G/4G 時代的來臨,國家斥巨資發展移動網際網路產業,移動網際網路前景一片大好。通過大資料分析,2012—2019 年,智慧手機使用者猛增 240%,高達 11 億使用者,而 Android 系統的手機使用者佔比 74%
Android 是第一個完整、開放、免費的作業系統平臺,將會促使移動裝置創新,使使用者體驗到最優越的移動服務;同時,開發商也將獲得全新的開放級別,便於協同合作的開展,保證新型移動裝置的研發速度。
目前,市面上主要的 Android 系統版本及其詳細資訊見
版本號 | 系統代號 | API | 市場佔有率 |
2.2 | 凍酸奶 | 8 | 0.1% |
2.3.3 ~ 2.3.7 | 薑餅 | 10 | 1.5% |
4.0.3 ~ 4.0.4 | 冰淇淋三明治 | 15 | 1.3% |
4.1.x、4.2.x、4.3 | 果凍豆 | 16、17、18 | 5.6%、7.7%、2.3% |
4.4 | 奇巧 | 19 | 27.7% |
5.0、5.1 | 棒棒糖 | 20、21 | 13.1%、21.9% |
6.0 | 棉花糖 | 23 | 18.7% |
7.0 | 牛軋糖 | 24 | 0.1% |
1.1.3 Android 平臺架構
從軟體分層的角度而言,Android 系統由應用層、應用框架層、系統執行庫層和 Linux 核心層組成
- 應用層:應用層位於最上層,該層的所有應用都是使用 Java 語言編寫並執行在虛擬機器上的程式
- 應用框架層:應用框架層主要提供了構建應用程式時可能用到的各種 API,Android 自帶的一些核心應用就是使用這些 API 完成的,開發者也可以通過使用這些 API 來構建自己的應用程式
- 系統執行庫層:系統執行庫層通過一些 C/C++ 庫來為 Android 系統提供了主要的特性支援
- Linux 核心層: Android 基於 Linux 2.6 提供核心系統服務,如安全、記憶體管理、程式管理、網路堆疊和驅動模型等
Android 自發布以來備受關注,越來越多的開發者基於 Android 系統開發應用。與其他手機作業系統相比,Android 具有許多無可比擬的優點,其優勢主要表現在以下 5 個方面:
- 開放性:Android 由 Google 與開放手機聯盟合作開發而成,該聯盟由 30 多家技術和無線應用的領軍企業組成
- 平等性:在 Android 系統中,所有應用程式完全平等,系統預設自帶程式與程式設計師自主開發的程式差別甚微
- 無界性:Android 中的應用程式可以通過標準 API 訪問核心移動裝置的功能
- 便捷性:Android 平臺手機無縫結合 Google 的優秀服務
- 硬體豐富性:同樣基於 Android 系統的開放性,眾多硬體廠商可以推出各種搭載 Android 系統的裝置
1.2 搭建 Android 開發環境
1.2.1 下載和配置 Android Studio
Android 開發可以使用 Windows、Mac OS、Linux 等平臺的作業系統(本書選擇 Windows 10),開發時需要的軟體名稱、使用版本及下載地址見表
軟體名稱 | 使用版本 | 下載地址 |
JDK | 1.8 | https://www.oracle.com/technetwork/java/javase/downloads/index.html |
Android Studio | 3.2.1 | https://developer.android.google.cn/studio/index.html |
Android SDK | 5.1 | http://developer.android.com/sdk/index.html |
Genymotion | 2.12.2 | https://www.genymotion.com/ |
下載和安裝 Android Studio 的操作步驟
1、點選 DOWNLOAD ANDROID STUDIO 按鈕,在彈出的對話方塊上點選同意許可條款並下載 Windows 版本的 Android Studio
2、雙擊下載的安裝檔案,進行安裝
3、點選“Next”,勾選所有的安裝項。選擇安裝項
4、點選“Next”,設定 Android Studio 開發工具的安裝路徑
1.2.2 初始化配置 Android Studio
在“開始”選單中選擇 Android Studio 圖示,開啟開發工具。選擇 Android Studio 開發工具
在彈出的對話方塊中,提示讓使用者選擇是否匯入之前 Android Studio 版本的配置檔案,首次安裝,選擇不匯入
在彈出的對話方塊上點選“Cancel”按鈕
進入到 Android Studio 的配置頁面
點選“Next”選擇安裝型別
點選“Next”,選擇主題
點選“Next”完成配置工作
點選“Finish”按鈕,配置工作全部完成,Android Studio 會嘗試聯網下載一些元件,元件下載完成後點選“Finish”按鈕,進入到 Android Studio 歡迎介面
1.2.3 配置和使用 Genymotion 模擬器
使用 Genymotion 必須先註冊,在 Genymotion 官網註冊並啟用賬號。開啟 Genymotion 的下載頁面,登入賬號,下載最新的Genymotion
下載帶有 Virtual Box 的 Genymotion 安裝檔案進行安裝,在安裝過程中,設定好安裝路徑,根據安裝向提示進行安裝即可
開啟 Genymotion 模擬器,點選“Add”按鈕新增 Android 版本虛擬機器。在彈出的“Virtual device creation wizard”視窗中,使用 Genymotion 賬號登入(沒有登入的情況下無法完成後續配置)
登入完成後,在“Virtual device creation wizard”視窗的“Android version”下拉選項中選擇要下載的Android 虛擬機器版本
在“Virtual device creation wizard”視窗的“Device model”下拉選項中選擇要下載的 Android 虛擬機器裝置型別,可供選擇的有通用手機型別、平板型別、Google 虛擬機器、Sony 虛擬機器等。選擇通用手機型別即可。點選“Next”,為新建立的虛擬裝置命名,繼續點選“Next”,下載 Android 5.1 通用手機版本的虛擬機器
下載完成後, 點選“Finish” 按鈕, 回到“Genymotion for personal use” 視窗, 選 需要開啟的Android 虛擬機器,點選“Start”按鈕,啟動 Android 虛擬機器
1.2.4 實踐練習
1.3 建立和執行第一個 Android 應用程式
1.3.1 開發 Android 應用程式
啟動 Android Studio 後,開發工具將開啟上一次的工程。可以通過工具欄中的“File” “Close Project”關閉當前開啟的工程,選擇“Start a new Android Studio project”建立新工程
單擊“Start a new Android Studio project”,彈出填寫專案基本資訊的介面,在介面中相應的位置填寫 Android 工程名和工程儲存路徑
在圖 1.21 中填寫專案資訊之後單擊“Next”,配置專案所執行的平臺,如可穿戴裝置、電視和 Google 眼鏡
填寫專案資訊之後單擊“Next”,跳轉到建立 Activity 介面,介面中列出來了 Activity 的一些內建模板,選擇一個較為簡潔的模板 Empty Activity 來建立一個空的 Activity
選擇 Activity 模板後單擊“Next”,為建立的 Activity 和檢視命名
Activity Name 表示建立的 Activity 的名字,這裡填入 MainActivity,Layout Name 表示佈局的命名,這裡填入 activity_main。然後點選“Finish”按鈕,並耐心等待一會兒,專案就會建立成功
1.3.2 執行 Android 應用程式
由於 Android Studio 自動生成了很多程式碼和檔案,所以不需要編寫任何程式碼應用程式就已經可以執行了。但是在執行之前還必須要有一個執行的載體,可以是一部 Android 手機,也可以是 Android 模擬器
使用 Genymotion 模擬器執行 Android 應用程式
觀察 Android Studio 頂部工具欄中的圖示,其中左邊的錘子按鈕是用來編譯按鈕的,中間的下拉選單是用來選擇執行哪一個專案的,通常 app 就是當前的主專案,右邊的三角形按鈕是用來執行專案的
啟動 Genymotion 模擬器,點選 Android Studio 工具欄中的執行按鈕,彈出執行裝置的選擇對話方塊
選中啟動的 Genymotion 模擬器,點選“OK”按鈕,Android 應用程式就會執行到模擬器上
1.3.3 實踐練習
1.4 Android 應用程式的目錄結構
1.4.1 Android 工程目錄結構
使用 Android Studio 工具建立的工程,工程目錄目錄結構包含以下 3 個部分:
- manifests:用於存放工程的配置檔案,如 AndroidManifest.xml 檔案。它是整個程式的系統控制檔案,存在於每個應用程式中,程式中定義的 Activity 等元件都需要在這個檔案中註冊,同時還可以在這個檔案中給應用程式新增許可權宣告。
- Java:用於存放所有包及 Java 原始碼,程式碼包括源程式和測試程式。開發 Android 程式時,編寫該目錄下的原始碼佔用了大量時間
- res:包含多個目錄,如 drawable、layout、values 和 mipmap 等,分別用於存放專案工程中使用的圖片、佈局檔案、字串檔案和存放自動縮放圖片的目錄。其中 values 目錄中包含很多 XML 描述檔案,包括字串定義、顏色定義、樣式定義和長度定義等
1.4.2 Android 程式碼解釋
AndroidManifest.xml 檔案是 Android 應用程式的配置檔案,在 HelloWorld 應用中AndroidManifest.xml程式碼如下
<?xml version="1.0" encoding="utf-8"?>
<!-- 整個應用程式的配置檔案,程式中的元件都需要在這個檔案中註冊和配置 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ziniu.android">
<!-- application標籤主要用於配置整個應用程式的基本資訊,包括程式使用的圖示和應用程式的名稱 -->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!-- activity 標籤用於配置 Activity 的基本屬性,包括 Activity 的名稱 -->
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
AndroidManifest.xml 檔案的具體說明見表:
名稱 | 說明 |
activity | 與使用者互動的主要工具。Activity 是應用程式的門面,凡是在 應用中看到的東西,都是放在 Activity 中的 |
android:name | Activity 的名稱 |
intent-filter | Intent 過濾器 |
action | 元件支援的 Intent Action |
category | 元件支援的 Intent Category |
MainActivity 類的程式碼如下:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
需要重寫 onCreate() 方法
MainActivity 類說明:
- 主程式 MainActivity 類繼承自 AppCompatActivity 類,這是一種向下相容的 Activity,可以將 Activity 在各個系統版本中增加的特性和功能最低相容到 Android 2.1 系統
- Activity 是 Android 系統提供的一個 Activity 基類,專案中所有的 Activity 都必須繼承它或者它的子類才能擁有 Activity 的特性 重寫了 onCreate(Bundle savedInstanceState) 方法,這個方法是一個 Activity 被建立時必定要執行的方法
- Android 程式的設計講究邏輯和檢視分離,因此不推薦在 Activity 中直接編寫介面,更加通用的一種做法是,在佈局檔案中編寫介面,然後在 Activity 中引入進來可以看到,onCreate() 方法中呼叫了 setContentView()方法,setContentView() 方法中引入了一個 activity_main 佈局檔案,這個佈局檔案就是應用程式顯示的介面
activity_main.xml 檔案是 MainActivity 的佈局檔案,程式碼如下:
<?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="com.ziniu.android.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
MainActivity 類的佈局檔案說明:
<ConstraintLayout>:定義一個扁平化佈局
android:layout_width:定義當前檢視在螢幕中所佔的寬度。
match_parent 將螢幕的寬度作為佈局的寬度
android:layout_height:定義當前檢視在螢幕中所佔的高度
activity_main 的佈局檔案中設定了一個 TextView 控制元件,用於顯示文字內容
- android:layout_width:屬性值 wrap_content 根據文字寬度而改變控制元件寬度
- android:layout_height:屬性值 wrap_content 根據文字高度而改變控制元件高度
- android:text:設定該 TextView 需要顯示的文字內容
HelloWorld 專案中的 strings.xml 檔案程式碼如下:
<resources>
<string name="app_name">HelloWorld</string>
</resources>
在程式碼中通過 R.string.app_name 可以獲得該字串的引用 在 XML 檔案中通過 @string/app_name 可以獲得該字串的引用
1.4.3 實踐練習
總結:
- Android 系統可分為:應用層、應用框架層、系統執行庫層和Linux 核心層
- 搭建 Android 開發環境需要安裝:JDK、Android Studio、Android SDK和Genymotion Android
- 應用程式的目錄結構包含:manifests、Java和res
相關文章
- Android Camera 程式設計從入門到精通Android程式設計
- Java入門之基礎程式設計Java程式設計
- Linux-shell程式設計入門基礎Linux程式設計
- 【Python入門基礎】網路程式設計Python程式設計
- android基礎學習-android篇day12-android的UI基礎入門AndroidUI
- C#程式設計基礎入門教程pdfC#程式設計
- Android入門教程 | Fragment 基礎概念AndroidFragment
- Python基礎入門(6)- 物件導向程式設計Python物件程式設計
- Python程式設計入門基礎語法詳解Python程式設計
- Android零基礎入門第29節:善用TableLayout表格佈局,Android
- android USB host程式設計Android程式設計
- Android NDK入門:C++ 基礎知識AndroidC++
- 好程式設計師Python培訓分享基礎入門Django程式設計師PythonDjango
- Python程式設計入門——基礎語法詳解(經典)Python程式設計
- Python網路程式設計(基礎總結入門經典)Python程式設計
- android基礎學習-android篇day11-android的入門工具安裝流程Android
- 入門程式碼程式設計程式設計
- Android安全加密:HTTPS程式設計Android加密HTTP程式設計
- Android之串列埠程式設計Android串列埠程式設計
- Android 音視訊入門:C語言基礎AndroidC語言
- Android基礎及應用 介面設計Android
- 程式設計師健康防猝指南5:運動基礎入門程式設計師
- 【Android開發入門教程】二.Android應用程式結構分析Android
- 程式設計和網路程式設計入門程式設計
- Shell 程式設計入門程式設計
- Python程式設計入門Python程式設計
- python程式設計基礎Python程式設計
- shell程式設計基礎程式設計
- Socket程式設計基礎程式設計
- Go程式設計基礎Go程式設計
- Shell程式設計-基礎程式設計
- 好程式設計師Python培訓分享Python入門基礎知識程式設計師Python
- 《Java語言程式設計(基礎篇)(原書第10版)》第2~4章部分程式設計練習題程式碼Java程式設計
- 《Java程式設計邏輯》第3章 類的基礎Java程式設計
- Java基礎008_程式設計入門_計算機史上的兩個鼻祖Java程式設計計算機
- Socket程式設計入門(基於Java實現)程式設計Java
- Windows程式設計系列:圖形程式設計基礎Windows程式設計
- x86平臺SIMD程式設計入門(1):SIMD基礎知識程式設計