【android動畫開源庫】使用ObjectAnimator後按鈕等無法互動問題
阿新 • • 發佈:2019-02-18
在使用nineoldandroids的ObjectAnimator後發現按鈕無法互動了,
去github的issue查了下,作者有提到android 3.0前的api只是渲染到了新的位置,實際位置並沒有發生改變,
也就是說按鈕還是在原來的地方
作者花了1天時間嘗試過3.0前的版本改變實質位置,但是需要侵入某些layout函式,
但是過於複雜,違背了他只是相容的本意,最重要的是沒有報酬,所以他放棄了
那麼如何解決這個問題呢?
在stackoverflow裡查詢了下,很多人提到在動畫結束的時候把view通過setMargins方式更新到新的位置
我嘗試了下發現改變後requestLayout後渲染的影象仍然沒有變化,
掙扎了很久想起有ValueAnimator,最後決定直接用ValueAnimator做動畫
程式碼片段如下
注意:如果父容器使用FrameLayout,一定要在自身定義android:layout_gravity標籤,這樣margin才有效果ValueAnimator anim = ValueAnimator.ofInt(-200,0); anim.addUpdateListener(new AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) inputArea.getLayoutParams(); params.bottomMargin = (Integer) animation.getAnimatedValue(); inputArea.setLayoutParams(params); } }); anim.start();