【062】自定义控件-2-完全自定义控件-自定义开关

1. 界面效果及逻辑思路

 

2.绘制界面内容

2.1 新建类

【注意】3个构造函数的作用

 

2.2 控件的绘制需求

【控件绘制的时机】所有的控件的绘制都是在onResume之后才可以获取焦点,然后进行绘制;

 【控件的功能】三点

(1)具有滑块;

(2)滑块内部具有滑块背景;

(3)具有默认的状态

【源码】

2.3 控件绘制的原理

2.4 控件的布局

2.5 开关背景图片的绘制

 

2.6 滑块图片的绘制及滑动效果

【滑块绘制的坐标的确定】

【默认开始程序的滑块的坐标】就是(0,0)

【滑动之后滑块所到最后的位置坐标】(底部图片的宽a - 滑块的宽b,0)

 

2.7 默认状态的指定

3. 响应触摸事件

【说明】上面的代码是可以使用用户设置的默认值true/false来设置程序启动之后的滑块的位置;

下面要实现的功能是通过滑动的位置进行滑块的移动;

3.1 触摸事件的框架

 

3.2【滑动时候滑块位置的确定】

【滑动的效果】滑动时候跟随鼠标的位置是滑块的中心位置;

3.3 限定滑块移动的位置

【效果】

3.4 限定最后滑动的位置:开/关

【判断的原理】看底部图片的中心点的位置位于滑块的中心的左右,如果是左->开;如果是右->关;

【效果】

4.接口监听(比较重要)

【步骤】

【功能】监听开关的状态然后可以根据状态判断进行对应的操作; 使用到回调方法;

【开关状态的监听的调用】拖动按钮之后的触发函数的调用关系:

ACTION_UP调用了setOnSwitchStateUpdateListener方法;

【效果】

5.自定义属性

【说明】一般的控件的属性定义都是在xml文件中进行定义的;

   因此:在咱们的控件当中也要遵循这种方式;

5.1【参考View】

5.2【源码】模仿View的属性的源码自己书写的xml代码;

【属性对应的值】自定义之后的属性值在R.java文件中可以找到对应的体现;

5.3 如何使用

 

 

posted @ 2018-01-11 16:58  OzTaking  阅读(249)  评论(0)    收藏  举报