1. 程式人生 > >Android Studio 單刷《第一行程式碼》系列 01 —— 第一戰 HelloWorld

Android Studio 單刷《第一行程式碼》系列 01 —— 第一戰 HelloWorld

前言(Prologue)

本系列將使用 Android Studio 將《第一行程式碼》(書中講解案例使用Eclipse)刷一遍,旨在為想入坑 Android 開發,並選擇 Android Studio 作為開發 IDE 的同學開路。
PS:其實我就是現學現賣,希望我能堅持刷完。

系列目錄在此:

關鍵詞

《第一行程式碼》:CSDN 知名博主郭霖所著,Android 入門書籍。
Android Studio :谷歌目前主推的 Android 開發 IDE 工具。

戰前準備

  • 《第一行程式碼》一本:或者電子書之類的,反正我是買了一本實體書。(PS:我會盡量寫的完整,但不保證沒有書籍對照的情況下你能完全看懂,畢竟本人水平有限。)
  • Android 手機一部:由於眾所周知的模擬器太慢,再加上我的膝上型電腦實在太古老了,跑模擬器太卡,我將使用真機進行開發、除錯。(你可以使用模擬器,具體怎麼使用請參考上面提到的 stormzhang 的系列教程)

摘要(Abstract)

第一戰,必然是 Hello world!目標:建立一個 APP project,執行、檢視目錄結構。

建立 HelloWorld

開啟 Android Studio,選擇 Start a new Android Studio project,此時會彈出建立 Android 專案的對話方塊,填好 Application name(應用名稱),選擇好 project location(專案路徑),然後點 Next。如下圖

new project

接下來選擇 Minimum SDK(程式最低相容版本),下面還有一個說明(your app will run on approximately 90.4% of the devices that are active on the Google Play Store) 會告訴你選擇這個最低相容版本大約可以支援多少裝置。當然這是來自 Google Play Store 的資料,國內的話僅供參考吧。我選擇 5.0 試了一下,悲催的 < 0.1%,老老實實的選擇 4.0 吧,然後點Next。如下圖

minimum SDK

接下來選擇 Activity(活動介面),我們選擇 Blank Activity,繼續點Next。我們需要給你剛剛選擇的 Blank Activity 起名。Activity Name 我們填 HelloWorldActivity,下面的 Layout Name、Title、Menu Resource Name 都會自動跟著改變。如下圖

customize the Activity

最後點選Finish,OK,專案建立完成。

執行

點選工具欄中的綠色小箭頭,或者按 Shift+F10 執行專案(在此之前請將你的手機連線到電腦,或者建立好一個模擬器)。如下圖

run project

經過一番艱苦卓絕的編譯之後,彈出了 Choose Device 的對話方塊,這裡選擇你的手機或模擬器,然後點選 OK。(PS:這裡可以選擇 Use same device for future launches. 複選框,這樣以後執行就會預設選擇的裝置,不需要每次都選擇裝置了。)

看到熟悉的 Hello world 了吧。好了,就這樣我們打響了 Android 戰場的第一槍,Hello World 功不可沒。

分析第一個 Android 程式

來看一下我們的專案目錄結構吧,預設是這樣的。如下圖

android directory structure

可以看到跟書中的 Eclipse 結構有很大區別,反正我是看不習慣(因為搞Java用Eclipse用慣了)。點選上圖中紅圈的地方,我們切換到 Project 模式。如下圖

project directory structure

和書中所講的 Eclipse 目錄有一些區別:

  • 上圖目錄中將 java 程式碼和資原始檔(圖片、佈局檔案等)全部歸結為 src,在 src 目錄下有一個 main 的目錄,同時劃分出 java 和 res 兩個目錄, java 目錄則相當於 Eclipse 下的 src 目錄,res 目錄結構則一樣。
  • java 目錄:放置所有 java 程式碼,展開後可以看到剛才建立的 HelloWorldActivity 檔案。
  • res 目錄:放置專案中使用到的所有圖片、佈局、字串等資源,後面再詳細說明。
  • libs 目錄:放置專案中使用的第三方包,後面用到的時候再詳細說明。
  • AndroidManifest.xml:整個專案的配置檔案,在程式中定義的所有四大元件都需要在這個檔案裡註冊。後面用到的時候再詳細說明。

書中還提到幾個目錄和檔案:

  • gen
  • assets
  • bin
  • project.properties

這些在 Android Studio 建立的專案中並沒有找到,但是他們都有對應的目錄或檔案,後面用到的時候再詳細說明。

分析專案是如何執行的

AndroidManifest.xml

開啟檔案可以找到如下程式碼:

    <activity
        android:name=".HelloWorldActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

這段程式碼表示對 HelloWorldActivity 這個活動進行註冊,沒有註冊的活動是不能使用的。其中 intent-filter 裡的兩行程式碼非常重要,表示 HelloWorldActivity 是這個專案的主活動,專案執行時首先啟動這個活動。

