【android动画开源库】使用ObjectAnimator后按钮等无法交互问题

在使用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();


注意:如果父容器使用FrameLayout,一定要在自身定义android:layout_gravity标签,这样margin才有效果

你可能感兴趣的:(android,小细节)