Skip to content

Releases: roubachof/Sharpnado.MaterialFrame

v3.0.2 - Windows Platform Inclusion

25 Oct 00:15

Choose a tag to compare

Release Notes v3.0.2

📦 Windows Platform Inclusion

Type: Packaging Fix

This is a re-release of v3.0.1 to include Windows platform binaries.

🐛 Issue

Version 3.0.1 was packaged on macOS, which resulted in the Windows target framework (net9.0-windows10.0.19041.0) being excluded from the NuGet package.

✅ Fix

Version 3.0.2 includes all platform binaries:

  • net9.0 - .NET 9 base
  • net9.0-android - Android
  • net9.0-ios - iOS
  • net9.0-maccatalyst - MacCatalyst
  • net9.0-windows10.0.19041.0 - Windows (now included)

📝 Code Changes

No code changes - This release is functionally identical to v3.0.1.

All features and fixes from v3.0.1 remain unchanged:

  • Android CollectionView blur support
  • Configurable blur update interval
  • Navigation back fixes
  • Predraw loop fixes

📦 Installation

dotnet add package Sharpnado.MaterialFrame.Maui --version 3.0.2

🔄 Migration from 3.0.1

Simply update the package version. No code changes required.

Windows developers who were unable to use v3.0.1 can now use v3.0.2.

📚 Documentation

For full v3.0.1 feature documentation, see RELEASE_NOTES_v3.0.1.md

Repository: https://github.com/roubachof/Sharpnado.MaterialFrame

Release Notes v3.0.1

23 Oct 02:28

Choose a tag to compare

🎯 Android: CollectionView Blur Support

fixes #32

Platform: Android only

This release fixes blur functionality in Android CollectionView/RecyclerView scenarios and adds performance tuning capabilities.

Note: iOS, MacCatalyst, and Windows are unchanged in this release.

✨ New Features

Android: CollectionView/RecyclerView Blur Support

  • Fixed: Blur now works correctly when MaterialFrame is inside CollectionView items
  • Solution: Alpha-based transparency during capture with time-based throttling
  • Use Case: Product cards, image galleries, chat bubbles with blurred backgrounds

Configurable Update Interval

#if ANDROID
// Adjust blur update frequency
AndroidMaterialFrameHandler.BlurUpdateIntervalMs = 16;  // 60fps - smoother
AndroidMaterialFrameHandler.BlurUpdateIntervalMs = 32;  // 30fps - default
AndroidMaterialFrameHandler.BlurUpdateIntervalMs = 50;  // 20fps - battery saver
#endif

🐛 Bug Fixes

  • Fixed: Blur not working in RecyclerView ViewHolders (sibling view capture issue)
  • Fixed: Navigation back losing blur root view reference
  • Fixed: Infinite predraw loops when changing view properties during capture
  • Fixed: AndroidBlurRootElement causing issues in same-container scenarios

🚀 Performance Improvements

Setting FPS Use Case
16ms ~60fps Smooth animations, gaming
32ms (default) ~30fps General use, balanced
50ms ~20fps Battery saving

📦 Installation

dotnet add package Sharpnado.MaterialFrame.Maui --version 3.0.1

💡 Usage Tips

CollectionView Best Practices

❌ Don't use AndroidBlurRootElement in CollectionView items:

<CollectionView>
    <CollectionView.ItemTemplate>
        <Grid x:Name="ItemGrid">
            <Image Source="background.png" />
            <!-- DON'T: AndroidBlurRootElement="{x:Reference ItemGrid}" -->
            <sho:MaterialFrame MaterialTheme="AcrylicBlur" />
        </Grid>
    </CollectionView.ItemTemplate>
</CollectionView>

✅ Do let blur use default root (activity decor view):

<CollectionView>
    <CollectionView.ItemTemplate>
        <Grid>
            <Image Source="background.png" />
            <!-- Just omit AndroidBlurRootElement -->
            <sho:MaterialFrame MaterialTheme="AcrylicBlur" />
        </Grid>
    </CollectionView.ItemTemplate>
