讀書筆記之安卓控制項架構與自定義詳解

2021-07-11 03:56:54 字數 1605 閱讀 7229

1.安卓控制項架構

安卓中控制項分為兩類:viewgroup控制項和view控制項,view group控制項作為父控制項可以包含多個view控制項,並管理它們。

上層控制項負責下層控制項的測量與繪製,並傳遞互動事件。每個ac都包括乙個window物件,通常是phone window。

ui介面的架構:

就是activity>phone window>decor view>(title view , content view) ,呈包含關係,我們常常的setcontentview就是這個content  view了。

標準檢視樹:

decor view 下面有view group ,然後下面分為actionbar container 和frame layout ,frame layout 下面就是我們的主布局檔案了。

2.view的測量

安卓系統在繪製乙個view之前,會對它先進行測量,即告訴系統該畫乙個多大的view。這個就在onmeasure();方法中進行。

測量的模式有三種:

exactly:就是我們控制項的layout_width或layout_height屬性為具體數值或者指定為match_parent屬性時。

at_most:就是我們控制項的layout_width或

layout_height

屬性為具體數值或者指定為wrap_content屬性時。

第三種不常用這裡就不說,view類預設的onmeasure()方法只支援exactly模式,如果不重寫onmeasure方法的話就必須是這種模式,如果自定義view是wrap_content屬性的時候就必須重寫這個方法了。

具體使用過程:

我們自定義乙個類繼承view,然後在布局檔案裡指定我們自定義的view看他的layout_width和layout_height屬性是什麼,根據上文說的,看是否需要重寫onmeasure方法。

具體onmeasure方法的書寫也比較簡單有模版,請讀者自行查閱。這裡就不詳細說啦。

3.view繪製

當測量好了乙個view的時候,我們就可以簡單的重寫ondraw()方法,並在canvas物件上來繪製所需要的圖形。

要想在安卓的介面中繪製相應的圖形,就必須在canvas上進行繪製,它就像畫板一樣,然後使用畫筆paint就可以在上面作畫了。通常需要通過繼承view並重寫他的ondraw()方法。

4.建立復合控制項,也就是我們常常說的ui模版

具體流程如下:

1.先定義屬性,在values目錄下建立乙個attrs.xml的屬性定義檔案。比如可以在裡面定義標題文字的字型大小顏色,按鈕的文字顏色背景等等屬性,並用format指定屬性的型別。

在確定好屬性之後,就可以建立乙個自定義控制項了-topbar,根據布局可以讓它繼承relativelayout或者其他的都ok。

2.建立乙個topbar類繼承relativelayout,然後在裡面獲取屬性,為textview,按鈕賦值設定***設定屬性等等,當然屬性值現在還沒有設定,在布局檔案中,使用2自定義的topbar布局,然後給每個屬性都賦上值,還要注意

xmlns:custom

=",不要丟了。否則失去關聯,這樣系統獲取這些屬性的時候就會到布局檔案裡來找。再更進一步將這個ui模版單獨寫到乙個布局檔案中,這樣在主布局檔案中,只要使用

安卓中自定義控制項顯示樣式

1 扁平化控制項的樣式如下 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.2 一般控制項的樣式如下 android startcolor ff8c00 android endcolor ffffff android angle 90 android wid...

安卓自定義組合控制項的實現

步驟 1.先建立乙個xml檔案做好裡面的布局 2.建立乙個對應的類 3.在需要用到此布局的地方進行呼叫這個布局 具體的實現 1.建立的xml檔案 2.建立乙個對應的類 package com.jit.mobilesafe.ui import com.jit.mobilesafe.r import a...

安卓帶節點進度條 自定義控制項

類似於這種進度條 其實這種進度條可以不用自定義view畫,可以利用現有的控制項組合成乙個控制項,其實就是乙個橫線,加上三個圓形的控制項,這裡你可以設定成按鈕,也可以是都可以。一下是 android layout width match parent android layout height 1dp...