2017-07-12 2 views
0

Ich würde gerne wissen, ist es möglich, Höhe/Breite Animation für View in Visual Studio Xamarin zu machen? Wenn ein Benutzer beispielsweise auf eine Schaltfläche klickt, ändert sich die Höhe einer Ansicht.Höhe/Breite Animation in Android Visual Studio Xamarin

Ich suchte nach einer Lösung im Internet, fand aber nur Xamarin.Forms Lösung, aber ich brauche keine Lösung für XamarinForms. Die Verwendung von scaleY ist keine Lösung.

+0

Also nicht Xamarin Formen, aber Xamarin Android (Muttersprache)? – Digitalsa1nt

+0

Zu @ Digitalsa1nt Genau –

Antwort

0

Also, ich habe eine Lösung gefunden. Wir müssen ValueAnimator verwenden.

clickedButton.Click += (s,e) =>{ 
    int viewHeight = animatedView.Height; 
    ValueAnimator animator = ValueAnimator.OfInt(viewHeight, 0); 
    animator.SetDuration(500); 
    animator.Update += (object sender, ValueAnimator.AnimatorUpdateEventArgs e) => 
    { 
     var value = (int)animator.AnimatedValue; 
     ViewGroup.LayoutParams layoutParams = animatedView.LayoutParameters; 
     layoutParams.Height = value; 
     animatedView.LayoutParameters = layoutParams; 
    }; 
    animator.Start(); 
} 

Oder wir können Funktion zum Einsturz erstellen/erweitern Animation

ValueAnimator animateCollapse(int from, int to, int duration, View animatedView) 
{ 
    ValueAnimator animator = ValueAnimator.OfInt(from, to); 
    animator.SetDuration(duration); 
    animator.Update += (object sender, ValueAnimator.AnimatorUpdateEventArgs e) => 
    { 
     var value = (int)animator.AnimatedValue; 
     ViewGroup.LayoutParams layoutParams = animatedView.LayoutParameters; 
     layoutParams.Height = value; 
     animatedView.LayoutParameters = layoutParams; 
    }; 
    return animator; 
} 
clickedButton.Click += (s,e) =>{ 
    ValueAnimator animator; 
    if (isExpanded){ 
     isExpanded = false; 
     animator = animateCollapse(originalHeight, 0, 500, animatedView); 
    } 
    else{ 
     isExpanded = true; 
     animator = animateCollapse(0, originalHeight, 500, animatedView); 
    } 
    animator.Start(); 
}