[Android]我對View的認識

前言

我覺得 Android UI 的一個很重要的東西就是 View,關於 View 我瞭解的並不多,所以我的打開了 Android 中 View 的源碼瞧了瞧,2萬多行的代碼,瞬間傻眼!!對於我們初學者來講學習View的目的無非就是學會使用各種 UI 控件以及自定義 View。

自定義View

自定義 View 在我看來就是畫圖。當然 Android 系統已經定義了 View,所以通常都是重寫一些系統框架在所有的 View 上調用的基本方法。一下是自定義 View 的基本流程。

  • 自定義 View 的屬性
  • 在 View 的構造方法中獲得我們自定義的屬性
  • 重寫 onMesure
  • 重寫 onDraw

View 中的方法

下面對 View 中的一些方法進行分類描述

創建

  • 構造方法: View 中有兩種類型的構造方法,一種是在代碼中構建View,另一種是填充佈局文件構建 View,第二種構造方法要解析並應用佈局文件中定義的任何屬性。

  • onFinishInflate(): 在來自於 XML 的 View 和它所有的子節點填充之後被調用。

佈局

  • onMeasure: 調用該方法來確定 view 及它所有子節點需要的尺寸onLayout 當 view 需要爲它的所有子節點指定大小和佈局時,此方法被調用

  • onSizeChanged: 當這個 view 的大小發生變化時,此方法被調用

繪製

onDraw: 當 view 渲染它的內容時被調用

事件處理

  • onKeyDown 當一個新的按鍵事件發生時被調用

  • onKeyUp 當一個按鍵按起時被調用

  • onTrackballEvent 當軌跡球動作事件發生時被調用

  • onTouchEvent 當觸屏動作發生時被調用焦點

焦點

  • onFocusChanged: 當 view 獲得或是失去焦點時被調用

  • onWindowFocusChanged: 當包含 view 的窗口獲得焦點或是失去焦點時被調用

ID

關於 View 的 ID,只是用於標記 View。

位置

View 的幾何形狀是一個矩形,view 的位置由矩形的左上角的 x,y 座標及矩形的高度和寬度決定,他們的單位都是像素。

通過 getLeft 和 getTop 方法可以獲得 view 相對於它的直接父節點的x,y座標。

此外,還有一些便利的方法可以幫助我們減少計算量,比如 getRight 和getBottom 方法,調用 getRight 等價於 getLeft()+getWidth() 方法,
同理 getBottom 等價於 getTop()+getHeight() 方法。

大小

一個 View 的大小由它的寬度和高度來表達,一個View實際上擁有兩對寬高值。

第一對寬高值是:測量過的寬度和高度,即 view 想從它的父節點獲得的寬高值,可以通過 getMeasuredWidth() 方法和 getMeasuredHeight() 方法獲得。

第二對寬高值是:繪製的寬度和高度,即View的實際寬度和高度,是在佈局之後,繪製 View 階段的寬高值,這與上面提到的寬高值可能不同。通過getWidth() 方法和 getHeight() 方法可以獲得 View 的實際寬度和高度。

padding

padding 同 css 中的 padding 屬性。通過 setPadding(int,int,int,int) 可以設置 View 的 padding,通過 getPaddingXXX() 方法可以獲得 View 中對應方向的 padding,XXX指得是 left,right,top,bottom。

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