Skip to content

KitsunedFox/RealtimeBlurView_v2

 
 

Repository files navigation



IMG

RealtimeBlurView_v2 is a unofficial, modified fork of RealtimeBlurView, an realtime blurring overlay lib for Android (like iOS UIVisualEffectView).


Just put the view in the layout xml, no Java code is required.

// Views to be blurred
<ImageView ../>

<com.github.mmin18.widget.RealtimeBlurView
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	app:realtimeBlurRadius="20dp"
	app:realtimeOverlayColor="#8000" />

// Views above blurring overlay
<Button ../>

Try the sample apk: blurring.apk


Adding to project

Add dependencies in your build.gradle:

	dependencies {
	    implementation 'com.github.HardcodedCat:RealtimeBlurView_v2:1.3.2'
	}

Support API level < 19

The following step is only required if your minSdkVersion < 19, or you use renderscript support mode.

Both AndroidX and Android Support Library is supported.

	android {
		buildToolsVersion '30.0.3'                 // Use 23.0.3 or higher
		defaultConfig {
			minSdkVersion 15
			renderscriptTargetApi 19
			renderscriptSupportModeEnabled true    // Enable RS support
		}
	}

Add proguard rules if necessary:

-keep class android.support.v8.renderscript.** { *; }
-keep class androidx.renderscript.** { *; }

Limitations

  • Adding multiple RealtimeBlurView (even not visible) may hurt drawing performance, like use it in ListView or RecyclerView.

  • It will not work with SurfaceView / TextureView like VideoView, GoogleMapView


Performance

RealtimeBlurView use RenderScript to blur the bitmap, just like 500px-android-blur.

Everytime your window draw, it will render a blurred bitmap, so there is a performance cost. Set downsampleFactor>=4 will significantly reduce the render cost. However, if you just want to blur a static view, 500px-android-blur is good enough.

I've run the sample on some old phones like Samsung Galaxy S2, Samsung Galaxy S3, it runs at full FPS. Here is a performance chart while scrolling the list on Nexus 5.

Nexus5


License

Copyright 2016 Tu Yimin (http://github.com/mmin18)

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


Changelog

1.3.2 (2022-11-28)

Optimizations and other features

1.3.0 (2020-04-27)

Support for circle shape blur

1.2.1 (2019-05-24)

Improve BlurImpl detection.

1.2 (2019-05-22)

Support both AndroidX and Android Support Library.

1.1.2 (2018-05-28)

Bug fix (Draw overlay color in rect).

1.1.1 (2018-05-22)

Fix downsample factor issue when blur radius is very big.

1.1.0 (2017-01-02)

Some improvements (OOM, resize, window background)

1.0.8 (2016-11-29)

Fix view not refreshed issue on PopupWindow

1.0.6 (2016-11-7)

Fix crash when view is very small (draw at least 1px)

1.0.5 (2016-11-5)

Support Popup Window (Use it as dialog background) Ignore UnsatisfiedLinkError if APK is not debuggable.

1.0.4 (2016-9-28)

Support custom shape (by override drawBlurredBitmap()), support view in ContextThemeWrapper.