Android Tutorial 第一堂(3)開始設計 Android 應用程式 by Michael | CodeData
top

Android Tutorial 第一堂(3)開始設計 Android 應用程式

分享:

專欄作者新書出版:Android App程式開發剖析 第三版(適用Android 8 Oreo與Android Studio 3)

Android Tutorial 第一堂(2)準備 Android Studio 開發環境 << 前情

準備好Android Studio開發環境,就可以準備開發第一個Android應用程式專案。一個Android應用程式,除了需要的Java原始程式碼,還必須包含一些Android應用程式需要的檔案,這些檔案都要依照規定放在規定的目錄,例如每一個Android應用程式模組,一定要有一個名稱為「AndroidManifest.xml」的應用程式設定檔,它是一個XML格式的檔案。所以開發Android應用程式,除了使用Java程式設計語言撰寫一些需要的程式碼,也要開始學習Android應用程式專案的結構和各種需要的檔案。

這一章會說明如何建立一個Android應用程式專案,瞭解基本的應用程式專案結構。如何在模擬裝置與實際裝置上執行與測試應用程式。還有認識Android應用程式基本元件與應用程式的種類。

3-1 應用程式專案介紹

目前Android建議的應用程式開發工具為Android Studio,它整合所有開發Android 應用程式需要的工具,包含建立需要的模擬裝置,撰寫需要的程式與檔案,編譯、包裝、執行與測試應用程式,所有的工作都可以在Android Studio中完成。

3-1-1 建立應用程式專案

不管學習哪一種程式技術,第一個應用程式通常是在畫面上顯示一個簡單的問候訊息,例如「Hello world!」。接下來會說明如何建立一個Android應用程式專案,在模擬裝置執行以後,畫面上顯示簡單的問候訊息。雖然第一個Android應用程式專案非常簡單,不過這裡說明建立與執行專案的操作,都是開發Android應用程式基本的操作。

依照下列步驟建立一個Android應用程式,並且在Android模擬裝置中執行與測試:

  1. 啟動Android Studio,選擇「Start a new Android Studio project」:

    AndroidTutorial5_01_03_01

  2. 依照下列的說明輸入應用程式基本資訊,後面會詳細的說明。輸入完後選擇「Next」:

    • Application Name:HelloAndroid。
    • Company Domain:macdidi.net。
    • Package Location:應用程式儲存的位置,使用原來的預設值。

    AndroidTutorial5_01_03_02

  3. 選擇應用程式模組的種類與版本,勾選「Phone and Tablet」,在選擇「Minimum SDK」之前,先選擇「Help me choose」:

    AndroidTutorial5_01_03_03

  4. 顯示目前Android各版本實體裝置的百分比,如果應用程式的最低版本選擇4.0版,API Level為15,有78.3%的實體裝置可以執行這個應用程式。選擇4.0版的項目查詢詳細的資訊:

    AndroidTutorial5_01_03_04

  5. 選擇4.0版的項目以後,畫面右側顯示這個版本支援的項目,選擇「OK」:

    AndroidTutorial5_01_03_05

  6. 回到選擇應用程式種類與版本的畫面,採用「Minimum SDK」預設的選項「Android 4.0.3」,選擇「Next」:

    AndroidTutorial5_01_03_06

  7. 選擇「Blank Activity」,為應用程式加入一個基本的Activity元件,提供這個應用程式一個畫面,選擇「Next」:

    AndroidTutorial5_01_03_07

  8. 設定Activity元件的基本資訊,全部採用預設的名稱與設定,選擇「Finish」完成建立應用程式的設定:

    AndroidTutorial5_01_03_08

  9. Android Studio啟動新的應用程式視窗,第一次啟動的時候會顯示一個提示的視窗。取消「Show Tips on Startup」選項,下次就不會再出現。選擇「Close」:

    AndroidTutorial5_01_03_09

  10. 第一次啟動Android Studio應用程式視窗的時候,會執行一些初始化的工作,請耐心等候。這是完成初始化工作以後的畫面。:

    AndroidTutorial5_01_03_10

  11. 選擇Android Studio功能表「Run -> Run 'app'」,準備在Android模擬裝置中執行與測試。安裝好Android Studio以後,已經建立好一個預設的Android模擬裝置。在選擇裝置的對話框,勾選「Lanuch emulator」表示要啟動Android模擬裝置,Android virtual device目前只有一個選項,最後選擇「OK」:

    AndroidTutorial5_01_03_11

  12. Android Studio啟動Android模擬裝置,並且在模擬裝置安裝與啟動應用程式,這些工作需要花費一些時間,請耐心等候。

  13. Android模擬裝置啟動完成後,畫面為鎖定的狀態,使用滑鼠在畫面下方按住左鍵,往上拖拉以後放開就可以解鎖:

    AndroidTutorial5_01_03_12

  14. 解鎖以後就會出應用程式執行後的畫面:

    AndroidTutorial5_01_03_13

