卫星菜单的实现
在网上有许多卫星菜单的实现,但在网上很多是不是基于属性动画的。这也就说明了这些实现是通过设置view的是否可见属性来决定这个view的位置,并没有真正的进行移动。这篇文章并不会写如何实现,只是会提到实现过程的遇到的一些坑。
下面先展示一些实现的效果:
第一个坑,当一个 float类型的数除以int类型的数,当int类型的数大有float类型的数会是零。切记切记
第二个坑,
mPaint.setShadowLayer(10f, 2f, 2f, Color.BLACK);
记得很多绘图的API是不支持硬件加速的,也就是如果不设置,那么基本是无法出现该有的效果的。这个阴影这是一个巨坑,不知道的简直是对着代码空流泪。
setLayerType(LAYER_TYPE_SOFTWARE, mPaint);
这句代码就可以显现了,也可以在注册文件中写,但总觉得不太好。
第三个其实更多的是常识,就是在xml中添加view的时候,getChildAt()是从上到下,从0到getChildCount();
在自定义的组件初始化过程中,也就是开始构造函数的地方是获取不到getChildCount()的值的,也就是不能对其所有的子view进行操作的。
这就是写这个控件的坑,其余的就是对于objectanimator的用法。当然这这个代码中还有许多要完善的,许多代码重复的问题,请各位看官多多包涵!