您的位置:首页 > 其它

自定义控件之写在前面

2015-10-22 22:27 267 查看

自定义控件之写在前面

在android应用开发中常常会用到一些具有特殊功能的控件,但是android本身的控件并没有很好地为我们提供支持,这时候就需要我们来自定义控件。

现在网上已经有了很多UI的第三方库,为我们提供界面友好,性能强大的控件,像什么下拉刷新,侧滑删除,侧滑菜单。。。

与此同时,我们也不能保证自己需要的组件别人都已经写好了,而且作为开发人员,自定义组件也是必备技能。

自定义控件一般分为以下几种方式

1.继承现有控件,使用这种方法是最简单的,在已经有的控件的基础上完善自己的功能,举个例子,比如圆形的ImageVIew.使用此方法又有个致命的缺点,他比较适合用来自定义控件,而非组件,也就是说,不能实现多个控件组合在一起作为一个控件使用的情况。

2.继承ViewGroup,重写布局控件可以组合多个控件使之可以结合在一起如同一个空间一样去使用。

实现自定义控件的布局,又有多种方法。

1.继承View实现自定义控件时,需要用到onDraw()方法,使用paint,cavans绘制组件,这种方法相对难一点,比如,自定义一个索引条,上面写上a~z的字母,使用继承view的绘制内容文字的方法是最好的选择。

2.使用ViewGroup就相对简单地许多,这里所说的ViewGroup并不是要求重写这个基本的父类,可以重写他的子类,LinearLayout,RelativeLayout,FramLayout,他们各有各的特点,LinearLayout适合顺序布局,RelativeLayout适合位置多变的布局,FramLayout适合重叠,对布局相对位置要求不高的布局,,,根据自己的需要选择。

3.继承ViewGroup需要填充里面的子控件,有两种方法适合选择:

3.1使用xml文件,这种是最简单地方法,同时也是最有效的方法,Google官方也是要求我们使用xml文件来进行布局的,比较直观和高效。比如,广告版,实现图片的循环播放,同时下方有索引和标题跟随变化。

3.2使用纯代码,比较枯燥且不直观,但是不依赖于xml文件,所有的控件的添加都在java代码中进行,后面我会介绍一个例子,对于一些简单地布局,我们可能没有必要再去写一个没有几行代码的xml文件,使用纯代码也是很好地选择。

4.使用自定义属性,这是在自定义控件中很重要的一部分,使用自定义属性,可以在xml文件中就完善好你的布局,而不是在java代码中使用很多set方法来设置,实现了逻辑和UI的更好的分割。

更多:

使用自定义控件,不可避免的要与外界交互,此时需要对外界开放接口,使用接口将控件中的事件交给使用它的UI来实现,我们的控件应该是对外界开放的,而不是一个不可更改的死东西,否则就失去了自定义控件的意义。

尽量简化初始化的方法,不要对外公开一个很复杂的构造方法,失去简洁性,比如如果你需要一个这样的参数
List<Map<String,String>>
对外界来说初始化一个这样的对象是复杂的,所以可以将它拿到控件内初始化,使用者只需要传递String进来就可以了。

综上,就是我对自定义控件的理解,并非官方,对各种方法的使用,后面的文章会在介绍。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: