標籤:android ui
昨天看了下幾種常見的布局,類似於以前學的html,關於css+div沒有接觸太多,但這幾種布局都比較簡單,只要邏輯沒有太大問題就能整出來。
相對布局是我們平時預設的布局,也是最常用的,前邊做的“電話撥號器”和“簡訊發送器”都是用的它。這種布局強調控制項之間的相對位置,比如利用id標稱誰在誰的下邊或者上邊,通過空間的位置關係來定製整個UI。假設有兩個控制項,一個id為tv,另一個id為xc,要想使得xc在tv的下方,便可在xc裡用這樣一條語句----android:layout_below="@id/tv";簡潔明了,英語過三級就能看懂。當然,在相對布局中可以通過變數值調整控制項的空間位置,相對於父表單或者設定具體的參數值來實現特定的要求。
線性布局相比於前者就很簡單了,它就是橫平豎直,不存在什麼對齊不對齊的,所有的控制項都在一條線上,它通常與相對布局混合使用,例如我們手機裡的一些系統設定,一個個條目還有單選框或者複選框,這都可以通過二者的綜合實現。
表格布局,顧名思義,通過行列來設計UI,這個通常用於身份資訊的驗證布局,比如姓名、年齡、性別、社會安全號碼等,它和線性布局差不多,都能做成一樣的效果。
絕對布局,就是通過layout_x和layout_y來確定一個控制項相對於表單的位置,比如QQ遊戲歡樂鬥地主就是通過絕對布局來實現的,撲克牌的位置利用具體參數來定位,但現在這種布局已經廢棄掉了,因為android裝置的螢幕有大有小,如果靠這種絕對的位置資訊來確定一個控制項在表單中的位置很容易出現偏差,所以現在都是通過動態計算螢幕的寬高,然後用百分比定義控制項的具體位置,這也算是與時俱進吧。
最後一個也是自己認為最有意思的一種布局——幀布局,它就像是洋蔥一樣,由一層一層的介面構成。我們平時看視頻點擊暫停一般會出現一個按鈕,就是一個小表徵圖,再點一下便會正常播放了,ok,先上一段代碼:
<TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="播放視頻中" android:gravity="center" android:visibility="visible" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="match_parent" android:orientation="horizontal" > <Button android:onClick="play" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="播放" /> <Button android:onClick="pause" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="暫停" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" > <ImageView android:id="@+id/iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" android:visibility="invisible" /></LinearLayout>
這段代碼就是我們所做的簡易的視頻播放介面的四個小部分,準確的是三部分,從上而下依次是播放視頻提示,兩個按鈕,還有一個暫停時顯示的小表徵圖。介紹幾個重要的參數:visibility="visible",這個是設定表徵圖是否顯示,後邊我們要用到它來設定播放或者暫停時小表徵圖的狀態;src="@drawable/ic_launcher",設定的圖片來源,這個可以自己定義;onClick="pause",設定點擊事件,為後面的狀態顯示做準備。再來一段:
private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test_frame); iv=(ImageView)findViewById(R.id.iv); } public void play(View view){ iv.setVisibility(view.INVISIBLE); } public void pause(View view){ iv.setVisibility(view.VISIBLE); }
這個便是規定了點擊播放或者暫停按鈕時小表徵圖的狀態,先得到表徵圖,然後設定當接受“播放”時隱藏表徵圖,接受“暫停”時顯示表徵圖,最後的效果是這樣地:
前者是播放時的狀態,後者是暫停時的狀態,ok,今天先這樣...