码迷,mamicode.com
首页 > 其他好文 > 详细

自定义控件:摩天轮的实现过程 1

时间:2016-06-23 23:40:26      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

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

自定义控件:摩天轮的实现过程 1

标签:

原文地址:http://www.cnblogs.com/stwyy/p/5612355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!