Skip to main content

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.

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.

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 ProgressiveBlurViewGroup component
  • Minor refactoring in BlurViewGroup to avoid unnecessary redrawing

v1.1.5 — 2026-05-20

New XML Attributes:
  • topRightCornerRadius
  • bottomLeftCornerRadius
  • bottomRightCornerRadius
New Methods:
  • 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 IndexOutOfBoundsException in blur rendering

v1.1.3 — 2026-01-19

  • Changed Java compiler target from Java 17 to Java 11
  • Updated codebase to Java 11 syntax

v1.1.2 — 2026-01-07

  • Updated androidx.core:core dependency to version 1.12.0 for improved compatibility

v1.1.1 — 2026-01-02

  • Fixed an exception thrown by BlurViewGroup on certain devices

v1.1.0 — 2025-12-28

  • Renamed module QmBlurViewcore
  • Renamed module Navigationnavigation
  • Renamed module Transformtransform
  • Updated CMake version to 3.22.1

v1.0.6 — 2025-12-24

  • General bug fixes

v1.0.5 — 2025-12-13

Core & Threading
  • Fix: Modified BlurNative.java to use a static, shared ExecutorService
  • Skip thread overhead for single-core devices in the Java layer
  • Performance: Moved PixelCopy operations to a dedicated handler thread
API Additions
  • Added setDownsampleFactor(float) method and corresponding app:downsampleFactor XML attribute
Blur View Rendering
  • 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
SurfaceView Support
  • BaseBlurView now automatically detects SurfaceView and calls setZOrderMediaOverlay(true) to ensure proper Z-ordering for blurring
  • Added informative logs when a SurfaceView is configured, with warnings for potential issues (e.g., API level < 24)
  • Added check for SurfaceView surface validity before attempting PixelCopy to prevent crashes
  • Enhanced error handling for PixelCopy failures, including retries for transient errors like ERROR_SOURCE_NO_DATA
  • Added detailed logging for PixelCopy success and failure states to aid debugging
Glide Integration
  • Added com.qmdeve.blurview.transform.glide.BlurTransformation implementing BitmapTransformation
  • Supports BitmapPool for efficient memory management and correct disk cache keys
  • Supports configurable blur radius and rounded corner radius
Picasso Integration
  • Added com.qmdeve.blurview.transform.picasso.BlurTransformation implementing Picasso’s Transformation interface
  • Properly handles Bitmap recycling
  • Supports configurable blur radius and rounded corner radius
Error Handling & Robustness
  • Added empty check to Glide’s BitmapPool.get() call for enhanced robustness
  • Improved error handling and debugging logic throughout
Layout & Measurement
  • 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 LayoutParams type check when measuring subviews; automatically converts and sets back if the type is incorrect
  • Ensured all subviews use the correct LayoutParams type
  • Re-measures only when available space differs from the current measurement size (avoiding unnecessary work)
  • More accurate handling of FILL_HORIZONTAL and FILL_VERTICAL gravity 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 SurfaceView blur rendering using the PixelCopy API
  • Extended BaseBlurView to handle SurfaceView snapshots and integrate them into the blur pipeline

v1.0.4.5 — 2025-11-18

  • Optimized rendering performance
  • Optimized code logic throughout the library
  • Added BlurViewGroup component
  • Added BottomNavigationView component
  • Added BaseBlurView base class
  • Added BaseBlurViewGroup base class
  • Removed BlurUtils class
  • 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 the BlurSwitchButtonView component:
  • Added app:useSolidColorMode XML attribute to enable solid color mode
  • Added app:solidOnColor XML attribute
  • Added app:solidOffColor XML 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 BlurButtonView component

v1.0.4.1 — 2025-10-25

  • Added BlurFloatingButtonView component

v1.0.4 — 2025-10-25

  • Added BlurSwitchButtonView component

v1.0.3.2 — 2025-10-24

  • Fixed a bug in the BlurTitleBarView component

v1.0.3.1 — 2025-10-24

  • Added BlurFrameLayout component

v1.0.3 — 2025-10-23

  • Added ProgressiveBlurView component
  • Added BlurTitlebarView component
  • Renamed component QmBlurViewBlurView
  • Renamed component QmBlurButtonViewBlurButtonView
  • Renamed XML attribute qmBlurRadiusblurRadius on BlurView
  • Renamed XML attribute qmOverlayColoroverlayColor on BlurView
  • Renamed XML attribute qmCornerRadiuscornerRadius on BlurView

v1.0.2 — 2025-10-22

  • Added QmBlurButtonView component

v1.0.1 — 2025-10-22

  • Changed minSdk from 24 to 21
  • Changed Java target from Java 11 to Java 8
  • Added setCornerRadius method
  • Added BlurUtils class

v1.0.0 — 2025-10-21

  • Initial release of the QmBlurView Components library

Build docs developers (and LLMs) love