在建立應用程式過程中輸入的資訊,有一些設定必須先認識,否則建立專案以後再執行修改的工作,會比較麻煩一些,而且容易出現錯誤。在第一個視窗的應用程式專案基本資訊部份:

  • Application Name:為這個應用程式取一個名稱,應用程式安裝在裝置以後,這個名稱會出現在應用程式列表的圖示下方,所以名稱應該要儘量簡短一些。
  • Company Domain:輸入公司或個人的網域名稱,用來決定應用程式的主要套件名稱,採用Java應用程式的套件規則。Android規定應用程式一定需要套件,不可以把程式碼放在預設套件,而且最少要有兩層。這個套件名稱非常重要,因為Android應用程式是採用套件名稱來識別的,所以在Google Play上的Android應用程式,不允許有同樣的套件名稱。Android Studio會把你輸入的網域名稱前後顛倒,當作前面的套件名稱,後面再加上應用程式的名稱。例如網域名稱是macdidi.net,應用程式名稱是HelloAndroid,套件的名稱就是「net.macdidi.helloandroid」。
  • Package Location:決定應用程式儲存的位置,使用原來的預設值。

3-1-2 Android應用程式架構

一個Android應用程式專案除了必要的Java原始程式碼,還有各種應用程式需要的檔案,所以應用程式專案的目錄會比較多一些。在Android Studio建立一個應用程式專案以後,會建立一些預設的目錄與檔案,你需要先認識一些基本的目錄。下列是在「app」Android應用程式模組目錄下的內容:

  • mainifests:應用程式模組的主要設定檔「AndroidManifest.xml」在這個目錄下。
  • java:應用程式模組需要的Java原始程式碼都放在這個目錄下,展開它以後會看到一個套件,這是在建立專案時決定的主要套件名稱。目前這個套件下有一個預設元件類別MainActivity.java。
  • res:Android應用程式很重要的資源目錄,應用程式需要的資源,例如圖形(png)與音效(mp3)檔案,還有各種XML格式的資源檔案都放在這個目錄。例如在「res/layout」目錄下,已經建立一個名稱為「activity_main.xml」的預設畫面配置檔案。

另外還有一個「Gradle Scripts」目錄,儲存與Gradle建置系統相關的設定檔,Gradle是Android Studio採用的全新應用程式建置系統。在Android Studio開發Android應用程式,一個應用程式可以有多個模組(Module)。例如一個音樂播放應用程式,可以包含行動電話、平板電腦、穿戴式三個模組,每一個模組都可以被建置成一個獨立的App。在Gradle Scripts目錄有下列兩個主要的設定檔,它們都是Groovy格式的文字檔:

  • build.gradle(Project:專案名稱):應用程式最頂端的Gradle設定檔。以前面建立的應用程式專案來說,名稱是「build.gradle(Project:HelloAndroid)」。
  • build.gradle(Module:模組名稱):每一個模組的Gradle設定檔。以前面建立的應用程式專案來說,名稱是「build.gradle(Module:app)」。

3-2 應用程式模組Gradle設定檔

每一個Android應用程式模組都有一個Gradle建置設定檔案,以前面建立的應用程式專案來說,這個設定檔是在「Gradle Scripts」目錄下的「build.gradle(Module:app)」。下列是這個檔案的基本格式:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 應用程式模組編譯的版本(Android API Level)
    buildToolsVersion "Android建置工具的版本編號"

    defaultConfig {
        applicationId "應用程式模組的主套件名稱"
        minSdkVersion 最低版本(Android API Level)
        targetSdkVersion 主要版本(Android API Level)
        versionCode 自定的應用程式模組版本編號
        versionName "自定的應用程式模組版本名稱"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-    rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
}

在建立應用程式專案的時候,Android Studio會依照你的設定,建立一個像這樣的檔案:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "net.macdidi.helloandroid"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
}

目前Android 2.3.x(API Level 10)的實體裝置還有7.4的比例,如果想要讓應用程式也可以在這一個版本運作,在2.3.x都支援應用程式使用的APIs的情況下,就可以把「defaultConfig」區塊中的「minSdkVersion」設定改為「10」。修改這個設定檔以後,Android Studio會提醒你執行專案同步的工作,選擇畫面上的「Sync Now」:

AndroidTutorial5_01_03_14

在「defaultConfig」區塊中的「versionCode」與「versionName」,可以設定應用程式的版本資訊:

  • versionCode="數字":自己編製的版本流水號,例如1,2,3…。
  • versionName="版本名稱":自己命名的版本名稱,例如1.1或2.0。

在「android」區塊中的「buildToolsVersion」設定,可以用來決定建置工具的版本。因為Andoird建置工具會經常更新,最新的版本可以在Android SDK Manager中查詢:

AndroidTutorial5_01_03_15

3-3 應用程式模組設定檔

每一個Android應用程式模組還有一個主要的設定檔案,檔案的名稱是「AndroidManifest.xml」,位置在應用程式模組的「mainifests」目錄下。它是一個XML格式的檔案,檔案裡面都是一些應用程式非常重要的設定。設定檔的內容使用XML格式的寫法,你會使用一些Android提供的標籤執行需要的設定。

Android應用程式中會包含許多XML格式的檔案,不同用途的檔案,都會使用一些「標籤」來執行一些設定,以應用程式設定檔來說,它的基本內容會像這樣:

<?xml version="1.0" encoding="utf-8"?>
<!-- 上面這行表示這是一個XML文件,一定要在第一行 -->
<!-- 最外層一定是一個manifest的標籤 -->
<manifest 
     xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.macdidi.helloandroid" >

<!-- 在裡面使用不同的標籤執行一些設定 -->
...
<!-- manifest的結束標籤,表示它的範圍 -->
</manifest>

因為在設計Android應用程式的時候,會使用很多XML格式的檔案,所以你必須先瞭解XML基本的語法。XML是一個純文字格式的檔案,不同技術的XML檔案,會有自己設定的各種標籤名稱。使用標籤有幾種固定的寫法,其中一種是包含開始和結束的標籤,在標籤名稱的後面,通常會有一些設定這個標籤的資訊,設定值一定要放在雙引號之間:

<標籤名稱 設定名稱="設定值" ... >
    ...
</標籤名稱>

在執行不同設定的時候也有另外一種寫法,在標籤名稱後面同樣可以有一些設定資訊,不過它沒有結束的標籤,在結尾部份一定要使用「/>」:

<標籤名稱 設定名稱="設定值" ... /> 

在XML文件中的標籤名稱和設定名稱都是分大小寫的,在一個標籤裡面執行一些設定的時候,它們的前後順序並沒有特別規定。例如一個像這樣的標籤設定:

<Button android:color="#000" 
        android:text="Hello!" />

跟這樣的標籤寫法效果是一樣的:

<Button android:text="Hello! " 
        android:color="#000" />

3-3-1 設定應用程式基本資訊

使用Android Studio建立Android應用程式以後,會為你建立好應用程式設定檔案,裡面已經包含在建立專案過程輸入的一些專案基本資訊,例如應用程式模組的名稱。如果在建立專案的時候輸入錯誤的資訊,也可以開啟這個檔案後直接修改它:

