我使用NineOldAndroids 2.4.0为对象设置动画
主要用于运动和变换的控制。
在Android 4.0及更高版本上,一切正常,但在动画元素之前的版本(2.1、2.3)上无法获得焦点且不可单击。
样例代码:

View v = findViewById(R.id.button1);
v.setOnClickListener(new OnClickListener() {

     @Override
     public void onClick(View v) {
        Toast.makeText(MainActivity.this, "Click!", Toast.LENGTH_SHORT).show();
     }
});
ObjectAnimator moveDown = ObjectAnimator.ofFloat(v, "translationY", 100f);
moveDown.setDuration(5000);
moveDown.start();

这是库中的错误,还是我做错了什么?如果这
库不支持“蜂窝动画API”的所有功能,那么在我的项目中,它将是无用的。

"Animation in Honeycomb"的Android开发者博客上引用:
由于系统实际上是在更改目标对象的属性,因此对象本身也发生了变化,而不仅仅是它们的外观发生了变化。因此,您移动的按钮实际上是移动的,而不仅仅是在其他位置绘制的。您甚至可以在其动画位置单击它。继续并单击它;我赌你。

最佳答案

现在我找到了答案:
How to do interactive animation (translation) with Android

它说nineoldandroids具有与本地SDK相同的局限性。

所以我的解决方案:

myAnim.setListener(new AnimatorListenerAdapter() {
  @Override
  public void onAnimationEnd ( Animator nullPointer ) {
    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) child.getLayoutParams();
    params.bottomMargin += toYDelta;
    params.leftMargin += toXDelta;
    child.setLayoutParams(params);
  }
});

09-30 13:09