自定义控件之写在前面

自定义控件之写在前面


在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进来就可以了。


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值