<?xml version="1.0" encoding="utf-8"?>
<!-- 最外層一定是一個manifest的標籤 -->
<!-- xmlns:android="...", 這個設定一定要有,而且固定不變 -->
<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android"
    ... >
    ...
</manifest>

在mainfest標籤中有這些應用程式的基本設定:

  • package="應用程式模組的主套件名稱":在建立應用程式的時候輸入的主套件名稱,儘可能不要修改它,如果真的要修改的話,在原始程式碼src目錄下的套件也要一起修改;存檔後,ADT會自動幫你修改gen目錄下的套件名稱。
  • android:installLocation="安裝位置":設定應用程式安裝的位置,可以設定為「auto」、「internalOnly」或「preferExternal」,依序為由系統自動決定、只安裝在內建儲存位置和以外部儲存設備(記憶卡)為優先。

3-3-2 設定應用程式模組的設備資訊

在應用程式設定檔的「mainfest」開始和結束標籤裡面,也可以使用這些標籤加入常用的設定:

<?xml version="1.0" encoding="utf-8"?>
<manifest  .. >
    <!-- 設定應用程式需要的操作設備 -->
    <uses-configuration ... />

    <!-- 設定應用程式需要的螢幕設備 -->
    <supports-screens ... />
</manifest>

如果應用程式需要一些特定的硬體設備才可以正確的運作,例如觸控螢幕或實體鍵盤,可以使用放在mainfest標籤裡面的「uses-configuration」標籤執行相關的設定。它可以使用下列這些設定:

  • android:reqFiveWayNav="true|false":是否需要上下左右方向的控制設備。
  • android:reqHardKeyboard="true|false":是否需要實體鍵盤。
  • android:reqKeyboardType="設定":設定實體鍵盤種類,可以設定為undefined、nokeys、qwerty或twelvekey。
  • android:reqNavigation="設定":是否需要瀏覽資料用的控制設備,可以設定為undefined、nonav、dpad、trackball或wheel。
  • android:reqTouchScreen="設定":設定觸控螢幕設備種類,可以設定為undefined、notouch、stylus或finger,目前的實體裝置大部份都是finger這種觸控螢幕設備。

Android裝置有一個特點,就是各種裝置的螢幕尺寸有很大的差異,如果應用程式需要在特定的螢幕尺寸才可以正確的運作,可以使用放在mainfest標籤裡面的「supports-screens」標籤執行相關的設定。它可以使用這些設定:

  • android:smallScreens="true|false":是否支援比HVGA小的螢幕。
  • android:normalScreens="true|false":是否支援HVGA、WVGA和WQVGA螢幕。
  • android:largeScreens="true|false":是否支援比HVGA、WVGA和WQVGA大的螢幕。
  • android:xlargeScreens="true|false":是否支援像平板電腦的大型螢幕。
  • android:requiresSmallestWidthDp="設定":設定最低螢幕寬度,設定值為畫素,例如「480」。
  • android:compatibleWidthLimitDp="設定":設定相容的最大螢幕寬度,設定值為畫素,例如「800」。
  • android:largeWidthLimitDp="設定":設定最大螢幕寬度,設定值為畫素,例如「1024」。

3-3-3 設定應用程式元件資訊

Android應用程式設定檔裡面,一定要加入需要的應用程式設定,在manifest標籤裡面,一定有一個「application」標籤,在這個標籤中執行應用程式元件的重要設定:

<?xml version="1.0" encoding="utf-8"?>
<manifest  ... >
    <application ... >
        <!-- 應用程式包含的Activity元件 -->
        <activity
            android:name="包含套件名稱的元件類別名稱" >
            ...
        </activity>

        <!-- 應用程式包含的服務元件 -->
        <service 
            android:name="包含套件名稱的元件類別名稱" >
            ...
        </service>

        <!-- 應用程式包含的廣播接收元件 -->
        <receiver 
            android:name="包含套件名稱的元件類別名稱" >
            ...
        </receiver>

        <!-- 應用程式需要的額外資訊 -->
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="..." />
    </application>
</manifest>

