Progress Button for Xamarin.Android - Ported from this library
Article on ProAndroidDev.com explaining how it works (in kotlin): here
- No layout changes required
 - Few lines of code to add
 - Easily configurable
 - Customizable
 - Built in fade animations
 
Install-Package Ir.XamarinDev.Android.ProgressButton
protected override void OnCreate(Bundle savedInstanceState) {
    base.OnCreate(savedInstanceState);
    SetContentView(Resource.Layout.activity_main);
    
    var myButton = FindViewById<MaterialButton>(Resource.Id.myButton);
    
    // bind your button to activity lifecycle
    this.BindProgressButton(myButton);
    // (Optional) Enable fade in/out animations 
    myButton.AttachTextChangeAnimator();
    // Show progress with "Loading" text
    myButton.ShowProgress((progressParams) => {
        progressParams.ButtonTextRes = Resource.String.loading;
        progressParams.ProgressColor = Color.White;
    });
    // Hide progress and show "Submit" text instead
    myButton.HideProgress(Resource.String.submit);
}var animatedDrawable = ContextCompat.GetDrawable(this, Resource.Drawable.animated_check);
// Defined bounds are required for your drawable  
animatedDrawable.Bounds = new Rect(0, 0, 40, 40);
  
button.ShowDrawable(animatedDrawable, (drawableParams) => {
    buttonTextRes = Resource.String.saved;
});Detailed doc: here
To avoid memory leaks you always need to bind your button to a LifecycleOwner (usually Activity, or Fragment):
[ILifecycleOwner].BindProgressButton(button);GPL v3.0
XamarinDev
Anton Hadutski - GitHub



