在使用nineoldandroids的ObjectAnimator后发现按钮无法交互了,
去github的issue查了下,作者有提到android 3.0前的api只是渲染到了新的位置,实际位置并没有发生改变,
也就是说按钮还是在原来的地方
作者花了1天时间尝试过3.0前的版本改变实质位置,但是需要侵入某些layout函数,
但是过于复杂,违背了他只是兼容的本意,最重要的是没有报酬,所以他放弃了
那么如何解决这个问题呢?
在stackoverflow里查询了下,很多人提到在动画结束的时候把view通过setMargins方式更新到新的位置
我尝试了下发现改变后requestLayout后渲染的图像仍然没有变化,
挣扎了很久想起有ValueAnimator,最后决定直接用ValueAnimator做动画
代码片段如下
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();