1A課程 概述 課程1A主要講解了Android UI的三種基本控制項:TextView、ImageView以及Button。筆記的主體內容主要根據課程內容的講解順序來組織,此外我對一些個人比較感興趣的內容作了一些擴展的說明。希望我的分享能對大家有所幫助。 TextView 設置TextView中的字 ...
1A課程
概述
課程1A主要講解了Android UI的三種基本控制項:TextView、ImageView以及Button。筆記的主體內容主要根據課程內容的講解順序來組織,此外我對一些個人比較感興趣的內容作了一些擴展的說明。希望我的分享能對大家有所幫助。
TextView
- 設置TextView中的字體大小,推薦使用dp(Density-Independent,(像素)密度無關)作為像素單位,這樣能夠使字體大小與屏幕像素密度無關。即顯示字體時會根據當前屏幕的像素密度來調整字體實際占據的像素數,像素密度越大的,占據的像素數相應也越大。這樣做的最大的好處在於能夠保證不同設備(具有不同像素密度的平板、手機、電腦等)上的字體的實際大不會改變,使得開發人員不必為了不同的設備編寫不同的代碼。
- sp(Scale-Independent,縮放無關)與dp的唯一區別在於:使用sp作為單位指定的字體大小,會使用戶的字體尺寸大小("大"、"中"、"小")設置無效。如果你不想讓字體大小受到用戶設置的影響的話,那麼就可以用sp作為像素的單位。
- 設置width、height屬性,一般情況下都用wrap_content作為width、height的屬性值,使得TextView自適應文本的寬度和高度,免去了手動指定寬高度的麻煩。
- [提示1] 關於字體選取,使用1-3種比較美觀的字體即可,如果UI使用的字體太多,很有可能的後果就是用戶招架不住,視覺上感到很疲勞。
- [提示2] 考慮TextAppearance屬性的使用。為了在不同設備間保持界面外觀的一致性,可以使用Android預定義好的TextAppearance屬性的值。
代碼示例
android:textAppearance="?android:textAppearanceLarge" android:textAppearance="?android:textAppearanceMedium" android:textAppearance="?android:textAppearanceSmall"
XML
課程1A中只是簡單提到了幾個XML的語法,包括標簽(tag)、自封閉(self-closing)標簽、屬性(attribute)等等。只要跟隨課程進度走,勤加練習,掌握XML的基本語法應該是水到渠成的。
以下是我想分享的、關於XML的更多內容
- [定義] 可擴展標記語言,它被設計用來傳輸和存儲數據,其焦點是數據的內容。
[比較] XML與HTML(超文本標記語言)的對比:
語言 設計思路 角色定位 HTML 用來顯示數據,關註的是數據的外觀 對於XML,具有不可替代性 XML 用來傳輸和存儲數據,關註的是是數據的內容 對HTML的補充 XML與HTML都是標準通用標記語言的子集。
- [XML的應用&個人理解]
- XML的應用非常廣泛,可以用來描述Android UI的(我認為,實際上就是符合Android規範的、與用戶界面相關的結構化數據);可以用來描述軟體項目的結構。比如:JavaEE項目中的web.xml、Visual Studio C/C++項目的*.vcxproj(雖然文件擴展名不是xml,但這裡的擴展名只是一件"外衣"罷了,用任何一個文本編輯器打開該文件,從內容上來,用到的語言就是XML)等等都是項目配置文件。
- 如果足夠熟悉的話,你可以通過直接編輯這些xml文件來更改項目屬性來達到同樣的效果,避免在可視化界面中進行一系列繁瑣的操作。進一步地,你可以把一個與具體IDE(集成開發環境,課程1A有簡單的介紹,可以對照 Android for All術語表 來瞭解)相關的Preferences(首選項、用戶偏好)項目配置文件遷移到一個新建的項目,省去重新設置用戶偏好的麻煩。這個辦法在Eclipse中特別方便實用。
- 我個人認為,之所以XML廣泛用於UI佈局文件、項目配置文件的編寫,很大程度上是因為XML本身就是被設計來存儲和傳輸結構化數據的;而前述的這些文件恰恰就是需要維護一些UI相關或項目相關的結構化信息的。
ImageView
- 屬性src指定圖像來源(絕對路徑、相對路徑均可),layout_width、layout_height指定了該控制項的寬高。
- 屬性scaleType通常的取值可以有center和centerCrop。 centerCrop可以達到full-bleed顯示的效果,大多數情況下都比較美觀,所以裁剪(crop-off)是可以接受的。
圖1. centerCrop_cake的顯示效果
圖2. center_cake的顯示效果
可以看到centerCrop在這裡是更合適的屬性取值。
實用的學習實踐資料
- Google Material Design 提供了對字體以及顏色選取等方面的參考,此外還有很多UI設計相關的材料。
- Android for All術語表 對Android術語圖文並茂的解釋。