Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" ?>
<Application x:Class="XFShimmerLayoutPCLSample.App" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" />
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using Xamarin.Essentials;
using Xamarin.Forms.Xaml;
using XFShimmerLayoutPCLSample.Controls;

[assembly: XamlCompilation(XamlCompilationOptions.Compile)]
namespace XFShimmerLayoutPCLSample
{
public partial class App
{
public App()
{
InitializeComponent();

ShimmerLayout.Init(DeviceDisplay.ScreenMetrics.Density);

MainPage = new Views.ShimmerTestPage();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using Xamarin.Forms;

namespace XFShimmerLayoutPCLSample.Models
{
public class NotifyingObject : BindableObject
{
private readonly Dictionary<string, object> _properties;

public NotifyingObject()
{
_properties = new Dictionary<string, object>();
}

#region [Notify Property Changed]

protected virtual bool Set<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
{
if (EqualityComparer<T>.Default.Equals(storage, value)) return false;

storage = value;
OnPropertyChanged(propertyName);
return true;
}

#endregion
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using System.Reflection;
using System.Runtime.CompilerServices;

// Information about this assembly is defined by the following attributes.
// Change them to the values specific to your project.

[assembly: AssemblyTitle("XFShimmerLayoutPCLSample")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("${AuthorCopyright}")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.

[assembly: AssemblyVersion("1.0.*")]

// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.

//[assembly: AssemblyDelaySign(false)]
//[assembly: AssemblyKeyFile("")]
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using System.Threading.Tasks;
using Xamarin.Forms;
using XFShimmerLayoutPCLSample.Models;

namespace XFShimmerLayoutPCLSample.ViewModels
{
public class ShimmerTestPageViewModel : NotifyingObject
{
private bool _isBusy;
public bool IsBusy
{
get => _isBusy;
set => Set(ref _isBusy, value);
}

private Command _startAnimationCommand;
public Command StartAnimationCommand
{
get => _startAnimationCommand;
set => Set(ref _startAnimationCommand, value);
}

public ShimmerTestPageViewModel()
{
StartAnimationCommand = new Command(async () =>
{
IsBusy = true;

await Task.Delay(5000);

IsBusy = false;
});
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,222 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
x:Class="XFShimmerLayoutPCLSample.Views.ShimmerTestPage"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:controls="clr-namespace:XFShimmerLayoutPCLSample.Controls;assembly=XFShimmerLayoutPCLSample"
xmlns:viewModels="clr-namespace:XFShimmerLayoutPCLSample.ViewModels;assembly=XFShimmerLayoutPCLSample">
<ContentPage.BindingContext>
<!-- For Test Reasons binding context is set through this way. Better use a DI Container -->
<viewModels:ShimmerTestPageViewModel />
</ContentPage.BindingContext>
<StackLayout
Padding="16"
HorizontalOptions="Center"
Spacing="16"
VerticalOptions="Center">
<controls:ShimmerLayout Angle="-45" GradientSize=".2" IsLoading="{Binding IsBusy}">
<StackLayout Spacing="16">
<Grid ColumnSpacing="8" RowSpacing="4">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>

<BoxView
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="0"
BackgroundColor="Brown"
CornerRadius="20"
HeightRequest="40"
VerticalOptions="Center"
WidthRequest="40" />

<BoxView
Grid.Row="0"
Grid.Column="1"
BackgroundColor="Brown"
HeightRequest="20"
HorizontalOptions="Start"
WidthRequest="150" />

<BoxView
Grid.Row="1"
Grid.Column="1"
BackgroundColor="Brown"
HeightRequest="14"
HorizontalOptions="Start"
VerticalOptions="Center"
WidthRequest="50" />

<BoxView
Grid.Row="1"
Grid.Column="2"
BackgroundColor="Brown"
HeightRequest="18"
HorizontalOptions="End"
VerticalOptions="Center"
WidthRequest="100" />
</Grid>

<Grid ColumnSpacing="8" RowSpacing="4">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>

<BoxView
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="0"
BackgroundColor="Brown"
CornerRadius="20"
HeightRequest="40"
VerticalOptions="Center"
WidthRequest="40" />

<BoxView
Grid.Row="0"
Grid.Column="1"
BackgroundColor="Brown"
HeightRequest="20"
HorizontalOptions="Start"
WidthRequest="150" />

<BoxView
Grid.Row="1"
Grid.Column="1"
BackgroundColor="Brown"
HeightRequest="14"
HorizontalOptions="Start"
VerticalOptions="Center"
WidthRequest="50" />

<BoxView
Grid.Row="1"
Grid.Column="2"
BackgroundColor="Brown"
HeightRequest="18"
HorizontalOptions="End"
VerticalOptions="Center"
WidthRequest="100" />
</Grid>

<Grid ColumnSpacing="8" RowSpacing="4">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>

<BoxView
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="0"
BackgroundColor="Brown"
CornerRadius="20"
HeightRequest="40"
VerticalOptions="Center"
WidthRequest="40" />

<BoxView
Grid.Row="0"
Grid.Column="1"
BackgroundColor="Brown"
HeightRequest="20"
HorizontalOptions="Start"
WidthRequest="150" />

<BoxView
Grid.Row="1"
Grid.Column="1"
BackgroundColor="Brown"
HeightRequest="14"
HorizontalOptions="Start"
VerticalOptions="Center"
WidthRequest="50" />

<BoxView
Grid.Row="1"
Grid.Column="2"
BackgroundColor="Brown"
HeightRequest="18"
HorizontalOptions="End"
VerticalOptions="Center"
WidthRequest="100" />
</Grid>

<Grid ColumnSpacing="8" RowSpacing="4">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>

<BoxView
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="0"
BackgroundColor="Brown"
CornerRadius="20"
HeightRequest="40"
VerticalOptions="Center"
WidthRequest="40" />

<BoxView
Grid.Row="0"
Grid.Column="1"
BackgroundColor="Brown"
HeightRequest="20"
HorizontalOptions="Start"
WidthRequest="150" />

<BoxView
Grid.Row="1"
Grid.Column="1"
BackgroundColor="Brown"
HeightRequest="14"
HorizontalOptions="Start"
VerticalOptions="Center"
WidthRequest="50" />

<BoxView
Grid.Row="1"
Grid.Column="2"
BackgroundColor="Brown"
HeightRequest="18"
HorizontalOptions="End"
VerticalOptions="Center"
WidthRequest="100" />
</Grid>
</StackLayout>
</controls:ShimmerLayout>

<Button
Padding="8"
BackgroundColor="DarkCyan"
Command="{Binding StartAnimationCommand}"
CornerRadius="10"
HorizontalOptions="FillAndExpand"
Text="Start Animation"
TextColor="White" />
</StackLayout>
</ContentPage>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using Xamarin.Forms.Xaml;

namespace XFShimmerLayoutPCLSample.Views
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ShimmerTestPage
{
public ShimmerTestPage()
{
InitializeComponent();
}
}
}
Loading