衛(wèi)星菜單的實(shí)現(xiàn)
在網(wǎng)上有許多衛(wèi)星菜單的實(shí)現(xiàn),但在網(wǎng)上很多是不是基于屬性動(dòng)畫(huà)的。這也就說(shuō)明了這些實(shí)現(xiàn)是通過(guò)設(shè)置view的是否可見(jiàn)屬性來(lái)決定這個(gè)view的位置,并沒(méi)有真正的進(jìn)行移動(dòng)。這篇文章并不會(huì)寫如何實(shí)現(xiàn),只是會(huì)提到實(shí)現(xiàn)過(guò)程的遇到的一些坑。
下面先展示一些實(shí)現(xiàn)的效果:

第一個(gè)坑,當(dāng)一個(gè) float類型的數(shù)除以int類型的數(shù),當(dāng)int類型的數(shù)大有float類型的數(shù)會(huì)是零。切記切記
第二個(gè)坑,
mPaint.setShadowLayer(10f, 2f, 2f, Color.BLACK);
記得很多繪圖的API是不支持硬件加速的,也就是如果不設(shè)置,那么基本是無(wú)法出現(xiàn)該有的效果的。這個(gè)陰影這是一個(gè)巨坑,不知道的簡(jiǎn)直是對(duì)著代碼空流淚。
setLayerType(LAYER_TYPE_SOFTWARE, mPaint);
這句代碼就可以顯現(xiàn)了,也可以在注冊(cè)文件中寫,但總覺(jué)得不太好。
第三個(gè)其實(shí)更多的是常識(shí),就是在xml中添加view的時(shí)候,getChildAt()是從上到下,從0到getChildCount();
在自定義的組件初始化過(guò)程中,也就是開(kāi)始構(gòu)造函數(shù)的地方是獲取不到getChildCount()的值的,也就是不能對(duì)其所有的子view進(jìn)行操作的。
這就是寫這個(gè)控件的坑,其余的就是對(duì)于objectanimator的用法。當(dāng)然這這個(gè)代碼中還有許多要完善的,許多代碼重復(fù)的問(wèn)題,請(qǐng)各位看官多多包涵!