HelloWorldActivity

開啟檔案可以找到如下程式碼:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_hello_world);
}

onCreate() 方法是一個活動被建立時必定要執行的方法。Android 程式的設計講究邏輯和檢視分離。其中第二行呼叫了 setContentView() 方法,這個方法為當前活動引入了一個 activity_hello_world 佈局,用來顯示當前活動的檢視。

activity_hello_world.xml

佈局檔案都是定義在 res/layout 目錄下的,找到並開啟檔案,找到如下程式碼:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".HelloWorldActivity">

    <TextView 
        android:text="@string/hello_world" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>

其中的 TextView 是 Android 提供的一個控制元件,可以用來顯示文字。
這句程式碼 android:text="@string/hello_world" 是用來定義顯示的文字內容的,其中引用了定義在 res/values/strings.xml 中的 hello_world 字串。
Android 不推薦在程式中對字串進行硬編碼,通常是把字串定義在 res/values/strings.xml,然後可以在佈局檔案或程式碼中引用。大家可以找到該檔案,開啟看看。

這裡還有一個問題要說明:可能大家在開啟 activity_hello_world.xml 這個檔案時看到的並不是上面程式碼裡的樣子。如下圖

layout xml

這裡明明顯示著 android:text="Hello world!",和我上面貼的程式碼不一樣啊。其實把滑鼠移到上面看看,或者點一下你就知道了。這應該是 Android Studio 的一個特性吧。

專案資源 res

首先看一下 res 的目錄結構,如下圖

res

1. mipmap

用來放圖片的。跟書中 Eclipse 中生成的有些區別,mipmap-hdpi 等代替了 drawable-hdpi。用法上區別不大,在引用時使用 @mipmap 就行了。我 Google Baidu 了一下,在 eoe 論壇裡有人這麼說。

Mipmaps早在Android2.2+就可以用了,但是直到4.3 google才強烈建議使用。把圖片放到mipmaps可以提高系統渲染圖片的速度,提高圖片質量,減少GPU壓力。so,do it。

2. layout

用來放佈局檔案的。

3. values

用來放字串的。

4. menu

用來放選單檔案的。

其它(Miscellaneous)

儘管我試圖在本文中儘量完整的進行描述,但受限於篇幅和我的個人水平,本文難免有所遺漏,歡迎在評論中指出。
如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!

關於作者(About Me)

相關推薦

Android Studio 第一程式碼系列 05 —— Fragment 基礎

前情提要(Previously) 本系列將使用 Android Studio 將《第一行程式碼》(書中講解案例使用Eclipse)刷一遍,旨在為想入坑 Android 開發,並選擇 Android Studio 作為開發 IDE 的同學開路。 PS:其實我就是現學現賣,希望我能堅持刷完。 在

Android Studio 第一程式碼系列 04 —— Activity 相關

前情提要(Previously) 本系列將使用 Android Studio 將《第一行程式碼》(書中講解案例使用Eclipse)刷一遍,旨在為想入坑 Android 開發,並選擇 Android Studio 作為開發 IDE 的同學開路。 PS:其實我就是現學現賣,希望我能堅持刷完。 系

Android Studio 第一程式碼系列 02 —— 日誌工具 LogCat

前情提要(Previously) 本系列將使用 Android Studio 將《第一行程式碼》(書中講解案例使用Eclipse)刷一遍,旨在為想入坑 Android 開發,並選擇 Android Studio 作為開發 IDE 的同學開路。 PS:其實我就是現學現賣,希望我能堅持刷完。 在

Android Studio 第一程式碼系列 01 —— 第一 HelloWorld

前言(Prologue) 本系列將使用 Android Studio 將《第一行程式碼》(書中講解案例使用Eclipse)刷一遍,旨在為想入坑 Android 開發,並選擇 Android Studio 作為開發 IDE 的同學開路。 PS:其實我就是現學現賣,希望我能堅持

Android Studio 第一程式碼系列 06 —— Fragment 生命週期

前情提要(Previously) 本系列將使用 Android Studio 將《第一行程式碼》(書中講解案例使用Eclipse)刷一遍,旨在為想入坑 Android 開發,並選擇 Android Studio 作為開發 IDE 的同學開路。 PS:其實我就是現學現賣,希望

Android Studio 第一程式碼系列目錄

前言(Prologue) 本系列將使用 Android Studio 將《第一行程式碼》(書中講解案例使用Eclipse)刷一遍,旨在為想入坑 Android 開發,並選擇 Android Studio 作為開發 IDE 的同學開路。 PS:其實我就是現學現賣,希望我能堅持刷完。 關鍵詞 《第一行程式碼》:C

Android Studio 第一程式碼系列 07 —— Broadcast 廣播

