首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ViewGroup动画不工作

ViewGroup动画不工作
EN

Stack Overflow用户
提问于 2015-06-06 11:25:42
回答 2查看 694关注 0票数 4

我正试着用Android做一个简单的动画翻译。以下代码不起作用:

代码语言:javascript
复制
public class MyView extends ViewGroup {
    ...
    TranslateAnimation animation = new TranslateAnimation(0, 0, 0, -500);
    animation.setDuration(300);
    startAnimation(animation);
    ...
}

但是,这是可行的:

代码语言:javascript
复制
public class MyView extends ViewGroup {
    ...
    animate().setDuration(300).translationYBy(-500);
    ...
}

我需要最高版本的工作,因为我添加了更多的视图,需要在同一时间动画,我想在一个AnimationSet中使用TranslateAnimation的。

EN

回答 2

Stack Overflow用户

发布于 2015-06-06 12:47:00

好吧,在对这两种动画方法进行了一些研究后,我得出了以下结论:

代码语言:javascript
复制
List<Animator> animators = new ArrayList<>();
for (int i = 0; i < view.getChildCount(); i++) {
    View child = view.getChildAt(i);
    ObjectAnimator va = ObjectAnimator.ofFloat(child, View.TRANSLATION_Y, child.getY() - 500);
    va.setDuration(300);
    animators.add(va);
}

一些解释:

  1. TranslateAnimations是安卓包含的旧动画库的一部分。它们在为对象设置动画时实际上不会更改对象的基础属性值。我注意到,如果我在屏幕上执行其他动作(比如滚动ListView),动画就会闪烁可见。
  2. 从Honeycomb (Android3.0)开始,有一种更新的方法可以在动画中改变底层属性值本身。它被称为ObjectAnimator。然后在3.1版中,他们引入了另一个类来帮助简化ObjectAnimatorViewPropertyAnimator。我使用的第二种方法实际上是使用ViewPropertyAnimator.
  3. As的快捷方式,我在问题中说,我需要任何我找到的解决方案来同时为多个事物设置动画。不幸的是,ViewPropertyAnimator不能同时做多个动画。因此,我最终使用了ObjectAnimator
  4. Finally,,因为ObjectAnimator不支持按某个值进行平移,所以我必须使用视图的当前Y值来计算视图的最终Y位置。

来源:http://android-developers.blogspot.com/2011/05/introducing-viewpropertyanimator.html

票数 0
EN

Stack Overflow用户

发布于 2015-06-06 23:38:44

这并不是对实际问题的回答,更多的是关于如何同时使用具有不同观点和价值观的ViewPropertyAnimator的建议。编写您自己的方法,并将您需要的值作为参数传入,例如(最小实现):

代码语言:javascript
复制
private void animateView(View view, float transX, float transY, int duration) {

     view.animate().
         .translationXBy(transX)
         .translationYBy(transY)
         .duration(duration);
}

如果愿意,可以添加更多参数。例如,插值、缩放、旋转或Alpha值。然后使用循环或编写另一种方法来同时为视图设置动画。要确保它们同时显示动画,您还可以在参数中添加一个较小的ms startDelay,以确保所有动画在启动前都已加载完毕。希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30678615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档