Dimezis / BlurView

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

BlurView doesn't provide dynamic blur for BottomSheetDialog #217

Closed krupalivaghasiya24 closed 2 months ago

krupalivaghasiya24 commented 2 months ago

Please include: 1) Library version : 2.0.3 2) Device and OS version : 34 3) Detailed steps to reproduce the issue : open bottom sheet dialog onclick of any view & you can see only transparent effect can't see blur effect 4) XML layout and code for BlurView setup

dialog_notification_filter.xml

<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingHorizontal="@dimen/sixteen_sdp" android:paddingBottom="@dimen/_80sdp">

<eightbitlab.com.blurview.BlurView
    android:id="@+id/blurView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:blurOverlayColor="#4D111111"
    android:background="@drawable/bg_n_filter"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/rvBottom"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            tools:listitem="@layout/layout_notification_filter" />

    </LinearLayout>

</eightbitlab.com.blurview.BlurView>

</androidx.constraintlayout.widget.ConstraintLayout>

Kotlin code :

lateinit var dialogNotificationFilterBinding: DialogNotificationFilterBinding
lateinit var bottomSheetDialog: BottomSheetDialog

private fun createNotificationFilterDialog() {

    bottomSheetDialog = BottomSheetDialog(requireContext(), R.style.BottomSheetDialogTransStyle)
    dialogNotificationFilterBinding =
        DialogNotificationFilterBinding.inflate(LayoutInflater.from(activity))
    bottomSheetDialog.setContentView(dialogNotificationFilterBinding.root)
    bottomSheetDialog.window!!.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))

    bottomSheetDialog.setCanceledOnTouchOutside(true)
    bottomSheetDialog.setCancelable(true)

    addDataInFilterList()

    val mBottomAdapter =
        NotificationFilterAdapter(
            viewModel.filterList,
            requireContext(),
            fType
        )
        { position, view ->
            if (fType == 1) {
                binding.tvFilTime.text = viewModel.filterList[position]?.text ?: ""
            }

            if (fType == 2) {
                binding.tvFilType.text = viewModel.filterList[position]?.text ?: ""
            }

            if (fType == 3) {
                binding.tvFilStatus.text = viewModel.filterList[position]?.text ?: ""
            }
            bottomSheetDialog.dismiss()
        }
    dialogNotificationFilterBinding.rvBottom.apply {
        this.adapter = mBottomAdapter
        this.layoutManager = LinearLayoutManager(requireContext())
        val itemDecoration = DividerItemDecoration(this.context, DividerItemDecoration.VERTICAL)
        itemDecoration.setDrawable(
            ContextCompat.getDrawable(
                requireContext(),
                R.drawable.bg_divider
            )!!
        )
        addItemDecoration(itemDecoration)
    }

    try {
        bottomSheetDialog.show()
    } catch (ignored: Exception) {
    }

    val radius = 12f
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
        dialogNotificationFilterBinding.blurView.setupWith(
            dialogNotificationFilterBinding.main,
            RenderEffectBlur()
        ).setBlurRadius(radius)
            .setBlurAutoUpdate(true)
    }
}

style

<style name="bottomSheetTransperentBackground" parent="Widget.Design.BottomSheet.Modal">
    <item name="android:background">@color/transparent</item>
</style>

Let me know if you need more details

Dimezis commented 2 months ago

Duplicate of https://github.com/Dimezis/BlurView/issues/216