2014-09-21 58 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