【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才有效果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值