я использую getLocationOnScreen () и возвращаю неверное значение - PullRequest
0 голосов
/ 28 апреля 2020
view = LayoutInflater.from(this).inflate(R.layout.widget2, null)

val overlayParam =
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
            } else {
                WindowManager.LayoutParams.TYPE_PHONE
            }
    params = WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            overlayParam,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT)

manager = getSystemService(Context.WINDOW_SERVICE) as WindowManager

manager.addView(view, params)

view.getLocationOnScreen(location)

//location sometimes return incorrect location. 

Я подсчитал, что пропало 35 процентов. например, правильное местоположение x: 100 - y: 100, верните x: 65 - y: 65. когда я перезапущу местоположение телефона, верните правильное и неисправное снова через некоторое время. Я искал несколько дней, но не мог найти почему. также эта проблема не возникает на каждом телефоне. Я пробовал 6 телефонов, и я получил эту ошибку на 2 телефонах

view.getLocationInWindow(location)//always return x:0 - y:0 and i need screen location

Примечание: выглядят одинаково, приложения не нуждаются в Settings.ACTION_MANAGE_OVERLAY_PERMISSION, и они отлично работают. но я не знаю, как они это сделали. Я пробовал разные способы здесь WindowManager.LayoutParams , но я не получил никаких результатов.

...