我使用NineOldAndroids 2.4.0来动画对象,主要是为了控制的移动和转换。在Android4.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();这是图书馆里的bug还是我做错了什么?如果这个库不支持“蜂窝动画API”的所有功能,那么在我的项目中,它将是无用的。
在"Animation in Honeycomb"的Android博客上引用:由于系统实际上正在改变目标对象的属性,所以对象本身是变化的,而不仅仅是它们的外观。所以你移动的按钮实际上是移动的,而不仅仅是画在另一个地方。你甚至可以点击它的动画位置。去吧,点击它,我敢。
发布于 2012-12-19 13:34:42
现在我找到了答案:How to do interactive animation (translation) with Android
它说,与原生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);
}
});https://stackoverflow.com/questions/13173808
复制相似问题