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

来源:互联网 发布:java判断水仙花数 编辑:程序博客网 时间:2024/05/29 17:42
一:创建一个自定义view的原则:

    1.符合android的标准

    2.能在layout的xml中定义控件属性

    3.实现些新功能

    4.要兼容android的大多数版本

二:定义一个view的子类

    1.可以直接继承View,或是为了省时可以继承View的已实现的子类,如Button

    2.在继承View之后,需要提供一个构造函数,这个函数自少提供Context和AttributeSet两个变量。

     context用于提供上下文,AttributeSet用于提供自定义view的属性设置。

     

三:定义自定义属性

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

0 0
原创粉丝点击