</CollectionView>

🔧 Technical Details

Root View Lifecycle Fix

  • OnDetachedFromWindow no longer releases root view reference
  • Preserves root for navigation back scenarios
  • Only releases bitmaps and cancels blur operations on detach

Alpha Transparency Capture

  • Sets parent alpha to 0 during blur capture
  • Allows sibling views to be captured without MaterialFrame
  • More efficient than visibility changes (no layout recalculation)

Time-Based Throttling

  • Prevents rapid predraw callbacks from alpha/visibility changes
  • Default 32ms interval prevents infinite loops
  • User-configurable for performance tuning

📝 Migration from 3.0.0

No breaking changes - this is a bug fix and feature release.

If you're using AndroidBlurRootElement in CollectionView items, remove it for best results.

🙏 Credits

Special thanks to the community for reporting the CollectionView blur issue!

v3.0 handlers and StackBlur

05 Oct 23:23
841b917

Choose a tag to compare

Release Notes v3.0.0

🔥 Breaking Changes

Android: RenderScript → StackBlur

  • Fixed: Android 15+ crashes on devices with 16KB page size (Pixel 8, Pixel 9, etc.)
  • Changed: Replaced deprecated RenderScript with pure C# StackBlur algorithm
  • No API changes: Your existing code works as-is

✨ New Features

  • MacCatalyst Support: Full blur support on macOS
  • Modern Handlers: Migrated all platforms from Renderers to MAUI Handlers
  • Async Blur: Background processing with double buffering
  • Change Detection: Skips blur when content unchanged (0% CPU when static)

🚀 Performance

Metric Before After
Android 15+ 💥 Crashes ✅ Works
UI thread ~22ms ~3ms
Static CPU 100% 0%
Frame rate 30-45 FPS 60 FPS

📦 Installation

dotnet add package Sharpnado.MaterialFrame.Maui --version 3.0.0

🐛 Bug Fixes

  • Fixed Android 15+ compatibility issues
  • Eliminated frame drops during scrolling
  • Improved memory management and resource cleanup

📝 Full Changelog

Added:

  • MacCatalyst platform support
  • StackBlur algorithm for Android
  • Async blur processing with double buffering
  • Change detection optimization
  • Modern MAUI Handlers for all platforms

Changed:

  • Android blur: RenderScript → StackBlur
  • All platforms: Renderers → Handlers
  • UI thread blocking: ~22ms → ~3ms

Fixed:

  • Android 15+ crashes (16KB page size)
  • Pixel 8/9 device compatibility
  • Frame drops during blur scrolling
  • Memory leaks in disposal

Removed:

  • RenderScript dependency
  • Legacy Renderer implementations
  • UWP-specific properties

MaterialFrame.Maui 2.0

08 Jan 10:16
c558555

Choose a tag to compare

First release for the MAUI version !

This release has not been tested on macOS.

UWP and Mac OS transparent blur windows

18 Jan 09:37

Choose a tag to compare

Add support for blur on uwp and macos windows by @mhrastegary77

Mac OS support by @nor0x

15 Sep 14:23

Choose a tag to compare

Fixes issue with background color and XF 5.0

09 Feb 13:26

Choose a tag to compare

Fixes #16 MaterialFrame with Xamarin.Forms 5.0

Repeated logged exception on android and white flash on iOS

07 Oct 10:15

Choose a tag to compare

Fix

  • #10 When the frames display for the first time on iOS there's a white flash as the frame appears
  • #7 [Android][AcrylicBlur] Performance Degradation when ThrowStopExceptionOnDraw set to True
  • #11 Add an XMLNS Definition

Fix UWP builds

30 Jul 16:30

Choose a tag to compare

  • UWP version is now built with any cpu and works with x86 and x64 platforms

Fix crash on devices older than Marshmallow

11 Jun 11:57

Choose a tag to compare

Bug Fix

  • #6 Java.Lang.IncompatibleClassChangeError: no non-static method "Landroid/graphics/drawable/LayerDrawable;.setLayerInsetTop(II)V