Releases: roubachof/Sharpnado.MaterialFrame
v3.0.2 - Windows Platform Inclusion
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
🎯 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
OnDetachedFromWindowno 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
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
First release for the MAUI version !
This release has not been tested on macOS.
UWP and Mac OS transparent blur windows
Add support for blur on uwp and macos windows by @mhrastegary77
Mac OS support by @nor0x
Fixes issue with background color and XF 5.0
Fixes #16 MaterialFrame with Xamarin.Forms 5.0
Repeated logged exception on android and white flash on iOS
Fix UWP builds
- UWP version is now built with any cpu and works with x86 and x64 platforms
Fix crash on devices older than Marshmallow
Bug Fix
- #6 Java.Lang.IncompatibleClassChangeError: no non-static method "Landroid/graphics/drawable/LayerDrawable;.setLayerInsetTop(II)V
