介绍
昨天晚上写了一个Android的滑动开关, 即SlideSwitch。效果如下:
实现
实现的思路其实很简单,监听控件上的touch事件,并不断刷新,让滑块在手指的位置上绘出,达到滑块跟着手指滑动的显示效果。
先看一下代码:
SlideSwitch.java (7月3日有修改:在touch事件里调用onStateChangedListener前增加判空)
|
|
注释应该很详细了。主要有以下几点。
1、重写了onMeasure方法,使控件高度依赖于控件的宽度。这样不论在布局文件中如何设置,总能保证控件的宽高比。
2、控制好滑块的活动范围
3、定义内部接口OnStateChangedListener,并在自定义控件里定义了其对象以及从外部赋值的方法setOnStateChangedListener,以便对开关状态更改事件进行监听并调用回调。
使用及Demo
在布局文件中添加该控件即可使用。Demo效果为动图展示效果(demo里颜色为绿色,动图为蓝色是因为绿色会导致截取gif时出问题,临时更改的)。
Demo中布局文件如下:
activity_main.xml:
|
|
Demo中Activity代码如下:
MainActivity.java