2014-11-07 3 views
14

Без привлечения layoutParams есть ли другой способ изменить размер, развернуть или расширить вид? Я видел эти анимации в некоторых вихрях нового Material Design и в новом приложении Android Dialer. Google сказал, что материал может легко изменять форму, размер, поворот, цвет и т. Д., Но я ничего не могу найти.Animate Resize View in Material Design

Есть ли обратная совместимость?

До сих пор для того, чтобы изменить размер, свернуть или развернуть вид, мы должны были работать с layoutParams, как это, например:

public static void collapse(final View v) { 
final int initialHeight = v.getMeasuredHeight(); 

Animation a = new Animation() 
{ 
    @Override 
    protected void applyTransformation(float interpolatedTime, Transformation t) { 
     if(interpolatedTime == 1){ 
      v.setVisibility(View.GONE); 
     }else{ 
      v.getLayoutParams().height = initialHeight - (int)(initialHeight * interpolatedTime); 
      v.requestLayout(); 
     } 
    } 

    @Override 
    public boolean willChangeBounds() { 
     return true; 
    } 
}; 

a.setDuration((int)(initialHeight/v.getContext().getResources().getDisplayMetrics().density)); 
v.startAnimation(a); 

}

Здесь не является примером того, что я хочу от нового Google Android Dialer App:

enter image description here

ответ

8

Я думаю ViewPropertyAnimator является то, что вы хотите. проверить эту ссылку http://developer.android.com/guide/topics/graphics/prop-animation.html#view-prop-animator

Вот пример:

view.animate().scaleY(endHeight/initialHeight).start()

это та же анимация, что вы сделали в своем коде

+0

Использование 'ScaleY (..)' не влияет на расположение , Изменяется только видимый размер элемента, но не пространство, занимаемое представлением в макете. – Gareth

+0

Yup, «PropertyValuesHolder» будет лучшим вариантом – user3285324