This changelog tracks every release of the QmBlurView Android UI component library, from the initial v1.0.0 launch through the current stable release at v1.2.0. Entries are ordered newest first. A major v2.0.0 milestone is also planned and its scope is outlined below.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/QmDeve/QmBlurView-Docs/llms.txt
Use this file to discover all available pages before exploring further.
Upcoming
v2.0.0 — Planned
v2.0.0 is currently in planning. The following improvements are on the roadmap:
- Improved performance and stability
- Full rewrite in Kotlin
- New blur components and features
- Additional enhancements (details to be announced)
Released Versions
v1.2.0 — 2026-06-07
v1.2.0 is the current stable release. Upgrade to this version to get the latest features and fixes.
- Added
ProgressiveBlurViewGroupcomponent - Minor refactoring in
BlurViewGroupto avoid unnecessary redrawing
v1.1.5 — 2026-05-20
New XML Attributes:topRightCornerRadiusbottomLeftCornerRadiusbottomRightCornerRadius
setTopLeftCornerRadius(float radius)setTopRightCornerRadius(float radius)setBottomLeftCornerRadius(float radius)setBottomRightCornerRadius(float radius)getTopLeftCornerRadius()getTopRightCornerRadius()getBottomLeftCornerRadius()getBottomRightCornerRadius()
v1.1.4 — 2026-02-07
- Fix: prevent NPE in blur view canvas restoration
- Fix: catch
IndexOutOfBoundsExceptionin blur rendering
v1.1.3 — 2026-01-19
- Changed Java compiler target from
Java 17toJava 11 - Updated codebase to
Java 11syntax
v1.1.2 — 2026-01-07
- Updated
androidx.core:coredependency to version1.12.0for improved compatibility
v1.1.1 — 2026-01-02
- Fixed an exception thrown by
BlurViewGroupon certain devices
v1.1.0 — 2025-12-28
- Renamed module
QmBlurView→core - Renamed module
Navigation→navigation - Renamed module
Transform→transform - Updated CMake version to
3.22.1
v1.0.6 — 2025-12-24
- General bug fixes
v1.0.5 — 2025-12-13
View full v1.0.5 changelog (large release)
View full v1.0.5 changelog (large release)
Core & Threading
- Fix: Modified
BlurNative.javato use a static, sharedExecutorService - Skip thread overhead for single-core devices in the Java layer
- Performance: Moved
PixelCopyoperations to a dedicated handler thread
- Added
setDownsampleFactor(float)method and correspondingapp:downsampleFactorXML attribute
- Updated blur view components to handle overlapping scenarios
- Fixed resource leakage in
BlurNative; changed to a static shared instance to avoid repeated instantiation - Replaced VLA with heap allocation in native code to prevent stack overflow
- Removed unnecessary alpha channel clamping in blur calculations
BaseBlurViewnow automatically detectsSurfaceViewand callssetZOrderMediaOverlay(true)to ensure proper Z-ordering for blurring- Added informative logs when a
SurfaceViewis configured, with warnings for potential issues (e.g., API level < 24) - Added check for
SurfaceViewsurface validity before attemptingPixelCopyto prevent crashes - Enhanced error handling for
PixelCopyfailures, including retries for transient errors likeERROR_SOURCE_NO_DATA - Added detailed logging for
PixelCopysuccess and failure states to aid debugging
- Added
com.qmdeve.blurview.transform.glide.BlurTransformationimplementingBitmapTransformation - Supports
BitmapPoolfor efficient memory management and correct disk cache keys - Supports configurable blur radius and rounded corner radius
- Added
com.qmdeve.blurview.transform.picasso.BlurTransformationimplementing Picasso’sTransformationinterface - Properly handles
Bitmaprecycling - Supports configurable blur radius and rounded corner radius
- Added empty check to Glide’s
BitmapPool.get()call for enhanced robustness - Improved error handling and debugging logic throughout
- Fully rewrote measurement logic to correctly handle margins and size measurements for subviews
- Added support for
android:layout_gravity, allowing subviews to be precisely positioned within a parent container - Fixed sub-view layout positioning limitations from the previous version
- Added
LayoutParamstype check when measuring subviews; automatically converts and sets back if the type is incorrect - Ensured all subviews use the correct
LayoutParamstype - Re-measures only when available space differs from the current measurement size (avoiding unnecessary work)
- More accurate handling of
FILL_HORIZONTALandFILL_VERTICALgravity values - Corrected sub-view position calculation logic
- Safer boundary inspection to ensure subviews do not exceed the bounds of the parent container
v1.0.4.7 — 2025-11-24
- Added synchronized blur processing
- Reduced visual latency caused by asynchronous processing
- Enhanced automatic processing of hardware bitmaps
v1.0.4.6 — 2025-11-23
- Ensured hardware bitmaps are converted to software bitmaps before blur processing
- Added methods to check and disable hardware bitmaps in the view hierarchy
- Updated blur logic and error handling for hardware bitmap scenarios
- Introduced logging for debugging bitmap processing issues
- Implemented
SurfaceViewblur rendering using thePixelCopyAPI - Extended
BaseBlurViewto handleSurfaceViewsnapshots and integrate them into the blur pipeline
v1.0.4.5 — 2025-11-18
- Optimized rendering performance
- Optimized code logic throughout the library
- Added
BlurViewGroupcomponent - Added
BottomNavigationViewcomponent - Added
BaseBlurViewbase class - Added
BaseBlurViewGroupbase class - Removed
BlurUtilsclass - Fix: Ensured hardware bitmaps are converted to software bitmaps for blur processing
- Added methods to check and disable hardware bitmaps in the view hierarchy
- Updated blur logic and error handling for hardware bitmap scenarios
- Introduced logging for debugging bitmap processing issues
- Added hardware bitmap compatibility handling in
BaseBlurView
v1.0.4.4 — 2025-11-07
Changes to theBlurSwitchButtonView component:
- Added
app:useSolidColorModeXML attribute to enable solid color mode - Added
app:solidOnColorXML attribute - Added
app:solidOffColorXML attribute - Added
BlurSwitchButtonView.setUseSolidColorMode()method - Added
BlurSwitchButtonView.isUseSolidColorMode()method - Added
BlurSwitchButtonView.setSolidColors()method - Added
BlurSwitchButtonView.getSolidOnColor()method - Added
BlurSwitchButtonView.getSolidOffColor()method
v1.0.4.3 — 2025-10-31
- General bug fixes
v1.0.4.2 — 2025-10-26
- Optimized click animation of the
BlurButtonViewcomponent
v1.0.4.1 — 2025-10-25
- Added
BlurFloatingButtonViewcomponent
v1.0.4 — 2025-10-25
- Added
BlurSwitchButtonViewcomponent
v1.0.3.2 — 2025-10-24
- Fixed a bug in the
BlurTitleBarViewcomponent
v1.0.3.1 — 2025-10-24
- Added
BlurFrameLayoutcomponent
v1.0.3 — 2025-10-23
- Added
ProgressiveBlurViewcomponent - Added
BlurTitlebarViewcomponent - Renamed component
QmBlurView→BlurView - Renamed component
QmBlurButtonView→BlurButtonView - Renamed XML attribute
qmBlurRadius→blurRadiusonBlurView - Renamed XML attribute
qmOverlayColor→overlayColoronBlurView - Renamed XML attribute
qmCornerRadius→cornerRadiusonBlurView
v1.0.2 — 2025-10-22
- Added
QmBlurButtonViewcomponent
v1.0.1 — 2025-10-22
- Changed
minSdkfrom24to21 - Changed Java target from
Java 11toJava 8 - Added
setCornerRadiusmethod - Added
BlurUtilsclass
v1.0.0 — 2025-10-21
- Initial release of the QmBlurView Components library