Android code implements simulated clicks

Without further ado, just enter the code and modify the click range yourself.

private fun preFromClick() {
        mBinding.root.postDelayed({
            val sw: Int = this.requireActivity().resources.displayMetrics.widthPixels
            val sh: Int = this.requireActivity().resources.displayMetrics.heightPixels
            val x = (sw.toDouble() - sw.toDouble() * 0.5).toInt()
            val y = (sh.toDouble() - sh.toDouble() * 0.5).toInt()
            preFromClick(this.requireActivity(), x, y)
        },150)
    }

    private fun preFromClick(activity: Activity?, x: Int, y: Int) {
        if (activity != null) {
            val evenDown = MotionEvent.obtain(
                System.currentTimeMillis(),
                System.currentTimeMillis() + 100L,
                0,
                x.toFloat(),
                y.toFloat(),
                0
            )
            val eventUp = MotionEvent.obtain(
                System.currentTimeMillis(),
                System.currentTimeMillis() + 100L,
                1,
                x.toFloat(),
                y.toFloat(),
                0
            )
            evenDown.recycle()
            eventUp.recycle()
            activity.dispatchTouchEvent(evenDown)
            activity.dispatchTouchEvent(eventUp)
        }
    }

puivate fun dp2px(Context context, int dp) : Int {
        val metrics = requireActivity().resources.displayMetrics
        return (int)((float)dp * ((float)metrics.densityDpi / 160.0F));
    }

Guess you like

Origin blog.csdn.net/Steve_XiaoHai/article/details/135284144