前情提要(Previously) 本系列將使用 Android Studio 將《第一行程式碼》(書中講解案例使用Eclipse)刷一遍,旨在為想入坑 Android 開發,並選擇 Android Studio 作為開發 IDE 的同學開路。 PS:其實我就是現學現賣,希望我能堅持刷完。 系列目錄在此: 系

Android Studio 第一程式碼系列 03 —— Activity 基礎

前情提要(Previously) 本系列將使用 Android Studio 將《第一行程式碼》(書中講解案例使用Eclipse)刷一遍,旨在為想入坑 Android 開發,並選擇 Android Studio 作為開發 IDE 的同學開路。 PS:其實我就是現學現賣,希望我能堅持刷完。 在 Day 1、Da

第一程式碼系列第二章——更多隱式Intent用法(開啟網頁)

效果圖 修改FirstActivity中按鈕事件 Button button1 = (Button) findViewById(R.id.button_1); button1.setOnClickListener(new OnClickListener() {

Android Studio 手動建立活動(Activity) 第一程式碼 第二章

活動概念:是一種可以包含使用者介面的元件,主要用於和使用者進行互動 手動建立活動:新建一個Android專案,專案名為ActivityTest,包名使用預設值com.example.activitytest 1.新建Android Studio專案 點選Start a

第一程式碼筆記系列-廣播1)android 廣播動態註冊和靜態註冊有什麼區別及基本用法

新建一個BroadcastTest專案,然後修改MainActivity中的程式碼,如下所示: public class MainActivity extends Activity { private IntentFilter intentFilter; private NetworkChange

Android studio 入門第二天《第一程式碼

一,建立和載入佈局 app/src/main/res/new/directory,建立一個名為layout的目錄,然後右擊/layout resource file/ 新增按鈕程式碼 <LinearLayout xmlns:android="http://sche

Android 學習之《第一程式碼》第二版 筆記(十)探究碎片(二)

一個簡易版的新聞應用 同時相容手機和平板的應用程式 一、佈局 news_content_frag.xml額我的程式碼裡面是news_content_fragment.xml,圖片打錯了 二、程式碼編寫 1. 實體類(News.java) //新聞實體類 pub

Android 學習之《第一程式碼》第二版 筆記(九)探究碎片(一)

一、碎片 1. 碎片是什麼: 碎片(Fragment)是一種可以嵌入在活動當中的UI片段,能讓程式更加合理和充分地利用大螢幕的空間。(可以理解成迷你型活動) 2. 簡單用法: 在一個活動當中新增兩個碎片,並讓這兩個碎片平分活動空間。 1.)效果圖(沒錢買平板,CPU不支援

Android 學習之《第一程式碼》第二版 筆記(十一)詳解廣播機制(一)

一、廣播機制簡介 1. 四大元件之一 2. Android 提供了一套完整的API,允許應用程式自由地傳送和接收廣播。 A. 傳送廣播藉助Intent B. 接收廣播藉助廣播接收器(Broadcast Receiver) 3. 廣播型別: A. 標準廣播: 完全非同步執行

Android 學習之《第一程式碼》第二版 筆記(十二)詳解廣播機制(二)

廣播的最佳實踐——實現強制下線功能 思路:在介面上彈出一個對話方塊,讓使用者無法進行任何操作,必須點選對話方塊中的確定按鈕,然後回到登入介面即可。 一、效果圖 1. 登入介面並輸入賬號密碼 2. 登陸後的介面 3. 強制下線 4. 退回登陸的介面

第一程式碼Android》學習總結第三章 自定義佈局與控制元件

1、View是Android中最基本的元件,它可以在螢幕上繪製一塊矩形區域,並在這塊區域內響應各種事件。所有控制元件都直接或間接繼承自View。 2、ViewGroup是一種特殊的View,可以包含很多子View和子ViewGroup,是一個用於放置控制元件和佈局的容器。所有佈局都直接或間

第一程式碼Android》學習總結第三章 常用控制元件使用方法

1、TextView match_parent:表示讓父佈局決定當前控制元件大小,當前控制元件大小與父佈局大小一樣。 wrap_content:表示讓空間內容決定當前控制元件大小讓當前控制元件大小能夠剛好包含住控制元件內的內容。         對控

第一程式碼Android》學習總結第二章 Activity建立與相關設定

一、id標籤 如果在XML檔案中引用一個id,則使用@id/id_name; 如果在XML檔案中定義一個id,則使用@+id/id_name。 二、程式中設定主活動 在AndroidMaifest.xml中設定 <intent-filter>   

第一程式碼Android》學習總結第四章 廣播機制實踐——強制下線功能

        強制下線功能需要在任何一個介面上彈出一個對話方塊,讓使用者必須點選對話方塊中的確定按鈕,關閉所有活動,然後回到登入介面即可。            1、建立ActivityCo