android自定義View_0——Create a custom view class

一:建立一個自定義view的原則:android

    1.符合android的標準數組

    2.能在layout的xml中定義控件屬性函數

    3.實現些新功能佈局

    4.要兼容android的大多數版本spa

二:定義一個view的子類設計

    1.能夠直接繼承View,或是爲了省時能夠繼承View的已實現的子類,如Buttoncode

    2.在繼承View以後,須要提供一個構造函數,這個函數自少提供Context和AttributeSet兩個變量。xml

     context用於提供上下文,AttributeSet用於提供自定義view的屬性設置。blog

     

三:定義自定義屬性繼承

    1.爲了能在xml中使用自定屬性,必須實現如下步驟:

      1.在res下建立res/values/attrs.xml,而後自定義屬性。一般自定義的屬性文件中的name屬性名字和自定的view名字相同,這個隨意。

        

      2.在你的佈局文件中指定自定義view的屬性值。在使用的時候,須要將命名空間加入佈局文件中,格式以下:

        xmlns:NAME = http://schemas.android.com/apk/res/[your package name]

        

        提示:

           1.其中xmlns是一個特殊指令,由於命名空間通常都較長,因此用這個指令能夠自定義名字來簡化太長的命名空間

           2.在使用自定的view的時候,須要指明view的徹底限定名,若是自定義的view是一個內部類,須要以下方式指定:

            com.example.customviews.charting.PieChart$PieView

      3.在運行時,檢索屬性值       

      4.將檢索出來的屬性值,付值到自定義的view上

四:應用自定義屬性

    1.初始化view的時候,屬性都是檢索xml標籤中讀取而後,經過bundle發送到構造函數中的Attributes中,

     固然也能夠直接定義一個Attributes變量,而後初始化view的時候使用,可是不建議,緣由以下:

        1.屬性值的資源文件賦值都沒有解決。

        2.樣式的stlye不適用這麼作。

    2.得到屬性的方法是將AttributeSet發送給ObtainStyledAttributes(),這個方法將返回一個TypedArray包含了已經肯定的屬性值和風格。

     每個定義好的 <declare-styleable>都會在R文件中自動生成一個屬性數組集合引用和每一個屬性的引用。其實每一個屬性的引用值,就是他

     在屬性集合數組中的index。

        

        

        

 

     在自定義view中讀取屬性方法:

        

      提示:由於TpedArray是共享的資源,因此使用後必須回收。

五:添加動態改變屬性事件

    1.Attributes雖然很強大,能夠很靈活的改變控件的屬性,可是這些屬性只能在初始化的時候使用,因此爲了能動態的改變自定義的屬性,能夠提供

     一個成員變量,並提供set和get方法。

        

    2.在setShowText方法的最後調用了invaladate()和requestLayout()。這兩個方法實現了當view的屬性如大小,顏色等,被改變了以後,須要通知

     系統當前的view須要被從新繪製

    3.一個自定義的view不只要提供成員變量,同時須要也好提供一個監聽的方法,這樣的設計可使view變得更靈活。

六:使設計更容易使用:

    1.當你的使用者有身體殘疾或是其餘的問題時,要保證設計可以讓他們使用:

      1.輸入標籤使用android:contentDescription屬性。

      2.當須要發送輔助服務的時候請調用sendAccessibilityEvent().

      3.支持備用設備,如滾動球和手柄(遊戲機那個東西)。

相關文章
相關標籤/搜索