在很多时候我们在写自定义的控件的时候,而这些控件都是需要给别人用的,所以我们在这些控件当中我们就需要在里面复写或者自定义一些方法提供给外界使用,并将控件在点击的时候也能够根据当前的状态相应对应的事件和需要的下边的逻辑。
现在以简单的自定义开关的小案例来说明自定义控件体现一种让使用者传入需要的图片和数据的自定义设计模式
使用自定义控件需要调用的方法 1)设置底板需要的背景图片2)设置上方需要按钮的图片3,监听当前自定义控件状态,并根据这个时候的状态响应不同的动作 这里其实是使用了接口的回调来监听当前自定义控件的状态
定义具体的自定义控件并定义我们想要使用的方法
继承View控件,这里我们需要注意的是继承View和ViewGroup的区别 1.他们都需要进行测量操作 2.ViewGroup主要是控制子view如何摆放,所以必须实现onLayout View没有子view,所以不需要onLayout方法,但是必须实现onDraw
另外自定义控件当中的三个构造方法,当只有一个参数的时候指的就是需要在java代码中需要new出来使用,而其他的两个构造方法就是可以在布局文件当中使用
首先需要先将传过来两个图片转换成bitmap,然后在View中使用,一方面也实现我们自定义控件的使用
然后就是自定义控件的四部曲1,测量:onMeasure 设置自己显示在屏幕上的宽高2,布局:onLayout 设置自己显示在屏幕上的位置(只有在自定义ViewGroup中才用到,3,绘制:onDraw 控制显示在屏幕上的样子(自定义viewgroup时不需要这个,4,设置手势事件
1,测量
2,绘制
3,确定手势,并排除点击的时候不断响应点击事件的BUG
注意这里需要重新绘图
设置点击事件
另外为了设置里面开关的响应,我利用了枚举
这样一个简单的自定义控件就制作好了,里面蕴含了自定义控件的基本思想和设计自定义的View的基本精神,而且每一个控件的设计基本都是这样的一个步骤,另外大家也可以利用我们开源的控件,了解底层实现以后可以直接借鉴一下到我们的应用里面使用。