Android學習筆記(三):Andriod程式架構

來源:互聯網
上載者:User

修改Eclipse的字型,我希望大一些,反正22寸的顯示屏:

Window->Preferences->General->Apprearance->Colors and Fonts -> Java -> Java Editor Text Font(...) -> Edit

在此次,我們先建立一個Hello,Android的程式,並既而討論Andriod的程式架構。

1、建立project:File > New > Project > Andriod > Andriod Project

2、填入poject資訊

  • Project Name:這是project的名字,同時根據這個名字在workspace中自動產生相關目錄(見location)。
  • Application Name:這個映用的名字,載入在Andriod裝置中,表徵圖上顯示的映用名稱。
  • package Name:這是java的package的名稱,這裡,我使用了com.wei.learning.helloandriod。為了避免名稱衝突,採用了標準的namespace的方式。
  • Create Activity:這是Andriod的Activity子類的名稱,一個Anctivity是一個可執行檔類,相當於main。
  • Min SDK Version,這是表明該映用能夠相容的最小的API版本號碼,這裡選擇了7,也就是可支援Andriod 2.1以上的版本。通常選擇Build Target的編譯版本一致。Andriod是前向相容的,以本例子為例,可以在Andriod 2.2的平台上跑,但是如果我們在Build Target中選擇了2.2,不能保證則會2.1的平台上跑。

如果我們不是用Eclipse,我們也可以用命令列產生project,如下:

android create project /
    --package com.wei.learning.helloandroid /
    --activity HelloAndroid /
    --target 2 /
    --path <path-to-your-project>/HelloAndroid

3、寫我們的Hello,Andriod例子

在HelloAndriod/src/com/wei/learning/helloandriod/中是我們的原始碼檔案,這裡只有一個,HelloAndriod.java,內容如下:

package com.wei.learning.helloandriod;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;//在Eclipse中可以簡單採用Shift+Ctrl+O可以自動根據內容產生所需要的import的package。

public class HelloAndriod extends Activity {  //一個Activity是實體用於處理使用者操作,一個映用可以多個分割的activities,但同一時刻使用者主能與其中一個互動
    /** Called when the activity is first created.
     * 這裡的注釋採用javadoc的標準寫法,以便產生我們的API的HTML文檔。
     * OnCreate()用於初始化和UI的建立。*/
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         /* View是在UI layout中使用的元素,包括button等等,這裡使用TextView。建立對講後,設定常值內容,最後使用setcontentView()來將tv對象防止在activity UI中。*/
        TextView tv = new TextView(this);
        tv.setText("Hello, Andriod!");
        setContentView(tv);

        //setContentView(R.layout.main);
    }
}

4、javadoc的注釋

javadoc的注釋方式已經忘得差不多,需要複習一下。

/** ...... */ 注釋若干行,並寫入 javadoc 文檔,命令列為:javadoc -d 文檔存放目錄 -author -version 源檔案名稱.java,在Eclipse中Porject-> Generate Javadoc...

在/** */裡面是可以使用HTML的指令碼,例如<li>,<br>等等。可以在類,方法之前加入注釋說明。例子如下:

/**
* 方法/類的簡述.
* <p>詳細說明第一行<br>
* 詳細說明第二行
* @param ,用於參數描述
* @return ,描述返回之沒有傳回值
*/

@author 標明開發該類別模組的作者
@version 標明該類別模組的版本
@see 參考轉向,也就是相關主題
@param 對方法中某參數的說明
@return 對方法傳回值的說明
@exception 對方法可能拋出的異常進行說明
@author 作者名
@version 版本號碼

5、運行

菜單Run > Run,或者直接按三角表徵圖,選擇”Andriod Application“,將會啟動模擬器,由於我們設定為2.1的編譯環境,將會啟動我們建立的VM2.1來運行。結果如下左邊圖,按右邊返回鍵,可以見右圖,表徵圖等資訊已將安裝。

 

6、project的相關內容

