我目前正在开发一个与API 14及更高版本兼容的应用程序。它使用ObjectAnimators来做很多动画。目标是使所有动画与Android 2.2-2.2.3 Froyo(API级别8)及更高版本兼容。 我已经开始使用nineoldandroids来转换所有的objectanimator代码。然而,有一些功能,我不确定使用什么作为替代,因为我不相信nineoldandroid支持他们(我可能是错的)。
以下是仅与API 11兼容的当前功能列表。非常感谢任何帮助。
setTranslationX setTranslationY setAlpha setX的 塞蒂 setScrollX setScrollY
答案 0 :(得分:3)
简而言之:是的,九折手机确实支持那些。
如果您查看九层机器人中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中为视图设置动画的示例。请注意,返回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;
}
});
答案 1 :(得分:2)
问题涉及为X
,T
,translationX
等字段设置立即值。
您可以使用ViewHelper
附带的帮助程序类NineOldAndroids
来执行此操作。
例如替换:
myView.setX(4f);
使用:
ViewHelper.setX(myView, 4f);
有关所有支持的方法,请参阅:https://github.com/JakeWharton/NineOldAndroids/blob/master/library/src/com/nineoldandroids/view/ViewHelper.java