前面我们对自定义View的理论有所认识,接下来,我们通过几个自定义View的例子来加深对自定义View的理解。
1、定义带有删除按钮的EditText
需求分析:如下图
其实就是在EditText右边加入一个小图标,当点击小图标就可以清楚输入框里面的内容,因为android系统中不存在这样的控件,因此,我们需自定义一个控件实现上面的功能。
在自定义控件时主要有如下功能:
1)添加图片显示和隐藏功能
2)当输入框文本内容变化或焦点变化时都要判断还是否显示右边的图标
3)点击右边的图标,清除输入框中的文本,
因为我们不能直接给EditText设置点击事件,所以我们用onTouchEvent()来模拟点击事件,当点下的位置大于EditText左边到图片左边的距离小于EditText左边到图片右边的距离,就认为图片被点击了。
实现:请参考源码,下载地址:
2、自定义滑动开关
我们知道Android4.0以上才带有滑动开关Switch,那再4.0一下的系统就用不了,所以这里定义一个滑动开关以兼容低版本的系统。
需求分析,如下图:
自定义控件时主要有工作:
1)实现View的draw()方法,绘制开关的背景和开关按钮
2)设置自定义View的Touch事件,实现滑动功能
实现:请参考源码,下载地址: