2013-10-19 121 views
1

我目前正在研究与API 14兼容的应用程序。它使用ObjectAnimators来完成很多动画。目标是使所有动画与Android 2.2-2.2.3 Froyo(API级别8)及以上版本兼容。 我已经开始使用nineoldandroids来转换所有的对象代码。然而,我不确定使用什么作为替代方法的一些功能,因为我不相信nineoldandroid支持它们(我可能是错的)。Android动画兼容性

下面是仅与API 11兼容的功能的当前列表。任何帮助将非常感激。

setTranslationX setTranslationY setAlpha setX的 SETY setScrollX setScrollY

+0

退房[droidQuery](http://bit.ly/droidquery)用于编写与Froyo兼容的简单动画。这使用* NineOldAndroids *,并进一步简化了动画语法。 – Phil

回答

3

简而言之:是的,nineoldandroids确实有这些支持。

如果您在9oldandroids中查看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.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; 
     } 
    }); 
+0

非常感谢你的回答,我发现它非常有用。我一直在通过nineoldandroids演示示例查看使用示例。到目前为止,一切都很好,除了一件事。 我实际上是基于onTouch()事件动画视图,我不能使用ObjectAnimator来设置对象的视图属性。有关如何设置属性的任何想法? – ahmad

+0

@ahmad,当然你仍然可以在'onTouch'事件中使用'ObjectAnimator'。 – Phil

+0

我修改了我的答案,以包含onTouch的示例。请让我知道这是否会回答您的问题,并且如果您发现它有用,请将其标记为已接受。 – klmprt