2014-09-21 64 views
0

我想创建以下概念:动画视图的宽度以匹配父项?

首先将视图展开为其父宽度(它不相同)。 然后将视图展开到其父母的高度。

我知道我可以用AnimatorSet()创建序列。我找不到什么属性/动画来创建结果。

我对宽度动画的想法: 我可能需要动画两个定义左右两个点的动画,或者动画翻译和宽度。

我有点困惑,哪些属性会诀窍?

+0

我的答案解决了你的问题吗? – 2014-09-23 11:57:55

回答

0

我认为没有必要使事情变得复杂,你可以使用width属性首先再其次是在AnimatorSet高度,你的看法重力属性将确定在哪个方向视图将扩大...

+0

您能否提供一些关于重力的细节:如果我有例如一个不使用重力的网格视图(afaik)? – Diolor 2014-09-21 14:35:04

+0

我的意思是视图的重力与它的父母将决定视图将扩展的方向,所以假设你GridView在LinearLayout内(重力说右),然后在增加GridView大小时它将开始从屏幕上出现,同样你可以找出...... – maaz 2014-09-21 17:38:56

+0

@Diolor这实际上是如何回答你的问题?你说你找不到要动画的属性,这个答案没有指定它们。 – 2014-09-27 13:04:07

1

你需要定义自定义属性来做到这一点(我知道,愚蠢)。身高例如:

public static final Property<View, Integer> PROPERTY_HEIGHT = 
     new Property<View, Integer>(Integer.class, "viewLayoutHeight") { 

      @Override 
      public void set(View object, Integer value) { 
       object.getLayoutParams().height = value.intValue(); 
       object.requestLayout(); 
      } 

      @Override 
      public Integer get(View object) { 
       return object.getLayoutParams().height; 
      } 
     }; 

然后作为一个正常的财产使用:

ObjectAnimator.ofInt(view, PROPERTY_HEIGHT, minHeight, maxHeight); 

你需要在运行时获取父尺寸(可能使用ViewTreeObserver.OnGlobalLayoutListener)。

+0

没有试过,只是问扩展的方向怎么样? – Diolor 2014-09-21 14:36:58

+0

这不是你问题的一部分。如果它满足你原来的问题,请接受这个答案。您可能需要单独控制翻译。 – 2014-09-21 14:51:46