Android提供許多不同應用程式的元件,讓你可以建立需要的應用程式,Android元件必須依照規則實作一個Java類別,寫好元件類別以後,一定要在應用程式設定檔的application標籤中加入對應的設定:

  • Activity:設定Activity元件的相關資訊。
  • Service:設定服務元件的相關資訊。
  • Receiver:設定廣播接收與小工具元件的相關資訊。

這些標籤中有一個一定要加入的設定是「android:name」,使用它設定元件類別的名稱,這樣Android才可以正確使用這些應用程式元件。

3-4 Android應用程式介紹

就像個人電腦的應用程式一樣,Android應用程式也有幾種不同的類型,Android作業系統可以讓你依照應用程式的需求,開發許多不同種類的應用程式元件,這些元件可以組合成一個具有操作功能畫面和其它各種用途的應用程式。以應用程式的功能來說,Android應用程式可以分為這些種類:

  • 一般應用程式:和個人電腦中的計算機或文書處理類似,Android可以建立各種提供操作功能與瀏覽資料畫面的「Activity」元件,依照應用程式的需求,可能會有多個「Activity」元件。
  • 背景服務應用程式:在個人電腦中,通常會有一些在背景中運作的應用程式,例如預防病毒的軟體,你不需要去操作它,它會在作業系統的背景中幫我們檢查網路或檔案是否有病毒的問題。Android可以建立在背景中運作的「Service」和「BroadcastReceiver」元件,這種元件會在Android作業系統的背景中運作,在遇到指定的情況時,它就會執行你指定的工作,例如需要在使用者開啟網際網路時執行資料更新的工作,就需要用到這類元件。
  • 小工具:Android提供一種很特別的桌面元件,它可以讓使用者安裝在桌面指定的位置,執行功能操作或瀏覽資料,這種元件稱為「AppWidget」。
    這些只是依照元件的分類來介紹Android應用程式,功能比較單純一點的應用程式,例如計算機,它只需要設計Activity元件提供畫面就可以了;如果應用程式的功能比較複雜,就可能同時需要Activity、Service、BroadcastReceiver和AppWidget四種主要的元件,才能完成應用程式需要的功能。

3-4-1 一般應用程式

如果一個Android應用程式,只有包含一些畫面讓使用者執行操作或瀏覽資料,就可以把它稱為一般應用程式。在一般Android應用程式中,一個畫面就是一個繼承自「android.app.Activity」的Java類別,通常會把它稱為Activity元件,如果應用程式的功能比較複雜一些,需要的畫面,也就是Activity元件就會多一些:

AndroidTutorial5_01_03_16 AndroidTutorial5_01_03_17
AndroidTutorial5_01_03_18 AndroidTutorial5_01_03_19

在建立Android應用程式專案的時候,ADT會幫你建立好一個預設的Activity元件,如果你沒有特別修改名稱的話,它的類別名稱會是「MainActivity」,而且它會放在這個專案設定的主套件下。一般的應用程式設計通常會把應用程式需要的Activity元件類別放在主套件下。開啟這個Activity元件類別後會像這樣:

package net.macdidi.helloandroid;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

// 繼承自Activity類別
public class MainActivity extends Activity {
    // 覆寫Activity類別的onCreate方法
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // 一定要加入呼叫父類別onCreate方法的敘述
        super.onCreate(savedInstanceState);
        // 指定這個元件使用的畫面配置資源
        setContentView(R.layout.activity_main);
    }

    // 設定選單
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        ...
    }
}

Android採用目前Java應用程式常見的框架(Framework)開發方式,這表示你在設計一些Android元件類別的時候,都會讓你繼承一個指定的類別,在撰寫元件類別的時候,也要依照這個元件的規則,覆寫一些需要的方法。以Activity元件類別來說,目前只需要執行畫面設計與指定的工作,Activity元件類別規定你覆寫「onCreate」方法以後,在方法中執行Activity元件的準備工作。Android在啟動這個Activity元件的時候,會呼叫「onCreate」方法一次,執行你寫在這個方法中的程式碼。執行覆寫工作的時候,大部份的情況下,都必須呼叫父類別被覆寫的方法,然後再執行其它需要的工作。

