闲聊自定义控件之分类

自定义控件基本上是每个Android开发人员绕不过的坎,很大一部分开发人员对其并没有清楚的认识,所以一遇到自定义控件就有点手足无措,说不上“谈虎色变”吧,至少会少些许底气。闲来无事,咱们聊一下Android自定义控件那些事。

要想写自定义控件,首先必须对其有个清楚的认识,并非所有的自定义控件都跟想象中的那样难。

自定义控件可以根据其功能、样式、特效的复杂程度和相关性在实现过程这个维度可以将其拆分成简单自定义控件和复杂自定义控件。当然这种所谓的简单和复杂都是相对的,且不是技术点的复杂度,而是实现过程的复杂度。实际开发中我一般将拆分单元小于3的称为简单自定义控件。自定义控件的单元拆分可以参考我的文章——闲聊自定义控件之单元拆分

自定义控件如果从其使用的技术特点上分类的话,可能大家更加容易掌握,但这种方式的覆盖面可能有所欠缺,很多新的比较有创意的控件可能面临“不伦不类”的局面。另外,官方也很少有这方面的资料和总结。虽然这个“坑”比较明显,但一般的自定义控件还是可以用这种方法归类的,下面将凭借自己“颇丰”的忽悠能力,带大家入坑。

  • 第一类,静态单一View。这一类控件继承自原生的View或者Viewgroup,仅仅通过改变原有控件的某些属性,或者覆写特定方法来实现,仅用于扩展某些功能,不改变原生的交互效果。如
    具有描边功能的TextView,圆角的ImageView,可嵌套的ListView等。这类控件在实现过程这个维度上按照复杂度来区分的话属于简单控件,因为很难对其进行单元拆分,而且也不存在拆分的意义。但实际上这类控件的技术复杂度还是相对较高的,因为这需要对原生控件的方法、属性特别的了解,并且能够灵活运用。此外,还需要很多关于View的基础知识,如绘制流程,或者坐标、path、canvas等,这些知识在平时开发中容易被忽略。
  • 第二类,动态单一View。这一类控件在第一类的基础上加入了动态效果,这种动态效果不仅仅限于属性动画,也可以通过简单的代码去实现,如Handler 、Timer等。这类控件同第一类控件一样,在实现过程这个维度上同属于简单动画,只不过要求技术要求更近一步,增加了动态改变某些属性的功能,而这个功能可能有时候需要大家有较强的数学功底。做这类动画建议大家先考虑每一个状态的情况,然后通过属性动画或其它手段去不断更新这个状态,思路相对清晰。
  • 第三类,静态组合View。这一类控件继承自原生的Viewgroup,由其它控件组合而成。如果这个控件全部有原生控件组合而成,则实现过程相对容易,一般被分到简单控件类别。如果包含了至少两个第一类自定义控件的话,我们一般将其分到复杂控件类别。这类控件虽然看似复杂,其实仅仅是对原生控件或第一类控件的组合,只需要对常见的Viewgroup的属性有所了解,添加一些简单的流程逻辑控制即可。如,可清除Edittext等。
  • 第四类,动态组合View。这一类控件基本上是最难的自定义控件了,一般比较炫的控件都属于这一类。但这个难也不是绝对的,如果仅有几个第一类控件加动画逻辑组成,其实复杂程度并不高。要想做好这一类控件,通常需要能够熟练的编写第二类自定义View,并且要有较强的逻辑和流程分析能力,要能够对该类控件进行合理而灵活的单元拆分和粘合。此外,此类控件不仅需要我们有较强的UI方面的知识,还需要我们对系统的一些机制有一定的了解。

可能大家看到这里会问到,知道这些分类有何用?还有很大可能就是大家到现在对这些分类也不是很清晰。我想告诉大家的是,所谓的“物以类聚”肯定存在一定的道理,后面我会针对每个分类做几个demo,并总结这一分类的自定义控件开发技巧或者注意事项,大家慢慢体会或许会有所收获的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值