回覆列表
  • 1 # 使用者1892284412980

    如何把自定義控制元件的原理落實到程式碼上

    步驟

    1)自定義屬性的宣告與獲取

    分析需要的自定義屬性;

    在res/values/attrs.xml中進行宣告;

    在Layout.xml檔案中進行使用

    在View的構造方法中獲得我們自定義的屬性/宣告的屬性;

    TypedArray 獲取所有的自定義屬性的集合,然後進行遍歷;

    2)測量onMeasure()

    測量模式和測量值,有三種測量模式

    EXACTLY:一般是設定了明確的值或者是MATCH_PARENT

    AT_MOST:表示子佈局限制在一個最大值內,一般為WARP_CONTENT

    UNSPECIFIED:表示子佈局想要多大就多大,ListView ScrollView

    MeasureSPEC

    主要用於計算檢視的大小,即檢視的寬度和長度;

    子類可以覆寫onMeasure()方法實現自己的計算檢視大小的方式,並透過setMeasuredDimension(width, height)儲存計算結果;

    3)佈局onLayout()

    自定義ViewGroup才有的方法,繼承自VierGroup,自定義View沒有的;編寫繼承自View/VierGroup的子類(TextView、LinearLayout等)

    用於控制控制元件在螢幕中顯示的位置;

    4)繪製onDraw()

    呼叫Canvas裡面的api進行繪製操作;

    draw操作利用前兩部得到的引數,將檢視顯示在螢幕上;

    5)onTouchEvent()

    觸控事件的實現,響應使用者操作。

    6)onInterceptTouchEvent()

    事件分發和攔截,只有自定義ViewGroup才有的方法;

    在佈局檔案中使用時,使用全類名;

  • 中秋節和大豐收的關聯?
  • 母豬生下小豬有10了,昨天開始不餵奶了是什麼原因?