调整窗口大小与移动窗口非常相似(Android)

调整窗口大小与移动窗口非常相似(Android),android,visual-studio,kotlin,touch-event,Android,Visual Studio,Kotlin,Touch Event,调整窗口大小与移动窗口非常相似,您可以使用与我们在移动窗口文章中介绍的相同的DragableTouchListener。只需更改x和y的宽度和高度。 这是真的吗?如果我将x和y替换为宽度和高度,那么它实际上会调整大小而不是移动可绘制的吗?如果没有,有没有简单的方法来增加kotlin的宽度和高度?与移动设备相同的活动 private var lastX: Int = 0 private var lastY: Int = 0 private var firstX: Int = 0 private

调整窗口大小与移动窗口非常相似,您可以使用与我们在移动窗口文章中介绍的相同的DragableTouchListener。只需更改x和y的宽度和高度。 这是真的吗?如果我将x和y替换为宽度和高度,那么它实际上会调整大小而不是移动可绘制的吗?如果没有,有没有简单的方法来增加kotlin的宽度和高度?与移动设备相同的活动

private var lastX: Int = 0 
private var lastY: Int = 0
private var firstX: Int = 0
private var firstY: Int = 0

private var lastWidth: Int = 0
private var lastHeight: Int = 0
private var firstWidth: Int = 0
private var firstHeight: Int = 0


private var isShowing = false
private var touchConsumedByMove = false

private val onTouchListener = View.OnTouchListener { view, event ->
    val totalDeltaX = lastX - firstX
    val totalDeltaY = lastY - firstY


    when (event.actionMasked) {
        MotionEvent.ACTION_DOWN -> {
            lastX = event.rawX.toInt()
            lastY = event.rawY.toInt()
            firstX = lastX
            firstY = lastY


            firstWidth = lastWidth
            firstHeight = lastHeight
        }
        MotionEvent.ACTION_UP -> {
            view.performClick()
        }
        MotionEvent.ACTION_MOVE -> {

            val deltaX = event.rawX.toInt() - lastX
            val deltaY = event.rawY.toInt() - lastY
            lastX = event.rawX.toInt()
            lastY = event.rawY.toInt()
            if (abs(totalDeltaX) >= 5 || abs(totalDeltaY) >= 5) {
                if (event.pointerCount == 1) {
                    layoutParams.x += deltaX
                    layoutParams.y += deltaY
                    touchConsumedByMove = true
                    windowManager?.apply {
                        updateViewLayout(floatView, layoutParams)
                    }
                } else {
                    touchConsumedByMove = false
                }
            } else {
                touchConsumedByMove = false
            }
        }
        else -> {
        }
    }
    touchConsumedByMove
}

init {
    with(floatView) {
        closeImageButton.setOnClickListener { dismiss() }

    }

    floatView.setOnTouchListener(onTouchListener)


    layoutParams = WindowManager.LayoutParams().apply {
        format = PixelFormat.TRANSLUCENT
        flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
        @Suppress("DEPRECATION")
        type = when {
            Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ->
                WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
            else -> WindowManager.LayoutParams.TYPE_TOAST
        }

        gravity = Gravity.CENTER
        width = WindowManager.LayoutParams.WRAP_CONTENT
        height = WindowManager.LayoutParams.WRAP_CONTENT
    }
}