文章目錄
- 組件屬性
- android:layout _width和android:layout_height屬性
- android :orientation屬性
- android:text屬性
- Android與MVC設計模式
- 日志記錄的級別與方法
組件屬性
配置組件時常用的一些屬性,
android:layout _width和android:layout_height屬性
幾乎每類組件都需要android:layout_width和android:layout_height屬性,以下是它們的兩個常見屬性值(二選一),
match_parent:視圖與其父視圖大小相同,
wrap_content:視圖將根據其顯示內容自動調整大小,
(以前還使用fill_parent屬性值,等同于match_parent,現已廢棄不用,)
根LinearLayout組件的高度與寬度屬性值均為match parent,LinearLayout雖然是根元素,但它也有父視圖——Android提供該父視圖來容納應用的整個視圖層級結構,
其他包含在界面布局中的組件,其高度與寬度屬性值均被設定為wrap_content,
TextView組件比其包含的文字內容區域稍大一些,這主要是android: padding="24dp"屬性的作用,該屬性告訴組件在決定大小時,除內容本身外,還需增加額外指定量的空間,這樣螢屏上顯示的問題與按鈕之間便會留有一定的空間,使整體顯得更為美觀,
android :orientation屬性
android:orientation屬性是兩個LinearLayout組件都具有的屬性,它決定兩者的子組件是水平放置還是垂直放置,根LinearLayout是垂直的,子LinearLayout是水平的,
子組件的定義順序決定其在螢屏上顯示的順序,在垂直的LinearLayout中,第一個定義的子組件出現在螢屏的最上端:而在水平的LinearLayout中,第一個定義的子組件出現在螢屏的最左端,(如果設備文字從右至左顯示,如阿拉伯語或者希伯來語,第一個定義的子組件則出現在螢屏的最右端,)
android:text屬性
TextView與Button組件具有android:text屬性,該屬性指定組件要顯示的文字內容,
注意,android:text屬性值不是字串值,而是對字串資源( string resource)的參考,
字串資源包含在一個獨立的名叫strings的XML檔案中( strings.xml ),雖然可以硬編碼設定組件的文本屬性值,如android:text=“True”,
實際開發中,一般會將文字內容放置在獨立的字串資源XML檔案中,然后參考它們,這樣會方便應用的本地化(支持多國語言),
Android與MVC設計模式
應用物件分為模型(物體類)、視圖(布局xml檔案)和控制器(Activity)三類,
Android應用基于模型-視圖-控制器( Model-View-Controller,MVC)的架構模式進行設計,MVC設計模式表明,應用的任何物件,歸根結底都屬于模型物件、視圖物件以及控制器物件中的一種,
-
模型物件存盤著應用的資料和業務邏輯,模型類通常用來映射與應用相關的一些事物,如用戶、商店里的商品、服務器上的圖片或者一段電視節目抑或GeoQuiz應用里的地理知識問題,模型物件不關心用戶界面,它為存盤和管理應用資料而生,Android應用里,模型類通常就是我們創建的定制類,應用的全部模型物件組成了
模型層,GeoQuiz應用的模型層由物體類組成, -
視圖物件知道如何在螢屏上繪制自己以及加何回應用戶的輸入,如觸摸動作等,一個簡單的經驗法則是,凡是能夠在螢屏上看見的物件,就是視圖物件,
Android自帶很多可配置的視圖類,當然,也可以定制開發其他視圖類,應用的全部視圖物件組成了
視圖層, -
控制器物件含有應用的邏輯單元,是視圖物件與模型物件的聯系紐帶,控制器物件回應視圖物件觸發的各類事件,此外還管理著模型物件與視圖層間的資料流動,在Android的世界里,控制器通常是Activity、Fragment或Service的子類

隨著應用功能的持續擴展,應用往往會變得過于復雜而讓人難以理解,以Java類組織代碼有助于從整體視角設計和理解應用,這樣,我們就可以按類而不是按變數和方法思考設計開發問題,
同樣,把Java類以模型層、視圖層和控制器層進行分類組織,也有助于我們設計和理解Android應用,這樣,我們就可以按層而非一個個類來考慮設計開發了,
MVC設計模式還便于復用類,相比功能多而全的類,功能單一的專用類更有利于代碼復用,舉例來說,模型類Question與用作顯示問題的組件毫無代碼邏輯關聯,這樣,就很容易在應用里按需使用Question類,假設現在想顯示包含所有地理知識問題的串列,很簡單,直接利用Question物件逐條顯示就可以了,
日志記錄的級別與方法
使用android.util.Log類記錄日志,不僅可以控制日志的內容,還可以控制用來區分資訊重要程度的日志級別,Android支持五種日志級別,每一個級別對應一個Log類方法,要輸出什么級別的日志,呼叫對應的Log類方法就可以了,
日志級別與方法
| 日志級別 | 方法 | 方法 |
|---|---|---|
| ERROR | Log.e( … .) | 錯誤 |
| WARNING | Log.w( … .) | 警告 |
| INFO | Log.i( … .) | 資訊型訊息 |
| DEBUG | Log.d( … .) | 除錯輸出(可能被過濾掉) |
| VERBOSE | Log.v( … .) | 僅用于開發 |
需要說明的是,所有的日志記錄方法都有兩種引數簽名: string型別的tag引數和msg引數;除tag和msg引數外再加上Throwable實體引數,附加的Throwable實體引數為應用拋出例外時記錄例外資訊提供了方便,
兩種方法不同引數簽名的使用實體,對于輸出的日志資訊,可使用常用的Java字串連接操作拼接出需要的資訊,或者使用String.format對輸出日志資訊進行格式化操作,以滿足個性化的使用要求,
Android的各種日志記錄方式
//Log a message at "debug" log level
Log.d(TAG,"Current question index: " + mCurrentIndex);
//物體類物件
Question question;
try {
question = mQuestionBank[ mCurrentIndex];
} catch (ArrayIndexOutOfBoundsException ex) {
// Log a message at "error" log level,along with an exception stack trace
Log.e(TAG,"Index was out of bounds", ex);
}
參考:《Android編程權威指南》(第3版)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/305716.html
標籤:其他
