安卓第四夜 概念漫遊(下)

2021-07-10 00:13:59 字數 2602 閱讀 7383

在安卓第三夜 概念漫遊(上)中,我介紹了安卓最基本的功能單元和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的寬高可以用這個,一般情況下,在不同解析度,都不會有縮放的感...