2017-08-16 6 views
0

ich die Höhe einer Ansicht animieren kann durch LayoutParams wie dieseAnimate LayouParams wrap_content

void animateHeight(final View view, int newHeight) { 
    int currentHeight = view.getMeasuredHeight(); 

    ValueAnimator animator = ValueAnimator.ofInt(currentHeight, newHeight); 
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
     @Override 
     public void onAnimationUpdate(ValueAnimator valueAnimator) { 
      ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); 
      layoutParams.height = (Integer) valueAnimator.getAnimatedValue(); 
      view.setLayoutParams(layoutParams); 
     } 
    }); 
    animator.start(); 
} 

Gibt es eine Möglichkeit etwas ähnliches zu tun, wenn ich möchte, dass die endgültige Höhe zu wrap_content Einstellung?

Antwort

1

Um dies zu tun, müssen Sie die Art und Weise Android-Layouts emulieren und Ansichten messen. Dies ist ein komplexer Prozess, Sie können die Erklärung in the Android documentation sehen.

Ein alternativer Ansatz, wenn es möglich ist, Ihr Layout zu ändern, ist die Verwendung von ConstraintLayout und ConstraintSet. Sie können mehr Informationen darüber in diesem Google official tutorial und auch in diesem training (also by Google, with source code) sehen.

Also, wenn ConstraintLayout für Sie arbeitet, können Sie this article auf, wie man ConstraintSet nutzen, um saubere, schöne Animationen zu erstellen.

Hoffe das bringt Sie auf den richtigen Weg!