我們先將例子跑起來,回過頭,我們認真看看Andriod project的結構,。圖中所見的結構同我們在project目錄,目錄有:
AndroidManifest.xml  bin/  gen/ res/ assets/ default.properties  proguard.cfg  src/

gen/

gen/下面有一個重要的檔案R.java,這個檔案由系統為一些資源自動產生唯一標識的ID,想象以前的VC中也有類似的檔案。R相當於resourse。

assets/

放入project所需的內容,例片。

res/

我們在res/中加入某些資源,例如一個表徵圖,會在gen/下的R.java中產生一個ID,而assets下的資源將不會,需要通過路徑來進行訪問。res/drawable/中用於存放image,對於表徵圖,提供h,m,l三個解析度,以適用不同解析度的裝置。

在res/layout/下的xml檔案,用於管理我們的UI,對於一個複雜的UI,如果需要改動一點,有時都不知從何開始,因此Andriod提供了Andriod XML檔案。在Andriod的plugin自動產生了main.xml,我實驗了一下,修改無效,只是提供資訊,這是因為我們在程式用對相關組件進行了code,在本例子中如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
</LinearLayout>

xml是樹狀介面,首先描述Layout,然後在Layout中描述各個View和Layout,也就是layout可以嵌套。,只要是View的繼承類即可,包括自己定義的。如上所示的就是我們這個例子的一個View的描述。

andriod:這是XML中的定義,說明使用xmlns:andriod作為其namespace。andriod:layout_width 由於例子中只有唯一的元素,可以佔用全屏,使用fill_paren。

如果我們希望可直接通過修改XML來進行布局,而不是通過在原始碼中進行code。

1) 在main.xml中的TextView中修訂為:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/textview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />

儲存後,我們查看R.java檔案,增加了textview的ID。為了和原來的區別,我們修改text內容,在res/values/strings.xml中,修改:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, I/'m your friend!</string>
    <string name="app_name">Hello,Andriod</string>
</resources>

讓這些內容有效,修改HelloAndriod.java的內容,如下:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); //原來是傳遞一個View對象,現在是傳遞R.layout.main,R的定義見R.java,而R.layout.main就是對應res/layuot/main.xml。
    }

我們在main.xml中增加以下的屬性

    android:layout_weight="2"
    android:textSize="25pt"
    android:gravity="center_horizontal"
    android:background="#999999"
    android:textColor="#aa5533"

其中gravity有以下的選項:top,bottom,left,right,center_vertical,center_horizontal,center,fill_vertical,fill_horizontal,fill,執行。

libs/

如果需要使用第三方的JAR,這放置在此。在這個例子中沒有。

AndridoManifest.xml

Mandifest這個名字很熟悉,是我們將java程式壓縮為jar包,並產生可執行檔的時候需要使用的一個檔案。在這裡描述應用的內容,有點向linux rpm中的*.spec檔案。表明應用的名稱,版本,表徵圖位置,最低版本要求等等。在Eclipse中點擊後,可以有圖形話介面解釋。這是檔案的部分內容:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.wei.learning.helloandriod"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="7" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".HelloAndriod"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

在這裡icon為:@drawable/icon,就是在res/drawable/中名字為icon的image。而@string/app_name,表示在res/values/strings.xml中的定義名字為app_name的字串,在這個例子中文"Hello,Andriod"。activity這裡表明的activity的執行目標的類名稱。

如果我們需要給我們的應用設定使用者的許可,例如允許使用GPS,可以加上<uses-permission android:name="android.permission.ACCESS_GPS /">

每一個Activity都需要在Andriodmanifest.xml檔案進行註冊。一個映用有多個Activity,裡面的類名".HelloAndriod",注意是有一個".",它和package結合起來就是一個完整的類命。而後面<intent-filter>...</intent-filter>中有android.intent.action.MAIN,表明這是應用啟動時需要啟動的Activity。

 

參考來源:http://developer.android.com.nyud.net/resources/tutorials/hello-world.html

相關連結:
我的Android開發相關文章

</ul style="margin-left:>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.