⑴ android的ui布局有哪些
布局(Layout)的概念是針對Activity的,Activity就是布滿整 個Android設備的窗口或者懸浮於其他窗口上的交互界面。在一個應用程序中通常由多個Activity構成,每個需要顯示的Activity都需要在AndroidManifest.xml文件之中聲明。
通常情況下,開發人員可以使用兩種方式來創建UI組件,一種方式是使用XML方式來配置UI組件的相關屬性,然後裝載這些UI組件,這也是最常用的方式。但是有些特殊情況下,需要動態生成UI組件,則需要使用第二種方式,完全使用java代碼來創建UI組件。
XML布局文件是Android系統中定義的Layout的常用方式,所有布局文件必須包含在res/layout目錄中,且必須符合Java的命名 規范。當在res/layout目錄下新增了布局文件之後,R.java文件會自動收錄該布局資源,Java代碼可通過setContentView方法 在Activity中顯示該Layout。
setContentView(R.layout.<資源名稱>);
在布局文件中可以指定UI組件的android:id屬性,該屬性的屬性值代表該組件的唯一標識。通過Activity.findViewById()訪問,並且findViewById()必須在setContentView載入xml文件之後使用,否則會拋出異常。
findViewById(R.id.)
Android應用的絕大部分UI組件都放在android.widget包及其子包、android.view包及其子包中,Android應用的 所有UI組件都繼承了View類。View類還有一個重要的子類:ViewGroup,ViewGroup類是所有布局管理器的父類。
ViewGroup容器控制其子組件的分布依賴於ViewGroup.LayoutParams、ViewGroup.MarginLayoutParams兩個內部類。
ViewGroup.LayoutParams提供兩個XML屬性設定組件的大小。
android:layout_height:指定該子組件的基本高度;
android:layout_width:指定該子組件的基本寬度。
這兩個屬性有三個基本值,這兩個屬性有三個特定的值:
fill_parent:指定組件的高度、寬度與父容器組件的一樣。
match_parent:與fill_parent一樣,Android2.2開始推薦使用。
warp_content:內容包裹。
ViewGroup.MarginLayoutParams用於控制子組件周圍的頁邊距。
android:layout_marginBottom(下邊距);
android:layout_marginLeft(左邊距);
android:layout_marginRight(右邊距):
layout_marginTop(上邊距)
對於View的尺寸,android提供了三種單位供選擇使用:
px:像素。
dp:dpi,表示屏幕實際的像素。
sp:與scale無關的像素,與dp類似。
尺寸單位選擇的技巧:如果設置長度、高度等屬性時可以使用dp或sp,但是如果設置字體,需要使用px。如果使用dp或sp,系統會根據屏幕密度的變化進行轉換。
為了適應各種界面風格,Android提供了五種布局規范,利用這五種布局,基本上可以在設備上隨心所欲的擺放任何UI組件,這五種布局分別是:
FrameLayout(幀布局)。
LinearLayout(線性布局)
RelativeLayout(相對布局)。
TableLayout(表格布局)。
AbsoluteLayout(絕對布局)。
線性布局(LinearLayout)
LinearLayout是最常用的布局方式,在XML文件中使用標記。它會將容器里的UI組件一個一個挨著排列起來。但是LinearLayout不會換行,當UI組件超出屏幕之後,則不會被顯示出來。LinearLayout有兩個重要的XML屬性:androidgravity(對齊方 式);android:orientation(排列方式)。
android:orientation(排列方式),設定了LinearLayout中包含的UI組件的排列方式,有兩個選項vertical(豎向)、horizontal(橫向,默認值)
android:gravity(對齊方式),設定LinearLayout中包含UI組件的對齊方式,其選項很多,常用上(top)、下(bottom)、左(left)、右(right)。
⑵ android中有幾種布局技術,各自優缺點
在4.0以前版本中一共有五種布局,都是ViewGroup的子類。分別是AbsoluteLayout、RelativeLayout、LinearLayout、FrameLayout、TableLayout。而TableLayout是LinearLayout的子類。(中文分別是:絕對布局、相對布局、線性布局念弊敏、幀布局、表格布局)。
在2.2作業系統中將AbsoluteLayout過期。而目前FrameLayout、TableLayout也逐漸少用。
在4.0之後又新增GridLayout。(GridLayout最經典的案例是計算器介面)
總之,Android中一共有六種布局。目前推薦使用RelativeLayout、LinearLayout、GridLayout三種布局。
一般簡單的布局就用LinearLayout,復雜點的用RelativeLayout(可以防止多層巢狀),像FrameLayout,裡面的控制元件是重疊的,AbsoluteLayout裡面控制元件位置是絕對的,在螢幕適配方面就不行了。
xml布局簡單,推薦使用;程式碼布局可以實現更豐富的功能。
具體使用根據你自己專案的需求來選擇。
RAID是「Rendant Array of Independent Disk」的縮寫,中文意思是獨立冗餘磁碟陣列。
主要包含RAID 0~RAID 7等數個規范,它們的側重點各不相同,常見的規范有如下幾種:
RAID 0:無差錯控制的帶區組
要實現RAID0必須要有兩個以上硬碟驅動器,RAID0實現了帶區組,資料並不是儲存在一個硬碟上,而是分成資料塊儲存在不同驅動器上。因為將資料分布在不同驅動器上,所以資料吞吐率大大提高,驅動器的負載也比較平衡。如果剛好所需要的資料在不同的驅動器上效率最好。它不需要計算校驗碼,實現容易。它的缺點是它沒有資料差錯控制,如果一個驅動器中的資料發生錯誤,即使其它盤上的資料正確也無濟於事了。不應該將它用於對資料穩定性要求高的場合。如果使用者進卜派行圖象(包括動畫)編輯和其它要求傳輸比較大的場合使用RAID0比較合適。同時,RAID可以提高資料傳輸速率,比如所需讀取的檔案分布在兩個硬碟上,這兩個硬碟可以同時讀取。那麼原來讀取同樣檔案的時間被縮短為1/2。在所有的級別中,RAID 0的速度是最快的。但是RAID 0沒有冗餘功能的,如果一個磁碟(物理)損壞,則所有的資料都無法使用。
RAID 1:鏡象結構
raid1對於使用這種RAID1結構的裝置來說,RAID控制器必須能夠同時對兩個盤進行讀操作和對兩個鏡象盤進行寫操作。通過下面的結構圖您也可以看到必須有兩個驅動器。因為是鏡象結構在一組盤出現問題時,可以使用鏡象,提高系統的容錯能力。它比較容易設計和實現。每讀一次盤只能讀出一塊資料,也就是說資料塊傳送速率與單獨的盤的讀取速率相同。因為RAID1的校驗十分完備,因此對系統的處理能力有很大的影響,通常的RAID功能由軟體實現,而這樣的實現方法在伺服器負載比較重的時候會大大影響伺服器效率。當您的系統需要極高的可靠性時,如進行資料統計,那麼使用RAID1比較合適。而且RAID1技術支援「熱替換」,即不斷電的情況下對故障磁碟進行更換,更換完畢只要從映象盤上恢復資料即可。當主仔枝硬碟損壞時,映象硬碟就可以代替主硬碟工作。映象硬碟相當於一個備份盤,可想而知,這種硬碟模式的安全性是非常高的,RAID 1的資料安全性在所有的RAID級別上來說是最好的。但是其磁碟的利用率卻只有50%,是所有RAID級別中最低的。
RAID2:帶海明碼校驗
從概念上講,RAID 2 同RAID 3類似,兩者都是將資料條塊化分布於不同的硬碟上, 條塊單位為位或字 節。然而RAID 2 使用一定的編碼技術來提供錯誤檢查及恢復。這種編碼技術需要多個磁碟存放檢查及恢復資訊,使得RAID 2技術實施更復雜。因此,在商業環境中很少使用。下圖右邊的各個磁碟上是資料的各個位,由一個數據不同的位運算得到的海明校驗碼可以儲存另一組磁碟上,具體情況請見下圖。由於海明碼的特點,它可以在資料發生錯誤的情況下將錯誤校正,以保證輸出的正確。它的資料傳送速率相當高,如果希望達到比較理想的速度,那最好提高儲存校驗碼ECC碼的硬碟,對於控制器的設計來說,它又比RAID3,4或5要簡單。沒有免費的午餐,這里也一樣,要利用海明碼,必須要付出資料冗餘的代價。輸出資料的速率與驅動器組中速度最慢的相等。
RAID3:帶奇偶校驗碼的並行傳送
raid3這種校驗碼與RAID2不同,只能查錯不能糾錯。它訪問資料時一次處理一個帶區,這樣可以提高讀取和寫入速度,它像RAID 0一樣以並行的方式來存放資料,但速度沒有RAID 0快。校驗碼在寫入資料時產生並儲存在另一個磁碟上。需要實現時使用者必須要有三個以上的驅動器,寫入速率與讀出速率都很高,因為校驗位比較少,因此計算時間相對而言比較少。用軟體實現RAID控制將是十分困難的,控制器的實現也不是很容易。它主要用於圖形(包括動畫)等要求吞吐率比較高的場合。不同於RAID 2,RAID 3使用單塊磁碟存放奇偶校驗資訊。如果一塊磁碟失效,奇偶盤及其他資料盤可以重新產生資料。如果奇偶盤失效,則不影響資料使用。RAID 3對於大量的連續資料可提供很好的傳輸率,但對於隨機資料,奇偶盤會成為寫操作的瓶頸。利用單獨的校驗盤來保護資料雖然沒有映象的安全性高,但是硬碟利用率得到了很大的提高,為(n-1)/n。
RAID4:帶奇偶校驗碼的獨立磁碟結構
raid4RAID4和RAID3很像,不同的是,它對資料的訪問是按資料塊進行的,也就是按磁碟進行的,每次是一個盤。在圖上可以這么看,RAID3是一次一橫條,而RAID4一次一豎條。它的特點和RAID3也挺像,不過在失敗恢復時,它的難度可要比RAID3大得多了,控制器的設計難度也要大許多,而且訪問資料的效率不怎麼好。
RAID5:分散式奇偶校驗的獨立磁碟結構
RAID5清晰圖片從它的示意圖上可以看到,它的奇偶校驗碼存在於所有磁碟上,其中的p0代表第0帶區的奇偶校驗值,其它的意思也相同。RAID5的讀出效率很高,寫入效率一般,塊式的集體訪問效率不錯。因為奇偶校驗碼在不同的磁碟上,所以提高了可靠性,允許單個磁碟出錯。RAID 5也是以資料的校驗位來保證資料的安全,但它不是以單獨硬碟來存放資料的校驗位,而是將資料段的校驗位互動存放於各個硬碟上。這樣,任何一個硬碟損壞,都可以根據其它硬碟上的校驗位來重建損壞的資料。硬碟的利用率為n-1。但是它對資料傳輸的並行性解決不好,而且控制器的設計也相當困難。RAID 3 與RAID 5相比,重要的區別在於RAID 3每進行一次資料傳輸,需涉及到所有的陣列盤。而對於RAID 5來說,大部分資料傳輸只對一塊磁碟操作,可進行並行操作。在RAID 5中有「寫損失」,即每一次寫操作,將產生四個實際的讀/寫操作,其中兩次讀舊的資料及奇偶資訊,兩次寫新的資料及奇偶資訊。RAID-5的話,優點是提供了冗餘性(支援一塊盤掉線後仍然正常執行),磁碟空間利用率較高(N-1/N),讀寫速度較快(N-1倍)。RAID5最大的好處是在一塊盤掉線的情況下,RAID照常工作,相對於RAID0必須每一塊盤都正常才可以正常工作的狀況容錯效能好多了。因此RAID5是RAID級別中最常見的一個型別。RAID5校驗位即P位是通過其它條帶資料做異或(xor)求得的。計算公式為P=D0xorD1xorD2…xorDn,其中p代表校驗塊,Dn代表相應的資料塊,xor是數學運運算元號異或。
RAID5校驗位演演算法詳解
P=D1 xor D2 xor D3 … xor Dn (D1,D2,D3 …Dn為資料塊,P為校驗,xor為異或運算)
XOR(Exclusive OR)的校驗原理如下表:
A值 B值 Xor結果
0 0 0
1 0 1
0 1 1
1 1 0
這里的A與B值就代表了兩個位,從中可以發現,A與B一樣時,XOR(非或又稱"非異或")結果為0,A與B不一樣時,XOR結果就是1,如果知道XOR結果,A和B中的任何兩個數值,就可以反推出剩下的一個數值。比如A為1,XOR結果為1,那麼B肯定為0,如果XOR結果為0,那麼B肯定為1。這就是XOR編碼與校驗的基本原理。
RAID6:兩種儲存的奇偶校驗碼的磁碟結構
raid6名字很長,但是如果看到圖,大家立刻會明白是為什麼,請注意p0代表第0帶區的奇偶校驗值,而pA代表資料塊A的奇偶校驗值。它是對RAID5的擴充套件,主要是用於要求資料絕對不能出錯的場合。當然了,由於引入了第二種奇偶校驗值,所以需要N+2個磁碟,同時對控制器的設計變得十分復雜,寫入速度也不好,用於計算奇偶校驗值和驗證資料正確性所花費的時間比較多,造成了不必須的負載。我想除了軍隊沒有人用得起這種東西。
常見的RAID6組建型別RAID 6(6D + 2P)
1 RAID 6(6D + 2P)原理
和RAID 5相似,RAID 6(6D + 2P)根據條帶化的資料生成校驗資訊,條帶化資料和校驗資料一起分散儲存到RAID組的各個磁碟上。在圖1中,D0,D1,D2,D3,D4和D5是條帶化的資料,P代表校驗資料,Q是第二份校驗資料。
RAID 6(6D + 2P)根據條帶化的資料生成校驗資訊,條帶化資料和校驗資料一起分散儲存到RAID組的各個磁碟上
RAID 6校驗資料生成公式(P和Q):
P的生成用了異或
P = D0 XOR D1 XOR D2 XOR D3 XOR D4 XOR D5
Q的生成用了系數和異或
Q = A0*D0 XOR A1*D1 XOR A2*D2 XOR A3*D3 XOR A4*D4 XOR A5*D5
D0~D5:條帶化資料
A0~A5:系數
XOR:異或
*:乘
在RAID 6中,當有1塊磁碟出故障的時候,利用公式1恢復資料,這個過程是和RAID 5一樣的。而當有2塊磁碟同時出故障的時候,就需要同時用公式1和公式2來恢復資料了。
各系數A0~A5是線性無關的系數,在D0,D1,D2,D3,D4,D5,P,Q中有兩個未知數的情況下,也可以聯列求解兩個方程得出兩個未知數的值。這樣在一個RAID組中有兩塊磁碟同時壞的情況下,也可以恢復資料。
上面描述的是校驗資料生成的演演算法。其實RAID 6的核心就是有兩份檢驗資料,以保證兩塊磁碟同時出故障的時候,也能保障資料的安全。
RAID7:優化的高速資料傳送磁碟結構
RAID7所有的I/O傳送均是同步進行的,可以分別控制,這樣提高了系統的並行性,提高系統訪問資料的速度;每個磁碟都帶有高速緩沖儲存器,實時作業系統可以使用任何實時操作晶片,達到不同實時系統的需要。允許使用SNMP協議進行管理和監視,可以對校驗區指定獨立的傳送通道以提高效率。可以連線多台主機,因為加入高速緩沖儲存器,當多使用者訪問系統時,訪問時間幾乎接近於0。由於採用並行結構,因此資料訪問效率大大提高。需要注意的是它引入了一個高速緩沖儲存器,這有利有弊,因為一旦系統斷電,在高速緩沖儲存器內的資料就會全部丟失,因此需要和UPS一起工作。當然了,這么快的東西,價格也非常昂貴。
RAID10/01:高可靠性與高效磁碟結構
這種結構無非是一個帶區結構加一個鏡象結構,因為兩種結構各有優缺點,因此可以相互補充,達到既高效又高速還可以互為映象的目的。大家可以結合兩種結構的優點和缺點來理解這種新結構。這種新結構的價格高,可擴充性不好。主要用於容量不大,但要求速度和差錯控制的資料庫中。
其中可分為兩種組合:RAID10和RAID01
RAID 10是先鏡射再分割槽資料。是將所有硬碟分為兩組,視為是RAID 0的最低組合,然後將這兩組各自視為RAID 1運作。RAID 10有著不錯的讀取速度,而且擁有比RAID 0更高的資料保護性。
RAID 01則是跟RAID 10的程式相反,是先分割槽再將資料鏡射到兩組硬碟。它將所有的硬碟分為兩組,變成RAID 1的最低組合,而將兩組硬碟各自視為RAID 0運作。RAID 01比起RAID 10有著更快的讀寫速度,不過也多了一些會讓整個硬碟組停止運轉的機率;因為只要同一組的硬碟全部損毀,RAID 01就會停止運作,而RAID 10則可以在犧牲RAID 0的優勢下正常運作。
RAID 10巧妙的利用了RAID 0的速度以及RAID 1的保護兩種特性,不過它的缺點是需要的硬碟數較多,因為至少必須擁有四個以上的偶數硬碟才能使用。
RAID 50:被稱為分布奇偶位陣列條帶
同RAID 10相仿的,它具有RAID 5和RAID 0的共同特性。它由兩組RAID 5磁碟組成(每組最少3個),每一組都使用了分散式奇偶位,而兩組硬碟再組建成RAID 0,實驗跨磁碟抽取資料。RAID 50提供可靠的資料儲存和優秀的整體效能,並支援更大的捲尺寸。即使兩個物理磁碟發生故障(每個陣列中一個),資料也可以順利恢復過來。
RAID 50最少需要6個驅動器,它最適合需要高可靠性儲存、高讀取速度、高資料傳輸效能的應用。這些應用包括事務處理和有許多使用者存取小檔案的辦公應用程式。
RAID 53:稱為高效資料傳送磁碟結構
結構的實施同Level 0資料條陣列,其中,每一段都是一個RAID 3陣列。它的冗餘與容錯能力同RAID 3。這對需要具有高資料傳輸率的RAID 3配置的系統有益,但是它價格昂貴、效率偏低。
RAID 1.5:一個新生的磁碟陣列方式
它具有RAID 0+1的特性,而不同的是,它的實現只需要2個硬碟。
從表面上來看,組建RAID 1.5後的磁碟,兩個都具有相同的資料。當然,RAID 1.5也是一種不能完全利用磁碟空間的磁碟陣列模式,因此,兩個80GB的硬碟在組建RAID 1.5後,和RAID 1是一樣的,即只有80GB的實際使用空間,另外80GB是它的備份資料。如果把兩個硬碟分開,分別把他們執行在原系統,也是暢通無阻的。但通過實際應用,我們發現如果兩個硬碟在分開執行後,其資料的輕微改變都會引起再次重組後的磁碟陣列,沒法實現完全的資料恢復,而是以資料較少的磁碟為准。
:ke../view/7102.htm
一是基於埠的靜態vlan,一是基於mac地址的動態vlan,
布局最好是根據電路的原理先把元器件布局好,布線的話,數位電路用自動布線加手工調整,也可以先把關鍵的部分手工布好,再自動走其他的線,最後手工調整,類比電路、高頻電路都是需要手工布線的 自動的快,手動的是合理
一般是先自動後再用手動更改自動布線效率高,手工布線更合理
air sole:元祖級氣墊,厚1/2英寸,具有一定減震力現在常常用於入門級球鞋中。分為內建和外接。
zoom air:在一個較薄的氣墊中加入立體織物,以增強其彈性,多用於前掌內建,以增加啟動速度。
zoom cage:zoom air的加大版本,在強調彈性的同時加強了緩震性,但是由於設計因素,因此外部基本上加上龍骨作為支撐。多用於跑鞋。
air max:氣體容量大,緩震效果一流,內部分隔為不同氣室,氣壓不同,以增強穩定性。多用於中鋒鞋或者後掌。腳感較硬,沉重。
total max:理解為巨型max就可以了。
tuned air:一種非常好的氣墊,內部半圓形球體可以調節氣壓,緩震效果一流,但是成本太高,已經幾乎絕跡,但是有的跑鞋上貌似還有使用的說。
shox:工程橡膠一體鑄成的圓柱體結構,機械緩震體系,依賴形變來緩沖並反彈,目前唯一經過證實可以提高彈跳的科技。
impax:另外一種機械緩震系統,依靠拱形結構在運動中的形變來吸收沖擊力。實際應用效果遠不如理論效果,緩震較差,硬。
i.p.s:jordan系列自主研發的最新科技,根據運動中足底受力點來安置不同密度的phylon柱來提供緩震,用於jordan鞋。
phylon:就是你看見的nike的鞋子的白色鞋底
單提馬:中路防守薄弱 可以起橫車在六路和四路加強中路防與攻 注意對手一般會從中路進攻 比如盤頭馬。 窩心炮:炮窩心不宜太久,如果出不去了會造成麻煩 一般是為了強行吃對方中路的兵或進五路兵。 巡河車:對掉兵卒,活馬路,並且保馬,要注意如果你是車 馬 兵這樣的位置,對方進炮拴住你車和馬 那就相當麻煩了,所以進巡河車一定注意對方的炮。 夾炮屏風:炮在士角的位置 然後上兩個正馬,一般走成士角炮 和 過宮炮 局,靈活運用炮,攻守兼備。但要注意對方會出車騷擾你的陣型 特別是沒有跟的馬。 仙人指路:第一步走三路或七路兵,應付對仙人指路有同樣進兵卒,有頑強兇狠的直接運炮打兵。所以要看對方怎麼走,這種開局比較考棋力。初學者一般不建議走。 飛相局:首著飛相,比較注重防守,可以走成很多布局。。
一般的分旱秧和水秧,這個前期秧苗耐旱點且工作簡單一些,但是浪費種子多一點秧苗沒有水秧苗好。至於很詳細的東西就不好說了。
動態布局,也就是可以根據業務的需求改變介面。實際上就是用程式碼寫出介面,程式碼量比較大。而且維護起來十分的繁瑣。特別是一些介面空間比較多的時候。靜態的布局,是通過xml來實現的,適用於頁面比較固定的情況。但是維護起來比較方便。
噴墨印表機優點:整機價格相對彩色鐳射機便宜,較低的一次性購買成本獲得彩色照片級輸出的效果,缺點:使用耗材為墨盒,成本較高,長時間不用容易堵頭;
鐳射印表機優點:耗材單張列印成本低,耗材為墨粉,長時間不用也不用擔心堵頭的問題,列印速度快,高階產品可以滿足高負荷企業級輸出以及圖文輸出,缺點:中低端彩激的彩色列印效果不如噴墨機,可使用的列印介質較少;
針式印表機優點:可以復寫列印(發票及多聯單據),可以超厚列印(存摺證書列印),耗材為色帶,耗材成本低,缺點:工作噪音大,體積不可能縮小,列印精度不如噴墨及鐳射機。
⑶ Android 界面排版
Android布局是應用界面開發的重要一環,在Android中,共有五種布局方式,分別是:FrameLayout(框架布局),LinearLayout (線性布局),AbsoluteLayout(絕對布局),RelativeLayout(相對布局),TableLayout(表格布局).
一、FrameLayout
這個布局可以看成是牆腳堆東西,有一個四方的矩形的左上角牆腳,我們放了第一個東西,要再放一個,那就在放在原來放的位置的上面,這樣依次的放,會蓋住原來的東西。這個布局比較簡單,也只能放一點比較簡單的東西。
二、LinearLayout
線性布局,這個東西,從外框上可以理解為一個div,他首先是一個一個從上往下羅列在屏幕上。每一個LinearLayout裡面又可分為垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )。當垂直布局時,每一行就只有一個元素,多個元素依次垂直往下;水平布局時,只有一行,每一個元素依次向右排列。
linearLayout中有一個重要的屬性 android:layout_weight="1",這個weight在垂直布局時,代錶行距;水平的時候代表列寬;weight值越大就越大。
三、AbsoluteLayout
絕對布局猶如div指定了absolute屬性,用X,Y坐標來指定元素的位置android:layout_x="20px" android:layout_y="12px" 這種布局方式也比較簡單,但是在垂直隨便切換時,往往會出問題,而且多個元素的時候,計算薯指比較麻煩。 AbsoluteLayout 可以讓子元素指定準確的x/y坐標值,並顯示在屏幕上。AbsoluteLayout 沒有頁邊框,允許元素之間互相重疊(盡管不推薦)。他是絕對坐標,所以在實際中不提倡使用。
相對布局可以理解為某一個元素為參照物,來定位的布局方式。主要屬性有:
相對於某一個元素
// 相對於給雀埋定ID控制項
android:layout_above 將該控制項的底部置於給定ID的控制項之上;
android:layout_below 將該控制項的底部置於給定ID的控制項之下;
android:layout_toLeftOf 將該控制項的右邊緣與給定ID的數歲配控制項左邊緣對齊;
android:layout_toRightOf 將該控制項的左邊緣與給定ID的控制項右邊緣對齊;
android:layout_alignBaseline 將該控制項的baseline與給定ID的baseline對齊;
android:layout_alignTop 將該控制項的頂部邊緣與給定ID的頂部邊緣對齊;
android:layout_alignBottom 將該控制項的底部邊緣與給定ID的底部邊緣對齊;
android:layout_alignLeft 將該控制項的左邊緣與給定ID的左邊緣對齊;
android:layout_alignRight 將該控制項的右邊緣與給定ID的右邊緣對齊;
// 相對於父組件
android:layout_alignParentTop 如果為true,將該控制項的頂部與其父控制項的頂部對齊;
android:layout_alignParentBottom 如果為true,將該控制項的底部與其父控制項的底部對齊;
android:layout_alignParentLeft 如果為true,將該控制項的左部與其父控制項的左部對齊;
android:layout_alignParentRight 如果為true,將該控制項的右部與其父控制項的右部對齊;
// 居中
android:layout_centerHorizontal 如果為true,將該控制項的置於水平居中;
android:layout_centerVertical 如果為true,將該控制項的置於垂直居中;
android:layout_centerInParent 如果為true,將該控制項的置於父控制項的中央;
// 指定移動像素
android:layout_marginTop 上偏移的值;
android:layout_marginBottom 下偏移的值;
android:layout_marginLeft 左偏移的值;
android:layout_marginRight 右偏移的值;
example:
android:layout_below = "@id/***"
android:layout_alignBaseline = "@id/***"
android:layout_alignParentTop = true
android:layout_marginLeft = 「10px」
還可以指定邊距等,具體詳見API
五.TableLayout
表格布局類似Html裡面的Table。每一個TableLayout裡面有表格行TableRow,TableRow裡面可以具體定義每一個元素,設定他的對齊方式 android:gravity="" 。
每一個布局都有自己適合的方式,另外,這五個布局元素可以相互嵌套應用,做出美觀的界面。TableLayout 將子元素的位置分配到行或列中。一個TableLayout 由許多的TableRow 組成,每個TableRow 都會定義一個 row 。TableLayout 容器不會顯示row 、cloumns 或cell 的邊框線。每個 row 擁有0個或多個的cell ;和html中的table查不多少。在實際中也經常使用。
Android的Margin和Padding跟Html的是一樣的。通俗的理解 Padding 為內邊框,Margin 為外邊框
對應的屬性為
android:layout_marginBottom="25dip"
android:layout_marginLeft="10dip"
android:layout_marginTop="10dip"
android:layout_marginRight="10dip"
android:paddingLeft="1dip"
android:paddingTop="1dip"
android:paddingRight="1dip"
android:paddingBottom="1dip"
如果左右上下都是相同的設置則可以直接設置
android:layout_margin="10dip"
android:padding="5dip"
過去,程序員通常以像素為單位設計計算機用戶界面。例如,定義一個寬度為300像素的表單欄位,列之間的間距為5個像素,圖標大小為16×16像素 等。這樣處理的問題在於,如果在一個每英寸點數(dpi)更高的新顯示器上運行該程序,則用戶界面會顯得很小。在有些情況下,用戶界面可能會小到難以看清 內容。
與解析度無關的度量單位可以解決這一問題。Android支持下列所有單位。
px(像素):屏幕上的點。
in(英寸):長度單位。
mm(毫米):長度單位。
pt(磅):1/72英寸。
dp(與密度無關的像素):一種基於屏幕密度的抽象單位。在每英寸160點的顯示器上,1dp = 1px。
dip:與dp相同,多用於android/ophone示例中。
sp(與刻度無關的像素):與dp類似,但是可以根據用戶的字體大小首選項進行縮放。
為了使用戶界面能夠在現在和將來的顯示器類型上正常顯示,建議大家始終使用sp作為文字大小的單位,將dip作為其他元素的單位。當然,也可以考慮使用矢量圖形,而不是用點陣圖.
dp是與密度無關,sp除了與密度無關外,還與scale無關。
如果屏幕密度為160,這時dp和sp和px是一樣的。1dp=1sp=1px,但如果使用px作單位,如果屏幕大小不變(假設還是3.2寸),而屏幕密度變成了320。
那麼原來TextView的寬度設成160px,在密度為320的3.2寸屏幕里看要比在密度為160的3.2寸屏幕上看短了一半。
但如果設置成160dp或160sp的話。系統會自動將width屬性值設置成320px的。
也就是160 * 320 / 160。其中320 / 160可稱為密度比例因子。也就是說,如果使用dp和sp,系統會根據屏幕密度的變化自動進行轉換