效果如图:
![](https://i-blog.csdnimg.cn/blog_migrate/41e6171ec06b0bbd2fd8ea50751ef73d.png)
整个项目的Github地址
一、基础知识:
基础知识,也就是最基本的自定义view需要掌握的知识,我这里主要是学习了GcsSloop大佬的view自定义系列博客(这里是博客地址)
1.自定义view绘制流程调用链
![](https://i-blog.csdnimg.cn/blog_migrate/463957a13cb29c4d88aa5941ec6fb394.png)
2.android自定义坐标系(向右向下为正)
![](https://i-blog.csdnimg.cn/blog_migrate/d8ceacbdf29e11009fe5a66a9183f830.png)
所以屏幕显示部分坐标系如下:
![](https://i-blog.csdnimg.cn/blog_migrate/09d5eaf3b8b4ddbfa72d3bfb97ecb42e.png)
子控件和父控件的关系:
![](https://i-blog.csdnimg.cn/blog_migrate/b68d3017d969d0b9661ea6598624a279.png)
MotionEvent中:
getLeft、getTop、getRight、getBottom是相对于view本身距离父控件的位置。
getX和getY同理;而getRawX和getRawY则获得的是相对于屏幕默认坐标系的。