Android UI開發初階--期末考試Android理論篩查

UI 概覽

1.Android應用的界面是由**微件(View 對象)佈局(ViewGroup 對象)**構建而成的。

2.View類是Android系統平臺上用戶界面表示的基本單元,View 對象用於在屏幕上繪製可供用戶交互的內容,一個View在屏幕上佔據一個矩形區域,負責繪製及事件處理

3…View的一些子類被統稱爲Widgets(工具),例如文本框和按鈕,它們提供了文本輸入框和按鈕之類的UI對象的完整實現。

4.ViewGroup繼承自View,ViewGroup 對象是一種不可見的容器,用於儲存其他 View(和 ViewGroup)對象,控制其子視圖在屏幕上的位置,以便定義界面的佈局。通過ViewGroup類可以創建有聯繫的子View組成的複合控件。
在這裏插入圖片描述

佈局位置

1.每個view的形狀爲一個矩形,left和top表示它的位置,width和height表示它的大小

2.通過getLeft()和getTop()方法獲取view的座標(該座標是相對於父控件左上角的座標,如下圖), getWidth()和getHeight()獲取寬度和高度,getRight()和getBottom()獲取右下角座標,單位均爲像素
在這裏插入圖片描述

度量單位

長度單位
in:表示英寸,是屏幕的物理尺寸。每英寸等於2.54釐米。例如,形容手機屏幕大小,經常說,3.2(英)寸、3.5(英)寸、4(英)寸就是指這個單位。這些尺寸是屏幕的對角線長度。如果手機的屏幕是3.2英寸,表示手機的屏幕(可視區域)對角線長度是3.2*2.54 = 8.128釐米。讀者可以去量一量自己的手機屏幕,看和實際的尺寸是否一致。

mm:表示毫米,是屏幕的物理尺寸。

pt:表示一個點,是屏幕的物理尺寸。大小爲1英寸的1/72,在72dpi的屏幕上1pt=1px。

像素單位
px:對應屏幕上的實際像素點。

dip=dp:密度無關的像素,一種基於屏幕密度的抽象單位。在160dpi的屏幕上,1dp = 1px。1dp所對應的實際像素的多少會隨着屏幕的密度而縮放。

sp:和dp的概念是相似的,但是是用於字體大小的單位,因爲字體的實際顯示大小除了同屏幕密度有關以外,還同用戶的設置是相關的,所以通常字體用sp。但某些情況下,爲了保證字體不會隨用戶的配置而改變大小,這時就需要用dp作爲單位了。

如下六種密度集:
ldpi (low) ~120dpi
mdpi (medium) ~160dpi
hdpi (high) ~240dpi
xhdpi (extra-high) ~320dpi
xxhdpi (extra-extra-high) ~480dpi
xxxhdpi (extra-extra-extra-high) ~640dpi
把mdpi作爲基準密度,其他密度的實際像素px=dp*(dpi/160)

相對佈局

屬性名 描述
android:layout_above 在指定控件的上邊
android:layout_alignBaseline 同指定控件在同一基線上
android:layout_alignBottom 與指定控件底部對齊
android:layout_alignEnd 與指定控件的end對齊
android:layout_alignLeft 與指定控件的左邊對齊
android:layout_alignParentBottom 值爲true, 與父佈局底部對齊
android:layout_alignParentEnd 值爲true,與父佈局的end對齊
android:layout_alignParentLeft 值爲true, 與父佈局的左邊對齊
android:layout_alignParentRight 值爲true,與父佈局的右邊對齊
android:layout_alignParentStart 值爲true, 與父佈局的start對齊
android:layout_alignParentTop 值爲true, 與父佈局的頂部對齊
android:layout_alignRight 同指定控件的右邊對齊
android:layout_alignStart 同指定控件的start對齊
android:layout_alignTop 同指定控件的頂部對齊
android:layout_alignWithParentIfMissing 設置爲true時,如果layout_toLeftOf, layout_toRightOf, etc的對齊對象缺失的時候,則改爲父佈局。
android:layout_below 在指定控件的下面
android:layout_centerHorizontal 值爲 true, 在父佈局的水平中間對齊
android:layout_centerInParent 值爲 true, 在父佈局的水平垂直對齊
android:layout_centerVertical 值爲 true, 在父佈局的垂直對齊
android:layout_toEndOf 在指定控件的末端
android:layout_toLeftOf 在指定控件的左邊
android:layout_toRightOf 在指定控件的右邊
android:layout_toStartOf 在指定空間的始端

線性佈局

表格佈局

1.TableLayout是LinearLayout的子類,所以它也可以看做是線性佈局,該佈局中的行由TableRow表示,有多少TableRow就有多少行,表列的個數由包含最多子元素的TableRow所決定。比如,有兩行,第一行有兩個元素,第二行有三個元素,則表列的個數爲3。

