2017-07-12 10 views
0

Visual Studio XamarinでViewの高さ/幅のアニメーションを作成することは可能ですか?たとえば、ユーザーがボタンをクリックすると、ビューの高さが変化します。Androidでの高さ/幅のアニメーションVisual Studio Xamarin

私はインターネット上で解決策を探しましたが、Xamarin.Formsソリューションしか見つかりませんでしたが、XamarinFormsでは解決策が必要です。 scaleYの使用は解決策ではありません。

+0

を拡大/縮小する機能を作成することができますか? – Digitalsa1nt

+0

To @ Digitalsa1ntまさに –

答えて

0

私は解決策を見つけました。 ValueAnimatorを使用する必要があります。

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

それともので、フォームをXamarinが、XamarinのAndroid(ネイティブ)でないアニメーション

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(); 
} 
関連する問題