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.支持备用设备,如滚动球和手柄(游戏机那个东西)。

相关文章
相关标签/搜索