(8 Android) 用戶界面UI設計

(8 Android) 用戶界面UI設計

3.1.1 Android界面視圖類

Android 圖形化的用戶界面(Graphical User Interface , GUI) 採用告終構清晰的MVC模型(Model-View-Controller) ,其具體含義:android

·提供了處理用戶輸入的控制器(Controller) ;框架

·顯示用戶界面的視圖(View) ;函數

·保存數據和代碼的模型(Model) 。工具

在Android MVC中,控制器是由Activity組件完成的,它可以接受並響應程序的外部動做,如按鍵動做或觸摸屏動做等,每一個外部動做做爲一個對立的事件被加入隊列中,按照"先進先出"的規則從隊列中獲取事件,並將這個事件分配給所對應的事件處理函數。佈局

控制器負責接受並響應程序的外部動做;經過視圖反饋應用程序給用戶的信息(一般是手機屏信息反饋) ;模型是應用程序的核心,用於保存數據和代碼。ui

Android視圖類android.view.View提供了用於處理屏幕事件的多個內部接口(如OnClickListener等)及經常使用方法(如setVisibility()等)。設計

3.1.2 Android用戶界面事件

在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中,當用戶執行的動做被看成一個觸摸事件時被調用,包括按下、釋放和在屏幕上進行的任何移動手勢。

3.1.3 界面與佈局

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控件之下。

佈局類型分爲以下幾種:

1 .線性佈局

線性佈局使用成對的< LinearLayout >標籤,必須指定分別表示容器寬度和高度的兩個屬性android:layout_widthandroid:layout_height,它們的取值爲match_parent(匹配父容器)、wrap_content(自適應控件大小)或具體值(以dp爲單位)。

線性佈局可選屬性主要是android:orientation,當取值爲vertical時稱爲垂直線性佈局,當取值爲horizontal時稱爲水平線性佈局,且以vertical爲默認值。

垂直線性佈局時,每一個控件佔一行;水平線性佈局時,控件自左向右排列,控件太多時也不會轉行。

注意:調整線性佈局內的各個控件之間的間距,使用android:layout_weight屬性比較方便。

線性佈局也能夠嵌套使用。例如,在垂直線性佈局裏嵌套一個水平線性佈局時,就能夠在一行內水平放置多個控件。

2.相對佈局

相對佈局在佈局文件中使用< 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 表示垂直居中。

3.約束佈局

傳統的Android開發,其界面基本都是靠編寫XML代碼完成的。約束佈局是Android Studio 2.3以後推薦且默認使用的佈局,徹底使用可視化的操做方式,在佈局文件中使用<android.support.constraint.ConstraintLayout>標籤聲明約束佈局。

當拖曳某個控件至界面時,系統提示缺乏約束的紅色警告,代表程序運行時該控件將出如今屏幕左上角(0,0)位置。解決方法有以下兩種:

(1)單擊該控件,使用魔術棒工具來自動添加用於肯定控件位置的約束線。此時,該控件至少存在兩條約束線;

(2)單擊該控件,從出現的四個圓點中,任選一個圓點並拖曳到四周的邊線或控件圓點來創建位置約束。重複此操做,直到紅色警告消失。

選中某個己經添加約束的控件,若使用清除工具,將刪除己經創建的全部約束線;若單擊其中的某條約束線的圓點端,將刪除本約束線。

4.幀佈局

幀佈局像一層層畫布,添加的控件一層層地放上去。幀佈局添加的各個控件默認都將對齊到屏幕的左上角。

在一個有兩層的幀佈局中,若是浮於上面的第二層能夠看到下層,是由於background屬性設置包含了透明度參數,有以下兩種實現方式。

方法一是設置控件的背景色,使用以下屬性:

android:background="#aarrggbb"

其中, aa表示透明度參數(十六進制) 。

方法二是在程序裏使用以下方法:

v.getBackground().setAlpha(a); / /透明度參數a取值範圍爲0--255

其中,v爲View對象,a爲十進制數。

相關文章
相關標籤/搜索