2014-11-07 6 views
14

Gibt es, ohne LayoutParams zu verwenden, eine andere Möglichkeit, die Größe einer Ansicht zu ändern, zu reduzieren oder zu erweitern? Ich habe diese Animationen in einigen Videos des neuen Material Designs und in der neuen Android Dialer App gesehen. Google sagte, dass Material Form, Größe, Rotation, Farbe, etc. leicht ändern kann ... aber ich kann nichts finden.Animieren der Größenanpassungsansicht in Material Design

Gibt es Rückwärtskompatibilität?

Bis jetzt, um die Größe, Kollaps oder eine Ansicht erweitern wir mit layoutParams wie dies zum Beispiel arbeiten mussten:

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); 

}

Hier ist ein Beispiel dafür, was ich von den neuen will Google Android Dialer App:

enter image description here

Antwort

8

ich denke, ViewPropertyAnimator ist das, was Sie wollen. Prüfung Link http://developer.android.com/guide/topics/graphics/prop-animation.html#view-prop-animator

Hier ein Beispiel:

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

dies ist die gleiche Animation, die Sie in Ihrem Code haben

+0

Mit 'scaleY (..)' nicht das Layout beeinflussen . Nur die sichtbare Größe des Elements ändert sich, aber nicht der Platz, den die Ansicht im Layout einnimmt. – Gareth

+0

Yup, wäre ein 'PropertyValuesHolder' eine bessere Option – user3285324