自定义View的实现1

作者: 陈利健 | 来源:发表于2015-01-09 22:20 被阅读242次

自带的View满足不了设计的要求,就需要自定义View控件。1.首先要实现一个继承自View的类。2.添加类的构造方法,override父类的方法,如onDraw,onMeasure等。3.如果自定义的View有自己的属性,需要在values下建立attrs.xml文件,在其中定义属性,同时代码也要做修改。

构造方法:

public MyView(Context context,AttributeSet attrs){

             super(context, attrs);

}

在xml文件(main.xml)中也需要进行如下操作:

<com.example.xhelloworld.NewView

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"/>

至少在xml文件中写上上面的内容。其中com.example.xhelloworld.NewView 这句是需要显示的控件所代表的类。com.example.xhelloworld是类的包名,NewView是类名。

完成上面的两步之后就可以在代码中实例化这个布局文件了。

自定义属性设置(如果有自定义的属性)

1.在values目录下建立attrs.xml文件,添加属性内容

2.在布局文件中添加新的命名空间xmlns,然后可以使用命名空间给自定义的空间设置属性

3.设置完属性之后,当然还要对其进行处理。在自定义View类中的构造方法中进行处理

首先添加attrs.xml文件,在定义属性

就是说,我们这样一个控件MyView,需要2个自定义属性textColor 和textSize

然后在布局文件中完成

何谓命名空间? xmlns = xml name space. 

对于自定义View我们要加一个命名空间,不能以android:开头,所以我们随便命名一个,名字没有特别的考究,本例中我们用my。 格式如上面的代码所示,注意后面的这个包名是“我们当前应用的包名”,而不是自定义View所在的包名。

我们可以看到,下面有两条以android:开头的属性,说明这两个属性是android命名空间下的。然后两条以my:开头的属性,说明这是我们自定义属性命名空间下的。命名空间就是这个作用,定义了命名空间才能使用这个空间下的属性。查看源文件就知道,其实诸如android命名空间下的组件的属性,比如LinearLayout的width,其实就是 <attr name =" width",format= "float"/>

最后在MyView.java中添加另一个构造方法,并添加代码来处理从xml中获得的属性

背后的事:View类的构造方法:

·public view(Context context)                            //当在代码中创建对象时会被调用

·public View (Contextcontext,AttributeSetattrs)     //这个方法是通过xml文件来创建一个view对象的时候调用。很显然xml文件一般是布局文件,就是现实控件的时候调用,而布局文件中免不了会有属性的设置,如android:layout_width等,对这些属性的设置对应的处理代码也在这个方法中完成。

相关文章

  • iOS 自定义view创建和使用问题积累

    自定义view创建 1.纯代码的方式创建自定义View 自定义view的基本步骤 具体实现代码 以上是纯代码实现的...

  • iOS扩大按钮点击范围

    1、在自定义的view上使用hitTest:withEvent:方法可以实现其实就是自定义view,实现hitTe...

  • 自定义View理论

    自定义View类型 1. 自定义View 在没有现成的View,需要自己实现的时候,就使用自定义View,一般继承...

  • iOS 自定义View动画(needsDisplayForKey

    实现自定义View ,有两种办法: 1、 view上实现 2、layer上实现 方法一:View的drawRect...

  • Android自定义View全解

    目录 1. 自定义View基础 1.1 分类 自定义View的实现方式有以下几种 1.2 View绘制流程 Vie...

  • 自定义view

    目标: 1、掌握自定义view的流程2、掌握自定义view的三个方法3、掌握自定义view实现方式4、掌握自定义v...

  • 自定义View

    目标: 1、掌握自定义view的流程2、掌握自定义view的三个方法3、掌握自定义view实现方式4、掌握自定义v...

  • 自定义view

    目标: 1、掌握自定义view的流程2、掌握自定义view的三个方法3、掌握自定义view实现方式4、掌握自定义v...

  • IOS实战 (3) 之 水平 循环滚动文本

    实现效果## 可以将 Label 变成自定义的 View可 滚动播放 View 实现思路## 1.UIScroll...

  • 自定义View实践篇(2)- 自定义ViewGroup

    1. 简介 上一章:自定义View实践篇(1)- 自定义单一View我们实现了自定义单一View,这章我们来看下自...

网友评论

本文标题:自定义View的实现1

本文链接:https://www.haomeiwen.com/subject/obsfxttx.html