UI 概覽
定義佈局的手段有幾種?
- 兩種聲明佈局的方式:
1.在 XML 佈局文件 中聲明 UI (建議採用)
2.運行時實例化佈局元素 (動態創建),編程創建 View 和 ViewGroup 對象 (代碼)
如何將佈局文件設置爲某個 activity 的佈局?
- 清單文件中 activity 的 name 屬性指定的 .java 文件中的 onCreate 回調方法中
setContentView(R.layout.佈局文件名)
我們自定義的控件的 id 在哪個文件中?引用系統資源同引用自定義資源的 id 有什麼區別?
- R.java
編譯 app 時,SDK 工具使用 ID 名在 gen/R.java 文件中創建一個新的 資源ID 來引用該控件 android:id="@android:id/empty"
引用系統資源
android:id="@+id/my_button"
引用自定義資源,+
表示新建
如何通過 id 來引用佈局中的對象?爲什麼通過 findViewById 這個方法得到的對象要進行類型強轉?
- 引用 XML 中的資源對象,
符號 (@) + 資源類型(這裏是id) + 斜線 + 資源名
(理解錯誤)
在程序中創建一個 view 對象,然後通過 ID 引用佈局中的對象 (改)
如 Button myButton = (Button) findViewById(R.id.my_button)
- findViewById 方法獲取的是 View 的引用
需要強制轉換成指定的類型
wrap_content、match_parent 這兩個值什麼含義?
- wrap_content,將視圖大小調整爲其內容所需的尺寸
- match_parent,視圖儘可能採用其父視圖組所允許的最大尺寸
view 的座標系是怎樣的?
LinerLayout 中的子元素是如何排列的?方向是怎麼確定的?一行排不下,會不會折行?實驗測試一下
- 默認水平排列
- 通過
android:orientation
屬性指定方向 - 不會,線性佈局的所有子視圖依次堆疊
測試結果,排不下的會在最後一個疊加到一起,高度爲行高
如何設置子控件的寬度或者高度相同?原理是什麼?
- 可以通過 設置寬度或高度 0dp 後,設置相等權重
- 剩餘空間按照權重分配
盒子模型是什麼?
android:gravity同android:layout_gravity什麼區別?
android:gravity
,表示其內容的對齊方式
android:layout_gravity
,表示其在父 ViewGroup 中的對齊方式
RelativeLayout 是什麼?它中的子控件怎麼確定位置?注意這些子控件的屬性可取什麼值?什麼是基線?
- 相對佈局
- 子控件通過相對它的 兄弟view 或者它的 父view 來進行定位
- 基線 Baseline,四線格的第三條線
TableLayout 的父類是哪個?說明什麼問題?
- LinearLayout 類
- 表格佈局可以看做線性佈局,可以指定水平方向或垂直方向
TableLayout 中有多少行是由什麼確定的?列是由什麼確定的?
- TableRow控件的個數確定
- 列數最多的TableRow確定
TableRow 的寬度和高度分別是什麼?它中的子控件呢?
- 寬度定爲 match_parent,高度定爲 wrap_content
- 子控件寬度高度定爲 wrap_content
TableRow 中的子控件在哪列怎麼確定?如何跨列?
android:layout_column
,指定第幾列,從0開始android:layout_span
,指定跨列的個數
GridLayout 是什麼佈局?
- 網格佈局
用一組沒有寬度的線將屏幕區域劃分爲縱橫交錯的格子,將子控件依次放在格子 (cell) 裏
GridLayout 中的 orientation, rowCount 及 columnCount 屬性是什麼含義?
- 指定其中控件的排列主序 (行主還是列主)
- 指定總行數
- 指定總列數
如何確定GridLayout中子控件所在的網格?如何將子控件擴展到其他網格?
android:layout_column //確定列
android:layout_row //確定行
android:layout_columnSpan
android:layout_rowSpan //指定佔據多少行 多少列
什麼是幀佈局?
- 爲每個加入其中的控件創建一個空白區域(稱爲一幀,每個控件佔據一幀)
幀佈局中的子控件按什麼順序顯示?
- 只能在屏幕左上角顯示一個控件,
如果添加多個控件,這些控件會按照順序在屏幕的左上角重疊顯示 (後定義的在上)
絕對佈局中的子控件怎麼確定位置?它的座標系是什麼?
- 通過指定 x、y 座標來控制每一個控件的位置
android:layout_x;android:layout_y; 單位 dp
- 座標系的第四象限爲正
顯示度量單位
顯示度量單位分幾大類?每類中的都有哪些單位?
- 長度單位,in 英寸 (inch),pt 點 (Points),mm (毫米)
像素單位,px (Pixel),dp (Density-independent Pixels),sp (Scale-independent Pixels)
sp同dp什麼區別?px同dp什麼關係,針對不同的分辨率的屏幕如何換算?
- dip = dp,密度無關的像素,一種基於屏幕密度的抽象單位,
sp,和dp的概念相似,單獨用於表示字體大小的單位,用戶可設置 - px,對應屏幕上實際像素點
在160dpi (dots per inch) 的屏幕上,1dp = 1px
換算公式
px = dp * (dpi / 160)
設置大小的時候爲什麼dp優於px,什麼原理?
- 建議不要使用絕對單位(如像素px)來指定佈局寬度和高度,
而是使用相對測量單位,如 dp、wrap_content 或 match_parent,
這樣有助於確保你的應用在各類尺寸的設備屏幕上正確顯示
國際化
所謂國際化,就是指軟件在開發時應該具備支持多種語言和國家或地區的功能
爲什麼要提供對不同語言的支持?
- 讓不同的國家或者地區的用戶看到不同的效果
怎麼創建區域目錄?怎麼創建不同語言的表現?
- values > 右擊 > New > Values Resource File
File name: strings
Available qualifiers: Locale
單擊 >>
然後選擇語言 (Language: zh 例如中文)最後單擊 OK