Dimezis / BlurView

Dynamic iOS-like blur of underlying Views for Android
Apache License 2.0
3.48k stars 331 forks source link

Blur NavigationView IndexOutOfBoundsException first time app installed #176

Closed OmarHassan25 closed 1 year ago

OmarHassan25 commented 2 years ago

Please include: 1) Library version 2.0.0

2) Device and OS version Android Emulator Pixel 5 API 30

3) Detailed steps to reproduce the issue When opening the app for the first time the app crases on the blurring layout, if I closed the app and opened it gain every thing works well,

4) XML layout and code for BlurView setup ` <com.google.android.material.navigation.NavigationView android:id="@+id/nav" android:elevation="0dp" android:background="#E6556478" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true">

    <eightbitlab.com.blurview.BlurView
        android:elevation="0dp"
        android:id="@+id/sideMenuBlurView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:outlineProvider="bounds"
        app:blurOverlayColor="#BF556478"
        tools:targetApi="lollipop"/>

            <androidx.constraintlayout.widget.ConstraintLayout
                android:elevation="0dp"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"/>

</com.google.android.material.navigation.NavigationView> val algorithm: BlurAlgorithm = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { RenderEffectBlur(binding.sideMenuBlurView, RenderEffectPrecision.EXACT) } else { RenderScriptBlur(this) } //set background, if your root layout doesn't have one

        val decorView = window.decorView
        val rootView = decorView.findViewById(android.R.id.content) as ViewGroup

        binding.sideMenuBlurView.setupWith(rootView)
            .setFrameClearDrawable(decorView.background)
            .setBlurAlgorithm(algorithm)
            .setBlurRadius(10f)
            .setBlurAutoUpdate(true)

`

5) Stacktrace in case of a crash 2022-04-26 12:35:04.477 17374-17374/myapp.test E/AndroidRuntime: FATAL EXCEPTION: main Process: myapp.test, PID: 17374 java.lang.IndexOutOfBoundsException: Index: 1, Size: 0 at java.util.ArrayList.get(ArrayList.java:437) at android.view.ViewGroup.getAndVerifyPreorderedView(ViewGroup.java:3762) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4275) at android.view.View.draw(View.java:22353) at eightbitlab.com.blurview.BlockingBlurController.updateBlur(BlockingBlurController.java:113) at eightbitlab.com.blurview.BlockingBlurController.draw(BlockingBlurController.java:152) at eightbitlab.com.blurview.BlurView.draw(BlurView.java:51) at android.view.View.draw(View.java:22223) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at android.view.View.draw(View.java:22221) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994) at android.view.View.draw(View.java:22221) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994) at android.view.View.draw(View.java:22221) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at android.view.View.draw(View.java:22353) at androidx.core.widget.NestedScrollView.draw(NestedScrollView.java:2073) at android.view.View.draw(View.java:22223) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994) at android.view.View.draw(View.java:22353) at android.view.View.buildDrawingCacheImpl(View.java:21623) at android.view.View.buildDrawingCache(View.java:21483) at android.view.View.draw(View.java:22073) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at android.view.View.draw(View.java:22353) at eightbitlab.com.blurview.BlockingBlurController.updateBlur(BlockingBlurController.java:113) at eightbitlab.com.blurview.BlockingBlurController.draw(BlockingBlurController.java:152) at eightbitlab.com.blurview.BlurView.draw(BlurView.java:51) at android.view.View.draw(View.java:22223) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at android.view.View.draw(View.java:22221) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994) at android.view.View.draw(View.java:22221) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994) at android.view.View.draw(View.java:22221) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at android.view.View.draw(View.java:22353) at androidx.core.widget.NestedScrollView.draw(NestedScrollView.java:2073) at android.view.View.draw(View.java:22223) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994) at android.view.View.draw(View.java:22353) at android.view.View.buildDrawingCacheImpl(View.java:21623) at android.view.View.buildDrawingCache(View.java:21483) at android.view.View.draw(View.java:22073) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) 2022-04-26 12:35:04.478 17374-17374/myapp.test E/AndroidRuntime: at android.view.View.draw(View.java:22353) at eightbitlab.com.blurview.BlockingBlurController.updateBlur(BlockingBlurController.java:113) at eightbitlab.com.blurview.BlockingBlurController.draw(BlockingBlurController.java:152) at eightbitlab.com.blurview.BlurView.draw(BlurView.java:51) at android.view.View.updateDisplayListIfDirty(View.java:21226) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at android.view.View.updateDisplayListIfDirty(View.java:21217) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994) at android.view.View.updateDisplayListIfDirty(View.java:21217) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994) at android.view.View.updateDisplayListIfDirty(View.java:21217) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at android.view.View.draw(View.java:22353) at androidx.core.widget.NestedScrollView.draw(NestedScrollView.java:2073) at android.view.View.updateDisplayListIfDirty(View.java:21226) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994) at android.view.View.draw(View.java:22353) at android.view.View.updateDisplayListIfDirty(View.java:21226) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at android.view.View.draw(View.java:22353) at android.view.View.updateDisplayListIfDirty(View.java:21226) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at androidx.fragment.app.FragmentContainerView.drawChild(FragmentContainerView.kt:235) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at androidx.fragment.app.FragmentContainerView.dispatchDraw(FragmentContainerView.kt:225) at android.view.View.updateDisplayListIfDirty(View.java:21217) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at androidx.fragment.app.FragmentContainerView.drawChild(FragmentContainerView.kt:235) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at androidx.fragment.app.FragmentContainerView.dispatchDraw(FragmentContainerView.kt:225) at android.view.View.updateDisplayListIfDirty(View.java:21217) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994) at android.view.View.updateDisplayListIfDirty(View.java:21217) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at android.view.View.updateDisplayListIfDirty(View.java:21217) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994) at android.view.View.updateDisplayListIfDirty(View.java:21217) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) 2022-04-26 12:35:04.479 17374-17374/myapp.test E/AndroidRuntime: at androidx.drawerlayout.widget.DrawerLayout.drawChild(DrawerLayout.java:1478) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at android.view.View.updateDisplayListIfDirty(View.java:21217) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at android.view.View.updateDisplayListIfDirty(View.java:21217) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at android.view.View.updateDisplayListIfDirty(View.java:21217) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at android.view.View.updateDisplayListIfDirty(View.java:21217) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at android.view.View.updateDisplayListIfDirty(View.java:21217) at android.view.View.draw(View.java:22081) at android.view.ViewGroup.drawChild(ViewGroup.java:4516) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277) at android.view.View.draw(View.java:22353) at com.android.internal.policy.DecorView.draw(DecorView.java:806) at android.view.View.updateDisplayListIfDirty(View.java:21226) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:559) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:565) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:642) at android.view.ViewRootImpl.draw(ViewRootImpl.java:4101) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3828) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3099) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1952) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8171) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972) at android.view.Choreographer.doCallbacks(Choreographer.java:796) at android.view.Choreographer.doFrame(Choreographer.java:731) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7656) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

Dimezis commented 2 years ago

Could you please send a repository with a setup to reproduce this?

Dimezis commented 1 year ago

Closing due to inactivity and lack of steps to reproduce the issue