Android学习笔记(三):Andriod程序框架
修改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。
轉載于:https://www.cnblogs.com/Tammie/archive/2012/06/13/2547723.html
總結
以上是生活随笔為你收集整理的Android学习笔记(三):Andriod程序框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LAUNCHPAD运行5110测试程序
- 下一篇: html里调用css的语句