Android應用程式跟一般Java應用程式的設計方式有很大的差異,尤其是在應用程式的資源部份。雖然Activity元件是提供一個應用程式中的畫面,不過在上面的元件類別中你看不到跟畫面相關的程式碼,只有一行指定畫面配置資源的敘述,它呼叫父類別的「setContentView」方法,在參數中指定一個以「R.layout」開始的資源變數,這是Android用來代表畫面配置資源的格式,後面的名稱是畫面資源名稱,你可以使用這個名稱到「專案目錄\res\layout」目錄下找到這個附加檔名為「.xml」的檔案。開啟它後會是這樣的內容:

<!-- 決定畫面的配置 -->
<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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <!-- 目前畫面只有一個文字元件 -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
</RelativeLayout>

Android希望設計應用程式的畫面時,不是在Activity元件類別的程式碼中,使用撰寫程式碼的方式來設計需要的畫面,而是應該使用XML格式的畫面配置檔設計畫面,在這個畫面配置檔案中加入畫面需要的元件,在Activity元件類別把這個檔案引用進來當作它的畫面就可以了。

如果你執行過這個應用程式,出現的畫面應該是簡單的在畫面中顯示「Hello world!」的訊息,可是你在畫面配置檔案中也看不到這個訊息內容。這又是Android一個比較不一樣的設計方式,在應用程式中常需要顯示各種文字,例如顯示在功能按鈕上的文字,Android也不希望你直接設定在畫面配置檔中。所以在上面的文字元件(TextView)中,有一個「android:text」的設定,裡面指定的是「@string/」開始的內容,這是Android另外一種文字資源,後面是它的資源名稱「hello_world」。你可以開啟「專案目錄\res\values\strings.xml」檔案,它的內容會像這樣:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">HelloAndroid</string>
    <string name="action_settings">Settings</string>
    <!-- 在畫面配置檔中使用的文字資源 -->
    <string name="hello_world">Hello world!</string>
</resources>

3-4-2 背景服務應用程式

一般應用程式在使用者啟動以後,可以在畫面上執行功能操作與瀏覽資料,不過結束應用程式以後,它們就不會運作了。在行動裝置中,有一些應用是不需要畫面,可是需要在背景中持續的運作,為我們執行一些指定的工作。例如Android作業系統內建一個檢查應用程式是否需要更新的程式,如果發現需要更新應用程式,它就會通知使用者更新應用程式的訊息。類似這樣的應用會使用服務(Service)元件來完成應用程式的需求。在Android裝置裡面,通常會有一些內建的系統服務,或是一些應用程式啟動的服務在背景運作。執行「設定」應用程式,在應用程式項目的「執行中」可以看到有哪一些服務正在運作:

AndroidTutorial5_01_03_20 AndroidTutorial5_01_03_21

Android服務元件是一個繼承自「android.app.Service」的Java類別,完成需要的元件類別與設定以後,你可以啟動或停止一個服務,啟動的服務會在背景中執行你指定的工作,直到停止服務或重新開機。
行動裝置應用程式也經常需要處理「事件導向」的工作,例如電池電量過低或收到簡訊這類事件發生的時候,如果需要執行一些特定的工作,你可以使用Android另外一種可以在背景中運作的廣播接收元件,它是一個繼承自「android.content.BroadcastReceiver」類別的Java類別,完成元件類別的撰寫和執行需要的設定,這個應用程式被安裝在裝置以後,並不像一般應用程式有一個圖示可以啟動它,當裝置發生元件指定的事件時,Android就會啟動你的廣播接收元件並執行你指定的工作。

3-4-3 小工具

Android作業系統在一般的裝置中,提供五個桌面讓使用者可以自己放一些應用程式的圖示,點選它們就可以開啟應用程式,這也是其它作業系統都會有的功能。Android也提供一種很特別的小工具(AppWidget)元件,使用者把它安裝到桌面上指定的位置,部份的小工具還可以讓使用者調整大小。使用小工具來執行一些像是開啟與關閉無線網路或藍芽的設定,或是使用其它各種應用的小工具,使用者不用進入應用程式,就可以執行一些功能操作或瀏覽資料。Android內建許多好用的小工具,你也可以開發各種不同應用的小工具:

