From 4289214811f8268c470e9f04faf8d2ae69a0e283 Mon Sep 17 00:00:00 2001 From: Felipe Baltazar Date: Sun, 26 Apr 2020 12:48:40 -0300 Subject: [PATCH 1/4] Fix animation Included Click Event; Fixed animation --- Xamarin.Forms.NeoControls/NeoButton.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Xamarin.Forms.NeoControls/NeoButton.cs b/Xamarin.Forms.NeoControls/NeoButton.cs index 11b478e..cffe6ec 100644 --- a/Xamarin.Forms.NeoControls/NeoButton.cs +++ b/Xamarin.Forms.NeoControls/NeoButton.cs @@ -74,6 +74,8 @@ public bool IsChecked set => SetValue(IsCheckedProperty, value); } + public event EventHandler Clicked; + public NeoButton() { var tapGesture = new TapGestureRecognizer(); @@ -89,13 +91,15 @@ public virtual Task AnimateClick(double toValue, uint length = 250, Easing protected virtual async Task PerformButtonTappedAsync() { - if (isPerformingTap) + if (isPerformingTap || !IsEnabled) return; isPerformingTap = true; try { + Clicked?.Invoke(this, EventArgs.Empty); + if (Command?.CanExecute(CommandParameter) ?? false) Command.Execute(CommandParameter); @@ -199,10 +203,7 @@ private static void OnIsCheckedChanged(BindableObject bindable, object oldValue, PerformIsCheckedAnimationAsync(neoButton).SafeFireAndForget(); } - private static async Task PerformIsCheckedAnimationAsync(NeoButton neoButton) - { + private static async Task PerformIsCheckedAnimationAsync(NeoButton neoButton) => await neoButton.AnimateClick(neoButton.ShadowDistance * -1); - await neoButton.AnimateClick(neoButton.ShadowDistance); - } } } From 8bdf782e1d66dd2a33ed92bb8b5dcd1e15305a33 Mon Sep 17 00:00:00 2001 From: Felipe Baltazar Date: Sun, 26 Apr 2020 12:48:46 -0300 Subject: [PATCH 2/4] Create PrCheck.yml --- .github/workflows/PrCheck.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/workflows/PrCheck.yml diff --git a/.github/workflows/PrCheck.yml b/.github/workflows/PrCheck.yml new file mode 100644 index 0000000..347379f --- /dev/null +++ b/.github/workflows/PrCheck.yml @@ -0,0 +1,17 @@ +name: Build Xamarin.Forms.NeoControls + +on: [pull_request] + +jobs: + build: + + runs-on: windows-latest + + steps: + - uses: actions/checkout@v1 + - name: Setup .NET Core + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 3.1.200 + - name: Build with dotnet core + run: dotnet build --configuration Release \ No newline at end of file From 97566185788cf43b93a597aa21471f16a0cf6375 Mon Sep 17 00:00:00 2001 From: Felipe Baltazar Date: Sun, 26 Apr 2020 12:48:52 -0300 Subject: [PATCH 3/4] Create Icon.png --- Images/Icon.png | Bin 0 -> 4419 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Images/Icon.png diff --git a/Images/Icon.png b/Images/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..86497e9b60665eed2a9eaff09f500c4b12d580e9 GIT binary patch literal 4419 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 BAcg<{ literal 0 HcmV?d00001 From 1ae2d1b1f01a690bcf54beb0c7e0dc5b9b6e16dc Mon Sep 17 00:00:00 2001 From: Felipe Baltazar Date: Sun, 26 Apr 2020 12:49:17 -0300 Subject: [PATCH 4/4] =?UTF-8?q?Update=20docs=20=F0=9F=93=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 +++++++++++- Xamarin.Forms.NeoControls/NeoProgressView.cs | 14 +++++++++++++- .../Xamarin.Forms.NeoControls.csproj | 9 ++++++++- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0a90b6a..762e59a 100644 --- a/README.md +++ b/README.md @@ -43,4 +43,14 @@ xmlns:neo="clr-namespace:Xamarin.Forms.NeoControls;assembly=Xamarin.Forms.NeoCon ``` - +## Property reference + +| Property | What it does | Extra info | +| ------------------ | --------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `CornerRadius` | A `CornerRadius` object representing each individual corner's radius. | Uses the `CornerRadius` struct allowing you to specify individual corners. | +| `Elevation` | Set this value to chenge element depth effect. | | +| `InnerView` | View that will be shown inside the neo control. | | +| `ShadowBlur` | Set this value to change shadow blur effect. | | +| `ShadowDistance` | Set this value to change shadow distance relative from control. | | +| `DarkShadowColor` | The Dark color that will be applied on draw the dark shadow. | This will be applied with `Elevation` property, as Alpha parameter. | +| `LightShadowColor` | The White color that will be applied on draw the light shadow. | | \ No newline at end of file diff --git a/Xamarin.Forms.NeoControls/NeoProgressView.cs b/Xamarin.Forms.NeoControls/NeoProgressView.cs index 4d81a86..cbd90f3 100644 --- a/Xamarin.Forms.NeoControls/NeoProgressView.cs +++ b/Xamarin.Forms.NeoControls/NeoProgressView.cs @@ -20,6 +20,7 @@ public class NeoProgressView : NeoView returnType: typeof(double), declaringType: typeof(NeoProgressView), defaultValue: .4, + propertyChanging: OnProgressChanging, propertyChanged: OnVisualPropertyChanged); public static readonly BindableProperty ThicknessProperty = BindableProperty.Create( @@ -49,6 +50,8 @@ public Color BarColor public virtual Task AnimateProgress(float toValue, uint length = 250, Easing easing = null) { + EnsureProgressRange(toValue); + float transform(double t) => (float)(t * (toValue)); return ProgressAnimation(nameof(AnimateProgress), transform, length, easing); } @@ -134,7 +137,7 @@ protected virtual SKPath CreateBarPath(SKPaint paint, SKCanvas canvas, float pad protected virtual Task ProgressAnimation(string name, Func transform, uint length, Easing easing) { var taskCompletionSource = new TaskCompletionSource(); - this.Animate( + (this).Animate( name, transform, (progress) => Progress = progress, @@ -145,5 +148,14 @@ protected virtual Task ProgressAnimation(string name, Func return taskCompletionSource.Task; } + + private static void EnsureProgressRange(float progress) + { + if (progress > 1f || progress < 0) + throw new ArgumentOutOfRangeException($"{nameof(progress)} should be between 0 and 1"); + } + + private static void OnProgressChanging(BindableObject bindable, object oldValue, object newValue) => + EnsureProgressRange((float)newValue); } } diff --git a/Xamarin.Forms.NeoControls/Xamarin.Forms.NeoControls.csproj b/Xamarin.Forms.NeoControls/Xamarin.Forms.NeoControls.csproj index 9222aee..da2a16d 100644 --- a/Xamarin.Forms.NeoControls/Xamarin.Forms.NeoControls.csproj +++ b/Xamarin.Forms.NeoControls/Xamarin.Forms.NeoControls.csproj @@ -8,7 +8,10 @@ https://github.com/felipebaltazar/Xamarin.Forms.NeoControls neomorphism, xamarin, xamarin.forms, skia, neomorphic Neomorphic controls for Xamarin.Forms - 1.0.0-pre + 1.0.1-pre + 1.0.1.0 + 1.0.1.0 + Icon.png @@ -23,6 +26,10 @@ + + True + + True