在安卓第三夜 概念漫遊(上)中,我介紹了安卓最基本的功能單元和intent的連線方式。在這個骨架之上,我們可以進一步增加一些與開發密切相關的重要概念。
activity是乙個螢幕介面。介面上總是有各種各樣的檢視元素,比如乙個按鈕,一行文字和乙個輸入欄。每一種檢視元素在安卓中表示為乙個view類,比如button類,textview類和edittext類。安卓的檢視元素很多樣,就連和網頁也都有對應的檢視元素。除了具體的檢視元素,view類還有乙個viewgroup的子類。多個view物件可以歸屬於乙個viewgroup物件,而viewgroup物件往往定義了下屬檢視元素的布局關係,比如自上而下線性排列,或者格點式排列。通過這樣的歸屬關係,乙個activity的所有檢視元素和抽象布局構成乙個檢視樹。這棵樹就包含了整個螢幕的檢視資訊。
檢視樹
在安卓設計中,我們往往要給view元素增加各種屬性,以控制它們的文字、尺寸、大小、顏色等資訊。對於viewgroup來說,它有多個子類,代表了不同的布局方式。比較常見的有線性布局linearlayout和相對布局relativelayout。線性布局是沿著乙個方向線性排列檢視元素,而相對布局則定義了檢視元素和母view物件或兄弟view物件的相對位置關係。通過巢狀使用多種布局,我們可以創造出複雜的介面布局方式。
在乙個activity中,我們可以通過新建view物件的方式,用程式設計的手段來建立檢視樹。檢視元素的屬性可以通過view物件的方法來調整。但更常用的方法是定義乙個xml檔案。利用xml天然的樹形結構來表示乙個檢視樹。乙個xml節點對應乙個view物件,view物件的屬性可以記錄在節點的屬性中。 安卓可以理解這樣的xml定義,並把xml節點例項化為記憶體中的物件,也就是layout inflate的過程。比如下面的xml記錄:
xml version="1.0" encoding="utf-8"它表示了乙個線性布局,包含了乙個文字檢視和乙個按鈕。?>
<
linearlayout
xmlns:android
=""android:layout_width
="match_parent"
android:layout_height
="match_parent"
android:orientation
="vertical"
>
<
textview
android:id
="@+id/text"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"
android:text
="hello, i am a textview"
/>
<
button
android:id
="@+id/button"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"
android:text
="hello, i am a button"
/>
linearlayout
>
從3.0之後,安卓引入了fragment。fragment與activity一樣,包含了乙個檢視樹。由於乙個activity可以包含多個fragment,也就是多個檢視樹,這就增加了介面設計的靈活性。畢竟,在fragment以前,activity只能包含乙個檢視樹,比較死板。有了fragment之後,程式設計師可以根據activity的當前狀況,來選擇所包含的檢視樹,比如在手機螢幕顯示乙個fragment,而在平板上顯示兩個fragment。這樣,檢視的設計也可以重複利用不用不同的裝置了。
fragment的執行方式與activity類似,也是在狀態轉換中呼叫onstart()等方法。
在安卓開發中,有可能需要一些靜態資源,比如、字串、xml檔案等等。這些資源被儲存在安卓專案res/下不同的資料夾中。
不同資源分類存放。我們上面提到用xml來定義布局,它們就儲存在layout下。drawable*的資料夾中包含不同清晰度的,而字串存放在values下的strings.xml中。在安卓專案中,我們可以用id或檔名,來引用對應的資源。
context: 環境資訊和功能
view: 檢視
resource: 靜態資源
四天四夜,與時間賽跑,致敬電賽!
作品封箱,電賽終於結束了。組委會公布題目之後,本來打算做電源的我們,全體懵逼,a題強制性要求用ti公司晶元做控制器,而我們最常用的是stc公司的32系列處理器。c題和d題也與我們前期培訓和除錯的電路有點關係,但關係不大,題目也挺難,經過討論,我們在8.7上午確定了比賽題目,h題,電磁炮。確定完題目之...
2009美國數學建模競賽四天四夜感受o o
2009美國數學建模競賽四天四夜感受 比賽期限是四天四夜 終於熬到了第四天了,現在是凌晨2點半,重要接近了尾聲了,太累了,英語老師在翻譯了,大三了,最後一次了,大學一年級朦朦朧朧的跟高年級的學長們一起學校數學建模,第一次院賽 學院舉行的比賽 不知道怎麼寫,不知道怎麼到電腦上查資料,不知道怎麼和隊友分...
安卓螢幕相關概念
px pixels 畫素 螢幕上的點,與密度相關。密度大了,單位面積上的px比較多。表示螢幕實際的象素。例如,320 480的螢幕在橫向有320個象素,在縱向有480個素。dip或dp 與密度無關的畫素 這個和裝置硬體有關,設定一些view的寬高可以用這個,一般情況下,在不同解析度,都不會有縮放的感...