BottomSheet、BottomShaeetDialog使用流程


BottomSheet

Demo 代码 https://medium.com/@droidbyme/android-bottom-sheet-7e9cfcec6427
使用 BottomSheet、BottomSheetDialog、BottomSheetDialogFragment

BottomSheet使用流程

BottomSheet实现按钮在点击之后滑动布局.不联动也是可以的只要不设置它就可以了。

被联动的布局使用

app:layout_behavior="@string/bottom_sheet_behavior"

联动按钮使用属性

app:layout_behavior="@string/appbar_scrolling_view_behavior">

在初始化时被联动

          //  设置绑定动作
        //  控件和它绑定
        var buttomSheetBehavior = BottomSheetBehavior.from(bottom_sheet_layout)

设置按钮了

也就是在现在监听按钮的时候才进行这个按钮的联动滑动

     btnBottomSheet.setOnClickListener {
            if (buttomSheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED)
                buttomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED
            else
                buttomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED
        }

设置在显示时不显示,不显示时显示。

设置监听器在它被拖动、滑动、切换时产生提示。

        buttomSheetBehavior.setBottomSheetCallback(object : BottomSheetCallback() {
            //这里是拖拽中的回调,根据slideOffset可以做一些动画
            override fun onSlide(bottomSheet: View, slideOffset: Float) {


            }

            //这里是bottomSheet状态的改变
            override fun onStateChanged(bottomSheet: View, newState: Int) {

                when (newState) {
                    BottomSheetBehavior.STATE_EXPANDED -> {
                        Toast.makeText(this@MainActivity, "展开", Toast.LENGTH_LONG).show()
                    }
                    BottomSheetBehavior.STATE_COLLAPSED -> {
                        Toast.makeText(this@MainActivity, "关闭", Toast.LENGTH_LONG).show()
                    }
                    BottomSheetBehavior.STATE_DRAGGING -> {
                        Toast.makeText(this@MainActivity, "拖拽状态", Toast.LENGTH_LONG).show()
                    }
                    BottomSheetBehavior.STATE_HIDDEN -> {
                        Toast.makeText(this@MainActivity, "隐藏状态", Toast.LENGTH_LONG).show()
                    }
                    BottomSheetBehavior.STATE_SETTLING -> {
                        Toast.makeText(
                            this@MainActivity,
                            " 拖拽松开之后到达终点位置(collapsed or expanded)前的状态",
                            Toast.LENGTH_LONG
                        ).show()
                    }
                }
            }

        })

BottomSheetDialog使用流程

点击按钮之后弹出Dialog提示(布局界面有且准备好的)

设置按钮的监听器,点击之后直接弹出Dialog窗口。

  /*
        * Java函数式接口
        * 弹窗提示
        * */
        btnBottomSheetDialog.setOnClickListener {
            //使用布局加载器layoutInflater
            val view = layoutInflater.inflate(R.layout.fragment_bottom_sheet, null)
            //实例话BottomSheetDialog():用来实现弹出提示功能
            val dialog = BottomSheetDialog(this)
            dialog.setContentView(view)
            dialog.show()
        }

BottomSheetDialogFragment在当前界面加载Dialog碎片


        /*
        * 在当前界面加载碎片
        * */
        btnBottomSheetDialogFragment.setOnClickListener {
            val bottomSHeetFragment = BottomSheetFragment()
            bottomSHeetFragment.show(supportFragmentManager, bottomSHeetFragment.tag)
        }

准备好要加载的碎片,它是要有bottom_sheet_dialog类型的界面


文章作者: TheCara
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 TheCara !
  目录