美文网首页
Android 开发一个在页面上可以随意拖到的悬浮按钮

Android 开发一个在页面上可以随意拖到的悬浮按钮

作者: 背锅TV丶伴奏大师 | 来源:发表于2023-07-11 15:54 被阅读0次

无需用到悬浮窗权限

1.布局:只需要在xml里面按照普通的写法,摆放位置一般写在未拖动前的默认位置。
2.方法

private fun initFloatView(){
        val temp = intArrayOf(0, 0)
        var isDrag = false
        var clickTime:Long = 0
        floatView.setOnTouchListener { view, event ->
            val eventAction: Int = event.action
            val x = event.rawX.toInt() // 记录下动作相对于原点的x坐标
            val y = event.rawY.toInt() // 记录下动作相对于原点的y坐标
            when (eventAction) {
                MotionEvent.ACTION_DOWN -> {
                    isDrag = false
                    temp[0] = event.x.toInt()
                    temp[1] = y - view.top
                }

                MotionEvent.ACTION_MOVE -> {
                    isDrag = true
                    view.layout(
                        x - temp[0],
                        y - temp[1],
                        x + view.width - temp[0],
                        y - temp[1] + view.height
                    )
                    view.postInvalidate()
                }

                MotionEvent.ACTION_UP -> {
                    val layoutParams = ConstraintLayout.LayoutParams(
                        ScreenUtil.dp2px(this,56f),
                        ScreenUtil.dp2px(this,65f)
                    )
                    layoutParams.startToStart = ConstraintLayout.LayoutParams.PARENT_ID;
                    layoutParams.topToTop = ConstraintLayout.LayoutParams.PARENT_ID;
                    layoutParams.leftMargin = view.left
                    layoutParams.topMargin = view.top
                    layoutParams.setMargins(view.left, view.top, 0, 0)
                    view.layoutParams = layoutParams
                }
            }
            true
        }
    }

相关文章

网友评论

      本文标题:Android 开发一个在页面上可以随意拖到的悬浮按钮

      本文链接:https://www.haomeiwen.com/subject/hmxuudtx.html