2.TableRow不需要設置寬度和高度,它的寬度一定是match_parent,它的高度一定是wrap_content,它其中的控件的寬度和高度均爲wrap_content。

3.TableRow中的控件在哪一列由android:layout_column指定,該值從0開始,也可以一個元素跨多列,由android:layout_span指定跨列的個數。
在這裏插入圖片描述

網格佈局

1.GridLayout是Android4.0(API14)之後的佈局,它用一組沒有寬度的線將屏幕區域劃分爲縱橫交錯的格子,將子控件放在格子(cell)裏。網格線由網格線下標表示,有n列的網格就有n+1個網格下標,編號從0到n。

2.Cell中的子控件可以通過android:layout_column及android:layout_row來確定它在網格中的位置,由android:layout_columnSpan和android:layout_rowSpan來確定該子控件佔據多少列或多少行。
如果沒有指定子控件的位置,則由GridLayout的佈局屬性orientation, rowCount 及 columnCount自動定位。

3.orientation表示佈局中Vieww的排列主序; rowCount表示行的個數, columnCount表示列的個數。

幀佈局

1.幀佈局爲每個加入其中的控件創建一個空白區域(稱爲一幀,每個控件佔據一幀)。

2.採用幀佈局設計界面時,只能在屏幕左上角顯示一個控件,如果添加多個控件,這些控件會按照順序在屏幕的左上角重疊顯示。

3.幀佈局只有一個屬性就是android:layout_gravity

絕對佈局

1.絕對佈局需要通過指定x、y座標來控制每一個控件的位置,放入該佈局的組件需要通過android:layout_x和android:layout_y兩個屬性指定其準確的座標值,並顯示在屏幕上。

2.應用開發一般情況下不推薦使用絕對佈局。

使用Layout Editor構建UI

國際化

1.所謂國際化,就是指軟件在開發時應該具備支持多種語言和國家或地區的功能。

2.由於Android採用xml文件來管理資源文件,因此只需要爲資源文件提供不同的區域對應的內容即可。

創建區域(Locale)目錄和string文件

在res/values的values上右擊,選擇new,再選擇Values resource file
在File name:中輸入strings,在Available qualifiers中選擇:Locale,再單擊>>
在Language:中選擇語言
最後點擊ok
如圖:
在這裏插入圖片描述
爲了添加對不同語言的支持,在res/目錄中創建一個類似於values-es這樣的目錄,其中es爲ISO語言代碼。Android會根據系統的語言設置來調用合適的資源。
一旦你決定支持哪些語言,創建這樣的資源子目錄和string資源文件,例如:
res/values/strings.xml
res/values-zh/strings.xml
res/values-es/strings.xml
res/values-fr/strings.xml
對於每個區域在合適的文件加入字符串值,例如:
英語(默認區域):
/values/strings.xml:

<?xml version="1.0" encoding="utf-8"?> My Application Hello World! 西班牙 /values-es/strings.xml: <?xml version="1.0" encoding="utf-8"?> Mi Aplicación Hola Mundo! 法語 /values-fr/strings.xml: <?xml version="1.0" encoding="utf-8"?> Mon Application Bonjour le monde ! 中文 /values-zh/strings.xml: <?xml version="1.0" encoding="utf-8"?> 我的應用 你好,世界! 注意:你可以將區域限定符應用於任何資源類型,比如各種區域的bitmap資源等。 #### 使用字符資源 你可以在你的代碼及其他XML文件中使用元素的name屬性來使用字符串資源。在代碼中通過R.string.來引用字符串資源,如下:

// Get a string resource from your app’s Resources
String hello = getResources().getString(R.string.hello_world);

// Or supply a string resource to a method that requires a string
TextView textView = new TextView(this);
textView.setText(R.string.hello_world);

在其他的XML文件中,你可以使用@string/<string_name>,只要XML屬性接受一個字符串值,如下:

創建不同的bitmap

你應該爲不同的屏幕密度提供不同的bitmap資源,這有助於你提高在不同屏幕密度上的圖像質量。爲創建這些圖像,你的原始資源應該用矢量格式,產生的圖像使用下面的比例:

xxhdpi: 3.0
xhdpi: 2.0
hdpi: 1.5
mdpi: 1.0 (baseline參照)
ldpi: 0.75
這意味着,你如果創建一個200X200的xhdpi設備上的圖片,你應該爲hdpi創建150X150的資源,而mdpi的爲100X100的圖片,ldpi設備的爲75X75的圖片。然後將相應的文件放在drawable這個資源目錄中:

MyProject/res/drawable-xhdpi/awesomeimage.png
drawable-hdpi/awesomeimage.png
drawable-mdpi/awesomeimage.png
drawable-ldpi/awesomeimage.png
任何時候你引用@drawable/awesomeimage的時候,系統會依據你的屏幕密度選擇合適的bitmap。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章