自定義組合控件,適配器原理-Day31

自定義組合控件,適配器原理-Day31

mobile2.1

  1. 主頁定義
  2. 手機上鎖功能

1.彈出設置密碼框。java

  1. 手機下載進度
  2. 自定定義控件

控件的屬性其實就是控件類一個屬性設置屬性調用類的set方法方法android

自定義組合控件的思路

  1. 生命一個View對象繼承自相對佈局,線性佈局或者其餘的ViewGroup
  2. View對象重寫構造方法,而後初始化佈局,經過View.inflate()方法把咱們本身定義的佈局掛到界面當中。
  3. 自定義屬性在res/values目錄下建立attrs.xml裏面定義一些屬性,
<resources
<declare-styleable name="cn.itcast.phonesafe.view.SettingView">
<attr name="setting_title" format="string" />
<attr name="des_on" format="string" />
<attr name="des_off" format="string" />
</declare-styleable>
</resources>
  1. 生命自定義屬性的命名空間 xmlns:zl_pro="http://schemas.android.com/apk/res/cn.zlpro.mobilesafe"函數

  2. 能夠在當前佈局裏面使用咱們1條定義的控件了。佈局

  3. 經過自定義函數的構造方法獲取屬性。AttributeSet
    attrs
    裏面能夠獲取到
title = attrs.getAttributeValue(            "http://schemas.android.com/apk/res/cn.zlpro.mobilesafe","setting_title");

總結:自定義控件就是咱們不用系統定義的控件,咱們本身定義,控件就是一個類,咱們能夠把這裏類使用到咱們的佈局文件當中。 如今有許多都是能夠 google

AndroidUI界面通常結構

LayoutInflater簡單原理

LayoutInflater就是經過pull解析佈局xml文件內部調用了createViewFromTag()該方法有節點和參數接着又去調用內部一個createView()方法,使用反射的方式建立View,這樣經過遞歸的方式把DOM結構的佈局所有反射建立成View對象spa

繪製原理

視圖的繪製過程都必須經歷三個最主要的階段,即onMeasure()測量、onLayout()肯定位置和onDraw()繪製,繪製到咱們屏幕上面, 注意View是不會幫我繪製圖形的,因此每一個內容須要自行繪製 TextView ImageView都重寫了onDraw()方法,繪製主要用到了Canvas這個類。.net

源代碼final View view = createViewFromTag(name, attrs);這行代碼來建立VView對象,最後添加到父節點當中。最後如此反覆得遞歸就能夠把全部的佈局繪製到窗口上面了 線程

參考博文:
LayoutInflater原理分析,一步步瞭解View(一)
Android視圖繪製流程徹底解析,帶你一步步深刻了解View(二)
Android視圖狀態及重繪流程分析,帶你一步步深刻了解View(三)
Android自定義View的實現方法,帶你一步步深刻了解View(四)
Android 自定義控件開發入門設計

問題專區

  1. 適配器監聽原理

    ListView 針對List中每一個item,要求 adapter 「給我一個視圖」 (getView)。 因此在setAdapter()方法的時候就是給一個能夠拿到裝到當前容器的View生成器code


適配器繼承圖
適配器繼承圖
  1. 控件怎麼實現監聽的。
  2. 自定義控件的原理,構造函數的做用完成

    其實即便在LayoutInflater加載成爲佈局的時候,經過反射響應的View,若是pull解析到該節點時就會調用改方法,繪製相應的View,源代碼final View view = createViewFromTag(name, attrs);這行代碼來建立VView對象,最後添加到父節點當中。最後如此反覆得遞歸就能夠把全部的佈局繪製到窗口上面了。

  3. 怎麼判斷是子線程UI線程

  4. 學會google的最新設計語言

心得體會

  1. 後期精簡代碼,先把代碼碼完,接口邏輯裝配
  2. 之後老師上課的代碼不能拖到後期來處理。

創意

  1. 錄視頻添加本身科技評論
相關文章
相關標籤/搜索