自定义控件:摩天轮的实现过程 1
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义控件:摩天轮的实现过程 1相关的知识,希望对你有一定的参考价值。
1 摩天轮控件是可以通过触摸旋转的,但旋转的过程中保持子View 的方向。
2 摩天轮控件中触摸旋转,惯性转动的基础是自控件的摆放,使用了三角函数来确定子view
的中心点位置,注意在分析阶段我们把摩天轮的中心点作为参考点(0,0),在写代码的时候,记得
偏移到控件左上方。
3 在触摸旋转和惯性旋转时,我们需要改变所有的孩子的位置,其实也就是孩子中心点与
圆心连线的角度,但因为角度间隔相等,所以只需要改变第一个孩子的角度,然后其他孩子与第
一个孩子保持角度间隔即可,然后调用requestLayout 重新摆放孩子即可。
4 触摸旋转和惯性转动,都使用了GestureDector 帮助我们判断触摸事件的类型,以及提
供给我们所需要的参数。
5 在触摸旋转中,我们通过计算当前点的角度和上一次点的角度,再算出两点的差,就可
以知道需要旋转多少角度了。
6 比较难的地方就是把惯性滑动的像素速度转化为角速度,对于没有学过微积分的同学可
能想不到。然后我们使用了值动画不断地改变角度来模拟转动,又使用了减速插值器来模拟减速。
7 因为摩天轮的触摸事件处理都是写在了onTouchEven,t 方法中,如果子控件消费了触
摸事件, 会导致摩天轮的onToucheEvent 方法没有被调用, 所以我们需要在
onInterceptTouchEvent 方法中返回ture,然后再检测单击事件发送给被点击的孩子。
以上是关于自定义控件:摩天轮的实现过程 1的主要内容,如果未能解决你的问题,请参考以下文章