Android 圖形化的用戶界面(Graphical User Interface , GUI) 採用告終構清晰的MVC模型(Model-View-Controller) ,其具體含義:android
·提供了處理用戶輸入的控制器(Controller) ;框架
·顯示用戶界面的視圖(View) ;函數
·保存數據和代碼的模型(Model) 。工具
在Android MVC中,控制器是由Activity組件完成的,它可以接受並響應程序的外部動做,如按鍵動做或觸摸屏動做等,每一個外部動做做爲一個對立的事件被加入隊列中,按照"先進先出"的規則從隊列中獲取事件,並將這個事件分配給所對應的事件處理函數。佈局
控制器負責接受並響應程序的外部動做;經過視圖反饋應用程序給用戶的信息(一般是手機屏信息反饋) ;模型是應用程序的核心,用於保存數據和代碼。ui
Android視圖類android.view.View提供了用於處理屏幕事件的多個內部接口(如OnClickListener等)及經常使用方法(如setVisibility()等)。設計
在Android系統中,各類屏幕手勢的相關信息(如操做類別、發生時間等)被自動封裝成一個KeyEvent對象,供應用程序使用。所以,在Activity的事件處理方法中,須要使用表示手勢事件對象的事件參數event。code
Activity提供了響應各類屏幕手勢的方法,如按鍵方法onKeyDown()、鬆開按鍵方法onKeyUp()、長按鍵方法onKeyLongPress()等。對象
除了使用界面事件外,還有鍵盤事件。類KeyEvent定義了分別對應於Back鍵、Home鍵和Menu鍵的鍵盤掃描碼(實質上是靜態常量)。接口
Activity提供的方法onKeyDown(keyCode,event)用來捕捉手機鍵盤被按下(短按,不是長按)的事件。其中, 參數keyCode 表示鍵盤掃描碼,一般使用類KeyEvent的靜態常量表示。
Android程序一般須要偵昕用戶和應用程序之間交互的事件。對於用戶界面中的事件,偵聽方法就是從與用戶交互的特定視圖對象中截獲這些事件。
事件偵昕器(Event Listener)是視圖View類的內部接口,包含一個單獨的回調方法。這些方法將在視圖中註冊的偵聽器被用戶界面操做觸發時由Android框架調用。下面這些回調方法被包含在事件偵聽器接口中:
• onClick()包含於View.OnClickListener中,單擊時調用;
• onLongClick()包含於View.OnLongClickListener中,長按時調用;
• onTouch()包含於View.OnTouchListener中,當用戶執行的動做被看成一個觸摸事件時被調用,包括按下、釋放和在屏幕上進行的任何移動手勢。
res/layout目錄下存放定義UI設計的XML文件。UI設計有兩種方式: 一種是Text視圖方式,在XML文件中,能夠直接寫佈局及控件代碼:另外一種是Design視圖方式,能夠直接拖曳控件至設計區域。
佈局至關於一個容器控件,其屬性android:padding(或android:paddingLeft等)用於控制該容器內第一個元素與父佈局(容器)之間的間隔,而屬性android:layout_margin等用於設置同一佈局內各元素之間的間隔。佈局內控件的經常使用佈局屬性還有如下幾個。
• android:layout_width表示控件的寬度。
• android:layout_height表示控件的高度。
• android:id表示控件的標識。
• android:layout_below表示將該控件的底部置於給定ID控件之下。
佈局類型分爲以下幾種:
線性佈局使用成對的< LinearLayout >
標籤,必須指定分別表示容器寬度和高度的兩個屬性android:layout_width和android:layout_height,它們的取值爲match_parent(匹配父容器)、wrap_content(自適應控件大小)或具體值(以dp爲單位)。
線性佈局可選屬性主要是android:orientation,當取值爲vertical時稱爲垂直線性佈局,當取值爲horizontal時稱爲水平線性佈局,且以vertical爲默認值。
垂直線性佈局時,每一個控件佔一行;水平線性佈局時,控件自左向右排列,控件太多時也不會轉行。
注意:調整線性佈局內的各個控件之間的間距,使用android:layout_weight屬性比較方便。
線性佈局也能夠嵌套使用。例如,在垂直線性佈局裏嵌套一個水平線性佈局時,就能夠在一行內水平放置多個控件。
相對佈局在佈局文件中使用< RelativeLayout >
標籤,除了第一個元素外,其餘元素須要參考另外一個元素進行相對定位(含方向、偏移和對齊方式) ,經常使用屬性以下。
• android:layout_below表示位於下方。
• android:layout_above表示位於上方。
• layout_toRightOf表示位於右方。
• layout_toLeftOf表示位於左方。
• android:layout_marginTop表示偏移(正值向下,負值向上)。
• android:layout_marginLeft表示偏移(正值向右,負值向左)。
• android:layout_alignLeft表示左對齊(默認)。
• android:layout_alignRight 表示右對齊。
• android:layout_alignTop 表示頂部對齊(默認)。
• android:layout_alignBottom 表示底部對齊。
• android:layout_alignBaseline 表示垂直居中。
傳統的Android開發,其界面基本都是靠編寫XML代碼完成的。約束佈局是Android Studio 2.3以後推薦且默認使用的佈局,徹底使用可視化的操做方式,在佈局文件中使用<android.support.constraint.ConstraintLayout>標籤聲明約束佈局。
當拖曳某個控件至界面時,系統提示缺乏約束的紅色警告,代表程序運行時該控件將出如今屏幕左上角(0,0)位置。解決方法有以下兩種:
(1)單擊該控件,使用魔術棒工具來自動添加用於肯定控件位置的約束線。此時,該控件至少存在兩條約束線;
(2)單擊該控件,從出現的四個圓點中,任選一個圓點並拖曳到四周的邊線或控件圓點來創建位置約束。重複此操做,直到紅色警告消失。
選中某個己經添加約束的控件,若使用清除工具,將刪除己經創建的全部約束線;若單擊其中的某條約束線的圓點端,將刪除本約束線。
幀佈局像一層層畫布,添加的控件一層層地放上去。幀佈局添加的各個控件默認都將對齊到屏幕的左上角。
在一個有兩層的幀佈局中,若是浮於上面的第二層能夠看到下層,是由於background屬性設置包含了透明度參數,有以下兩種實現方式。
方法一是設置控件的背景色,使用以下屬性:
android:background="#aarrggbb"
其中, aa表示透明度參數(十六進制) 。
方法二是在程序裏使用以下方法:
v.getBackground().setAlpha(a); / /透明度參數a取值範圍爲0--255
其中,v爲View對象,a爲十進制數。