【Android】Android UI 開發_問答_1

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
    在這裏插入圖片描述

鏈接 Android UI 開發_問答_2.

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