AndroidTutorial5_01_03_22 AndroidTutorial5_01_03_23 AndroidTutorial5_01_03_24

小工具元件是一個繼承自「android.appwidget.AppWidgetProvider」的Java類別,它的設計方式會跟一般應用程式中的Activity元件很不一樣,不過你也需要為它建立一個元件類別,依照小工具元件的規則撰寫程式,設計畫面配置檔和建立所有需要的資源。
從Android 3.0開始,使用者安裝小工具元件的操作方式,改為從應用程式的列表進入後,選擇上方的小工具標籤,找到需要安裝的小工具,長按小工具元件後再放到桌面上。從Android 3.1開始,如果小工具允許修改大小的話,使用者長按安裝在桌面上的小工具,等到調整大小的框線出現以後,就可以把小工具調整為需要的大小了。

AndroidTutorial5_01_03_25 AndroidTutorial5_01_03_26

3-5 在Android Studio撰寫Java程式碼

Android應用程式元件需要搭配Java原始程式與其它各種檔案,撰寫Java程式碼是開發Android應用程式很主要的工作。Java程式採用套件的結構,使用各種Java與Android的類別庫,都需要在程式碼正確的使用「import」敘述,應用程式才不會出現錯誤。
經過安裝與設定好的Android Studio,在輸入程式碼的時候,有許多方便的功能。在Android Studio應用程式視窗,開啟「app -> java -> net.macdidi.helloandroid」目錄下的「MainActivity」,它是一個Activity元件的Java原始程式碼。在這個程式碼的「onCreate」方法最後面,輸入一個在「java.util」套件中很常使用的「Date」類別:

AndroidTutorial5_01_03_27

輸入Date以後,Android Studio會自動列出可以選擇的項目,你可以注意到在java.util和java.sql都有Date類別,選擇java.util套件的Date類別以後,就會自動為你加入import敘述。

在撰寫Java程式碼的時候,也經常從別的地方複製後貼到Android Studio,例如下列這個程式片段:

List<String> names = new ArrayList<>();
names.add("Simon");
names.add("Mary");
names.add("John");

把上面的程式碼複製後貼到Android Studio,也會自動為你加入import敘述。如果貼上的程式碼,出現可以選擇的情況,例如下列這個程式片段:

String name = "Simon";
Date birthdate = new Date();
BigInteger balance = new BigInteger("100");

Android Studio會顯示有多個Date可以選擇的訊息:

AndroidTutorial5_01_03_28

在上面的畫面按「Alt + Enter」,選擇正確的套件名稱後,就可以加入正確的import敘述:

AndroidTutorial5_01_03_29

課程相關的檔案都可以GitHub瀏覽與下載。
http://github.com/macdidi5/AndroidTutorial

後續 >> Android Tutorial 第一堂(4)開發 Android 應用程式的準備工作

分享:
按讚!加入 CodeData Facebook 粉絲群

相關文章

留言

留言請先。還沒帳號註冊也可以使用FacebookGoogle+登錄留言

qp135791104/10

C:\Users\JACK\AppData\Local\Android\sdk\tools\emulator.exe -avd Nexus_5_API_22 -netspeed full -netdelay none

Note: The environment variable $ANDROID_SDK_HOME is set, and the emulator uses that variable to locate AVDs.
This may result in the emulator failing to start if it cannot find the AVDs in the folder pointed to by the
given environment variable.
ANDROID_SDK_HOME=C:\Users\JACK\.android\avd

emulator: ERROR: x86 emulation currently requires hardware acceleration!
Please ensure Intel HAXM is properly installed and usable.
CPU acceleration status: HAX kernel module is not installed!

我的AVD出現這樣的字

ject10/18

當在 [Start a new Android Studio project] 時 ,應用程式基本資訊全部是白色(看不見欄位), 請問應該調整哪一個環境設定, 謝謝!
版本: android-studio-bundle-141.2288178-windows

熱門論壇文章

熱門技術文章