我目前正在开发一个与 API 14 及更高版本兼容的应用程序。它使用 ObjectAnimators 来制作大量动画。目标是使所有动画与 Android 2.2–2.2.3 Froyo(API 级别 8)及更高版本兼容。 我已经开始使用 nineoldandroids 来转换所有的 objectanimator 代码。然而,有一些功能我不确定可以使用什么作为替代,因为我不相信 nineoldandroid 支持它们(我可能是错的)。
以下是当前仅兼容 API 11 的函数列表。我们将不胜感激任何帮助。
设置翻译X 设置翻译Y 设置阿尔法 设置X 设置Y 设置滚动X 设置滚动Y
最佳答案
简而言之:是的,nineoldandroids 确实支持这些。
如果您查看 nineoldandroids 中 ObjectAnimator 的源代码,您会注意到它使用代理来为您要设置动画的属性设置动画。
PROXY_PROPERTIES.put("alpha", PreHoneycombCompat.ALPHA);
PROXY_PROPERTIES.put("pivotX", PreHoneycombCompat.PIVOT_X);
PROXY_PROPERTIES.put("pivotY", PreHoneycombCompat.PIVOT_Y);
PROXY_PROPERTIES.put("translationX", PreHoneycombCompat.TRANSLATION_X);
PROXY_PROPERTIES.put("translationY", PreHoneycombCompat.TRANSLATION_Y);
PROXY_PROPERTIES.put("rotation", PreHoneycombCompat.ROTATION);
PROXY_PROPERTIES.put("rotationX", PreHoneycombCompat.ROTATION_X);
PROXY_PROPERTIES.put("rotationY", PreHoneycombCompat.ROTATION_Y);
PROXY_PROPERTIES.put("scaleX", PreHoneycombCompat.SCALE_X);
PROXY_PROPERTIES.put("scaleY", PreHoneycombCompat.SCALE_Y);
PROXY_PROPERTIES.put("scrollX", PreHoneycombCompat.SCROLL_X);
PROXY_PROPERTIES.put("scrollY", PreHoneycombCompat.SCROLL_Y);
PROXY_PROPERTIES.put("x", PreHoneycombCompat.X);
PROXY_PROPERTIES.put("y", PreHoneycombCompat.Y);
像往常一样使用 ObjectAnimator(只要确保它是 com.nineoldandroids.animation!
ObjectAnimator anim = ObjectAnimator.ofFloat(yourView, "translationX", 0f, 1f);
anim.setDuration(1000);
anim.start();
编辑:这是一个示例,说明如何在 onTouchListener 中为 View 设置动画。请注意,返回 false 表示监听器尚未使用该事件。
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
ObjectAnimator anim = ObjectAnimator.ofFloat(view, "translationX", 0f, 1f);
anim.setDuration(1000);
anim.start();
return false;
}
});
关于安卓动画兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19470300/