New to Telerik UI for .NET MAUI? Start a free 30-day trial

Represents a sophisticated loading indicator control that provides visual feedback to users during long-running operations. The RadBusyIndicator offers a rich collection of built-in animations and extensive customization options to create engaging loading experiences that keep users informed and engaged while content is being processed.

The RadBusyIndicator is designed to enhance user experience by providing clear visual feedback during asynchronous operations such as data loading, file processing, network requests, or any time-consuming tasks. It automatically manages the display of loading animations and can optionally dim or hide underlying content to focus user attention on the loading state.

Key Features:

  • Rich Animation Library: 10 built-in animation types ranging from simple spinners to complex geometric patterns
  • Custom Animation Support: Create your own animations using the flexible RadAnimation system
  • Content Management: Automatically dim or hide content while busy, with customizable opacity levels
  • Flexible Content Templates: Use custom templates for busy content including text, images, and complex layouts
  • Responsive Design: Automatically adapts to different screen sizes and orientations
  • Theme Integration: Seamlessly integrates with application themes and supports custom styling

Animation Customization:

  • Size Control: Customize animation dimensions with AnimationContentWidthRequest and AnimationContentHeightRequest
  • Color Theming: Apply custom colors to match your application's brand and design
  • Performance Optimized: Hardware-accelerated animations for smooth performance across all platforms

Perfect for scenarios including data loading screens, form submission feedback, file upload/download progress, authentication processes, and any situation where users need clear indication that the application is actively working on their request. The control automatically handles platform-specific rendering optimizations to ensure consistent performance across iOS, Android, Windows, and macOS.

Definition

Namespace:Telerik.Maui.Controls

Assembly:Telerik.Maui.Controls.dll

Syntax:

C#
public class RadBusyIndicator : RadLayout

Inheritance: objectRadLayoutRadBusyIndicator

Derived Classes: TreeViewItemBusyIndicator

Example:

Basic usage with default animation:

csharp
<telerik:RadBusyIndicator IsBusy="{Binding IsLoading}"
                          AnimationType="Animation1" />

Custom styling with busy content:

csharp
<telerik:RadBusyIndicator IsBusy="{Binding IsProcessing}"
                          AnimationType="Animation5"
                          AnimationContentColor="#FF6B35"
                          ContentUnderOpacity="0.3">
    <telerik:RadBusyIndicator.BusyContent>
        <StackLayout>
            <Label Text="Processing your request..." HorizontalOptions="Center" />
            <Label Text="Please wait..." FontSize="12" TextColor="Gray" HorizontalOptions="Center" />
        </StackLayout>
    </telerik:RadBusyIndicator.BusyContent>
    <telerik:RadBusyIndicator.Content>
        <!-- Your main content here -->
    </telerik:RadBusyIndicator.Content>
</telerik:RadBusyIndicator>

Custom animation with pulsing busy text:

csharp
<telerik:RadBusyIndicator IsBusy="True" AnimationType="Custom">
    <telerik:RadBusyIndicator.BusyContent>
        <Label x:Name="thinkingLabel" Text="Thinking" HorizontalOptions="Center" />
    </telerik:RadBusyIndicator.BusyContent>
    <telerik:RadBusyIndicator.Animations>
        <telerik:RadDoubleAnimation Target="{Reference thinkingLabel}"
                                    PropertyPath="Opacity"
                                    From="0.35"
                                    To="1"
                                    Duration="700"
                                    AutoReverse="True"
                                    RepeatForever="True" />
    </telerik:RadBusyIndicator.Animations>
</telerik:RadBusyIndicator>

Constructors

Initializes a new instance of the RadBusyIndicator class with default settings. Creates a ready-to-use busy indicator with platform-optimized default animation and styling.

C#
public RadBusyIndicator()

Fields

Identifies the AnimationContentColor bindable property.

C#
public static readonly BindableProperty AnimationContentColorProperty

Identifies the AnimationContentHeightRequest bindable property.

C#
public static readonly BindableProperty AnimationContentHeightRequestProperty

Identifies the AnimationContentWidthRequest bindable property.

C#
public static readonly BindableProperty AnimationContentWidthRequestProperty

AnimationTypeProperty

BindableProperty

Identifies the AnimationType bindable property.

C#
public static readonly BindableProperty AnimationTypeProperty

BusyContentProperty

BindableProperty

Identifies the BusyContent bindable property.

C#
public static readonly BindableProperty BusyContentProperty

Identifies the BusyContentTemplate bindable property.

C#
public static readonly BindableProperty BusyContentTemplateProperty

ContentProperty

BindableProperty

Identifies the Content bindable property.

C#
public static readonly BindableProperty ContentProperty

Identifies the ContentUnderOpacity bindable property.

C#
public static readonly BindableProperty ContentUnderOpacityProperty

IsBusyProperty

BindableProperty

Identifies the IsBusy bindable property.

C#
public static readonly BindableProperty IsBusyProperty

Properties

Gets or sets the color of the animation content elements. This property allows you to customize the visual appearance of the loading animation to match your application's theme and branding.

C#
public Color AnimationContentColor { get; set; }

Gets or sets the requested height of the animation content in device-independent units. This property controls the vertical size of the animated loading indicator. Use -1 for automatic sizing based on the animation type.

C#
public double AnimationContentHeightRequest { get; set; }

Gets or sets the requested width of the animation content in device-independent units. This property controls the horizontal size of the animated loading indicator. Use -1 for automatic sizing based on the animation type.

C#
public double AnimationContentWidthRequest { get; set; }

Gets a collection of custom RadAnimation objects used when AnimationType is set to Custom. Add multiple RadAnimation objects to create complex, layered animations with combined effects like rotation, scaling, and translation.

C#
public Collection<RadAnimation> Animations { get; }

Gets or sets the animation style used to display the loading indicator. Choose from 10 built-in animation types (Animation1-Animation10) or use Custom to define your own animations through the Animations collection.

C#
public AnimationType AnimationType { get; set; }

Gets or sets the custom content displayed alongside the loading animation when the indicator is in a busy state. Use this property to show informative messages, progress details, or any custom UI elements during loading operations.

C#
public View BusyContent { get; set; }

BusyContentTemplate

ControlTemplate

Gets or sets the control template used to define the layout and appearance of the busy content. This template provides complete control over how the busy state is presented, allowing for sophisticated loading screens and layouts.

C#
public ControlTemplate BusyContentTemplate { get; set; }

Gets or sets the main content that is displayed when the busy indicator is not in a busy state. This content is automatically managed by the control, being dimmed or hidden based on the IsBusy state and ContentUnderOpacity settings.

C#
public View Content { get; set; }

Gets or sets the opacity level applied to the Content when IsBusy is true. Use values from 0.0 (completely transparent) to 1.0 (fully opaque) to control how much the underlying content is dimmed during loading.

C#
public double ContentUnderOpacity { get; set; }

Gets or sets a value indicating whether the busy indicator is currently in a busy state. When true, the loading animation and busy content are displayed while the main content is dimmed or hidden according to ContentUnderOpacity.

C#
public bool IsBusy { get; set; }

Methods

Creates the layout manager for this layout.

C#
protected override ILayoutManager CreateLayoutManager()
Returns:

ILayoutManager

An instance of RadLayoutManager that manages the layout of child elements.

Overrides: RadLayout.CreateLayoutManager()

C#
protected override void OnBindingContextChanged()