第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開(kāi)發(fā)者教程

Android 入門(mén)教程

菜單類(lèi)控件
菜單:Menu
并發(fā)編程
多線程

絕對(duì)布局 AbsoluteLayout

本節(jié)將介紹 Android 原生布局的最后一個(gè)布局,也是最不常用的布局——絕對(duì)布局(AbsoluteLayout)。目前在 Android SDK 中處于被棄用的狀態(tài),原因是前面學(xué)習(xí)過(guò)的 5 大布局太過(guò)強(qiáng)大。確實(shí),絕對(duì)布局在開(kāi)發(fā)中中可能從來(lái)都用不到,但是我們作為學(xué)習(xí)過(guò)慕課教程的高級(jí)玩家,需要一方面擴(kuò)展自己的知識(shí)面,另一方面需要學(xué)習(xí)絕對(duì)布局的設(shè)計(jì)思想及設(shè)計(jì)理念,這對(duì)我們今后的學(xué)習(xí)都是有益無(wú)害的。

1. 絕對(duì)布局的特性

顧名思義,絕對(duì)布局就是可以設(shè)置布局內(nèi) View 及 ViewGroup 所在的絕對(duì)位置。從名字上聽(tīng)起來(lái)它和相對(duì)布局(RelativeLayout)相反,所以這里我們還是用相對(duì)布局那一節(jié)(第8節(jié))所提到的例子舉例。

如果你想布置你的客廳,你可以將所有的家具都標(biāo)上位置,比如空調(diào)在右上角、沙發(fā)靠下方墻面、茶幾在中間靠下、電視機(jī)靠上方墻面等等。那么客廳就是你的 AbsoluteLayout,空調(diào)、沙發(fā)、茶幾、電視等就是 View,然后我們給每個(gè) View 設(shè)置一個(gè)坐標(biāo),這樣一來(lái)就可以按照我們的要求布置客廳了。

AbsoluteLayout 的工作原理就是這么簡(jiǎn)單,如下圖所示,直接對(duì)他的子 View 設(shè)置 X / Y 坐標(biāo),然后 Android 系統(tǒng)就會(huì)幫我們將各個(gè) View 擺放到相應(yīng)的位置。AbsoluteLayout 比較直觀,但是也非常不靈活,兼容性差?,F(xiàn)在 Android 系統(tǒng)的機(jī)型千奇百怪,難以通過(guò)一套坐標(biāo)系就能適配到各個(gè)不同尺寸的手機(jī)上,就好像如果直接把別人的客廳家具擺放坐標(biāo)照搬到自己家,很可能會(huì)擺出各種奇葩的設(shè)計(jì),這也是 AbsoluteLayout 最大的一個(gè)缺陷。

AbsoluteLayout特性

2. 絕對(duì)布局的屬性

AbsoluteLayout 的屬性非常簡(jiǎn)單,從上面的了解你應(yīng)該也能猜出一二:

  • android:id:
    唯一標(biāo)識(shí)當(dāng)前 View 的 id
  • android:layout_x:
    設(shè)置 View 的橫坐標(biāo)
  • android:layout_y:
    設(shè)置 View 的縱坐標(biāo)

需要注意的是,這里所設(shè)置的橫縱坐標(biāo)均是 View 左上角的坐標(biāo),不是中心點(diǎn)

3. AbsoluteLayout 例子

大家還記得第 10 節(jié)中,我們通過(guò) GridLayout 實(shí)現(xiàn)了一個(gè)登陸頁(yè)面嗎?這一節(jié)我們用 AbsoluteLayout 來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的登陸頁(yè)面。

首先我們需要一個(gè) TextView 作為“賬號(hào)”提示文案、一個(gè) TextView 作為“密碼”提示文案,再加兩個(gè) EditText 作為輸入框,然后還有一個(gè)確認(rèn)按鍵。最后在添加之后我們對(duì)每個(gè) View 設(shè)置一個(gè)坐標(biāo)即可,代碼如下:

<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="38dp"
        android:layout_y="38dp"
        android:text="賬號(hào)" />

    <EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_x="131dp"
        android:layout_y="17dp"
        android:width="33dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="38dp"
        android:layout_y="66dp"
        android:text="密碼" />

    <EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_x="131dp"
        android:layout_y="40dp"
        android:width="33dp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="39dp"
        android:layout_y="109dp"
        android:text="確認(rèn)" />
</AbsoluteLayout>

最后的運(yùn)行效果:

AbsoluteLayout示例

也許在我的這個(gè)設(shè)備上運(yùn)行效果還行,你可以直接拷貝代碼到自己的設(shè)備或者虛擬機(jī)上運(yùn)行,會(huì)發(fā)現(xiàn)在不同尺寸的手機(jī)上效果差異會(huì)很大。極端情況如果你的屏幕更寬、或者干脆就是一臺(tái)平板,那么我們的內(nèi)容會(huì)全部集中在左側(cè),視覺(jué)效果就很差。

4. 小結(jié)

到這里,首先要恭喜你已經(jīng)學(xué)完了 Android 所有的原生布局,對(duì)于 AbsoluteLayout 我們只需要了解,在未來(lái)的開(kāi)發(fā)中并不推薦使用。更多的時(shí)候是采用 LinearLayout + RelativeLayout 來(lái)組合出不同的效果,主要借用 LinearLayout 的 weight 屬性幫我們完成比例適配,然后 RelativeLayout 的相對(duì)位置可以讓我們的布局更加靈活;

如果需要制作表格或者網(wǎng)格結(jié)果,那么 TableLayout / GridLayout 是當(dāng)之無(wú)愧最佳之選;最后幀布局擁有強(qiáng)大的性能優(yōu)勢(shì),很適合作為一個(gè)復(fù)雜布局的 root 布局,在能夠使用的時(shí)候更推薦使用 FrameLayout。
Layout 的存在就是為了對(duì) View 進(jìn)行布局?jǐn)[放,那么接下來(lái)的教程就開(kāi)始進(jìn)入 View 的講解。